SYN 패킷 처리에 대한 이해

ohbin Kwon·2021년 9월 11일
0

서버는 클라이언트의 SYN패킷을 SYN Queue에 저장한다. 또한 ACK 패킷 응답을 Accept Queue에 저장한다. SYN Queue, ACK 패킷을 Bakclog Queue 라고 한다.

  1. 최초의 서버는 SYN 패킷을 SYN Queue에 저장하고 SYN+ACK를 보내주었다.
[root@localhost /]# sysctl
net.ipv4.tcp_syynack_retriesnet.ipv4.tcp_synack_retries = 5

(기본1 + 5번의 재 송신 후 응답이 없으면, 타임아웃, 값을 줄이면 수용가능 동시처리 세션 수 가 증가)

  1. SYN 쿠키

기존 서버는 큐가 가득차면 새로운 세션을 받아들일 수 없음
SYN 쿠키 : 꽉 차있는 큐에서 SYN 패킷을 큐에 저장하지 않고 바로 클라이언트에 전송, 이 후에 클라이언트로 받은 ACK 시퀀스 넘버를 확인했을때, +1이 되어있으면 Accept 큐로 전송

  1. Accept Queue

만약 어플리케이션의 Accept Queue가 데이터를 빨리 처리못하면 클라이언트로부터 ACK 패킷을 받아도 Accept Queue에 저장이 될 수 없다.
이 경우 신규로 들어오는 SYN ,ACK 패킷은 폐기되고, TCP 규약에 따라 클라이언트는 세션을 재요청함(그 사이에 어플리케이션 복구되면 수신 복구)

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=noorol&logNo=221188027204

profile
개발 로그

0개의 댓글

관련 채용 정보