[CS 정리] 3-way-handshake & 4-way-handshake

June·2021년 5월 27일
0

[CS] CS 지식 정리

목록 보기
8/27

출처 블로그

TCP 3-way-handshake

연결 성립 (Connection Establishment)

연결 해제(Connection Termination)

What is the SYN Packet? ACK packet?

SYN :: synchronize sequence number
ACK :: Acknowledgement

TCP Header에는 Code Bit(Flag Bit)라는 부분이 존재한다. 이 부분은 총 6 Bit으로 이루어져 있으며 각각 비트들이 의미를 갖고 잇다. Urg-Ack-Psh-Rst-Syn-Fin 순서로 이루어져 있다. SYN 패킷일 경우에는 000010이 된다.

Why two types of packets?

요청응답에 대한 패킷을 주고 받아야 하기 때문에 두 종류이다.

Why 3-way? not 2?

일단 클라이언트가 자신의 목소리가 들리는지 물어본다 (YN). 서버는 클라이언트의 목소리가 들린다고 말한다 (SYN + 1). 그리고 자신의 목소리가 들리는지 물어본다 (ACK). 클라이언트는 서버의 목소리가 들린다고 말한다 (ACK + 1). TCP connection은 양방향성이다. 클라이언트에서 서버에게 패킷을 보내듯, 서버에서도 클라이언트에게 패킷을 보낼 수 있어야하기 때문에 3-way다.

Why randomized sequence number?

처음 클라이언트에서 SYN 패킷을 보낼 때 Sequence Number에는 랜덤한 숫자가 담겨진다. 초기 sequence number를 ISN이러고 한다. ISN은 0이 아닌 난수를 이용하는데, port는 시간이 지남에 따라 재사용된다. 따라서 두 통신 호스트가 과거에 사용된 포트 번호 쌍을 사용하는 가능성이 존재한다. 서버 측에서는 패킷의 SYN을 보고 구분하는데, 난수가 아닌 순차적인 number를 전송하면 이전의 connection과 헷갈릴 수 있다.

https://velog.io/@haero_kim/TCP

0개의 댓글