본문 바로가기

TIL

TIL#49(레이턴시, TCP 3-way hanshake)

오늘 한일
  • TCP 3-way hanshake

TCP 프로토콜로 통신하기 위해 데이터 전송 전 상호 연결을 수립하는 과정이다.

상대방과 논리적 세션을 맺는 시작점으로 해당 과정을 거친 후에 데이터들을 정상적으로 송수신하는 절차를 가진다.

  1. 클라이언트는 서버에 접속을 요청하는 SYN(M) 패킷을 보낸다.
  2. 서버는 클라이언트의 요청 패킷을 받고 요청을 수락한다는 ACK(M+1)과 SYN(N)이 설정된 패킷을 발송한다.
  3. 클라이언트는 서버의 수학 응답 패킷을 받고 ACK(N+1)을 서버로 보낸다. (연결 성립)

ACK - Acknowledgment(승인)의 약자로 요청을 확인했다는 응답을 뜻한다.

SYN - Synchronize(동시에 발생하다) Sequence Number의 약자이다. 연결이 이루어지도록 요청한다는 뜻이다.

 

  • 레이턴시

네트워크에서 레이턴시란 하나의 데이터 패킷이 출발지에서 도착지까지 가는 데 걸리는 시간을 뜻한다. 일반적인 관점에서는 사용자가 요청을 시작한 시점부터 해당 사용자에게 요청에 대한 응답을 받기까지 걸리는 시간을 말한다.

 

모든 TCP 연결은 3-way handshake를 통해 맺어지는데 이 과정에서 패킷의 왕복으로 인해 레이턴시를 겪게된다. 3-way handshake로 인해 낭비되는 왕복 레이턴시는 결코 작지 않다. 그러므로 레이턴시를 최소화 하기 위해서는 매번 새로운 TCP connection을 맺는 것보다 기존 connection을 재사용하는 것이 매우 중요하다.  

어려웠던 점
  • TCP에서는 3-way handshake를 이용한다는 것을 배웠고 이로 인해 레이턴시가 발생하는 것을 알았지만 어떻게 활용해야하는지와 문제점을 해결하는 방법을 잘 모르겠다. (실제로 TCP 서버를 구현해보고 발생하는 문제에 대해 해결하는 고민을 해보면 좋을 것 같다.)
오늘의 TIP
  • 3-Way Handshake가 세션을 수립하는 과정이었다면 4-Way Handshake는 세션을 종료하기 위해 수행되는 과정이며, 여기서 FIN 플래그를 사용한다.

'TIL' 카테고리의 다른 글

TIL#51(서브넷 마스크와 IPv4 주소)  (0) 2024.07.01
TIL#50(로드 밸런싱)  (0) 2024.06.29
TIL#48(패킷 처리 및 데이터 전송)  (0) 2024.06.26
TIL#47(버퍼와 스트림)  (0) 2024.06.25
TIL#46(클라이언트 - 서버 모델)  (0) 2024.06.24