Network 7

tcp_tw_reuse와 SO_REUSEADDR의 차이

tcp_tw_reuse클라이언트에서 서버로 connect()하는 과정에서 커널은 내부적으로 가용 포트를 로컬 포트로 선정합니다. 이 때 tcp_tw_reuse 옵션이 활성화되어 있으면 TIME_WAIT 상태의 포트도 로컬포트로 선정될 수 있습니다. (일반적인 경우를 가정하여 bind()를 수행하지 않고 connect()하는 쪽을 클라이언트라고 지칭하였습니다.) SO_REUSEADDR서버에서 TIME_WAIT 상태의 특정 포트에 bind()하려면 소켓에 SO_REUSEADDR 옵션을 적용해야 합니다. bind()를 사용한 경우 해당 로컬 포트는 tcp_tw_reuse 설정이 적용되지 않습니다. // 소켓 생성sockSvr = socket(AF_INET, SOCK_STREAM, 0);addrSockSvr.s..

Network 2017.02.08

OAuth2.0

사전 작업인증을 제공하는 서버에 App을 등록해야 한다.- domain을 입력해야 한다. (redirect_uri를 검증할 때 domain 포함 여부를 확인한다.)- client id(app_id)가 생성된다.- client secret(app_secret)이 생성된다. (외부에 노출되면 안되는 키이다.) 인증 유형1. 서버에서 인증 (JSP, PHP, ...)웹서버는 app_secret키을 사용하여 인증서버로부터 인증을 받는다.웹서버가 들고있는 app_secret값은 외부에서 사용자가 알 수 없다. ① 유저 ID, PW를 아는 사람만 code 획득이 가능하다.② app_secret을 아는 서버만 access_token 획득이 가능하다. 2. 클라이언트에서 인증 (Javascript, Desktop ap..

Network 2017.01.19

HTTP Digest 인증과 토큰 기반 인증

HTTP Digest 인증 출처 : David Gourley and Brian Totty, "HTTP: The Definitive Guide (Definitive Guides)", O'Reilly, 2002 특징HTTP header 내에 유저네임과 비밀번호를 암호화하여 전달하는 방식nonce를 사용하기 때문에 인증 체결을 가로채서 재현하지 못함구현 방법에 따라 메시지 내용 위조 방지 가능 단점해쉬 알고리즘으로 MD5를 사용하기 때문에 보안레벨이 낮음MD5 Dictonary 사이트MD5 해쉬값 입력 : 939e7578ed9e3c518a452acee763bce9복호화된 해쉬값 : Mufasa:testrealm@host.com:Circle Of Life CSRF 공격에 취약계정별 API 실행 권한을 설정하여 ..

Network 2015.05.10

[TCP] window size full

TCP receive window size?수신자가 한 번에 버퍼링할 수 있는 최대 데이터 크기(bytes)를 의미합니다. 송신자는 수신자의 window size만큼 ACK를 기다리지 않고 데이터를 전송할 수 있습니다. Window Size Full? 수신자측에서 Read()를 수행하지 않아 수신자쪽 소켓 버퍼에 데이터가 쌓이게 되면 수신자의 window size는 점차적으로 감소하게 됩니다.수신자측의 버퍼가 가득차면 송신자에게 window size full을 알려서 데이터를 더 이상 전송하지 못하도록 합니다.즉, window size full은 아직 Read() 하지 않는 데이터가 수신자측 버퍼에 가득함을 의미합니다. 참조why would tcp full window happen TCP 세션 당 이론적..

Network 2015.03.18

[gsoap] 웹서버 오버헤드를 줄이기 위한 gsoap 버퍼링 구현

증상 HTTPS 사용 시 ONVIF 응답 지연 발생 원인 [gsoap] gsoap은 하나의 Response를 위해 여러 번의 send를 한다.soap_send_raw(soap, "", 1); ... [lighttpd] gsoap으로부터 recv한 패킷들을 각각 SSL_write → 오버헤드로 인한 전송 지연[963760976.648370]: ssl write begin [963760976.649320]: SSL_write [963760976.650925]: SSL_write [963760976.652421]: SSL_write [963760976.653860]: SSL_write [963760976.655395]: SSL_write [963760976.657133]: SSL_write ...... [96..

Network 2015.03.05