오늘 한일
- TCP 3-way hanshake
TCP 프로토콜로 통신하기 위해 데이터 전송 전 상호 연결을 수립하는 과정이다.
상대방과 논리적 세션을 맺는 시작점으로 해당 과정을 거친 후에 데이터들을 정상적으로 송수신하는 절차를 가진다.
- 클라이언트는 서버에 접속을 요청하는 SYN(M) 패킷을 보낸다.
- 서버는 클라이언트의 요청 패킷을 받고 요청을 수락한다는 ACK(M+1)과 SYN(N)이 설정된 패킷을 발송한다.
- 클라이언트는 서버의 수학 응답 패킷을 받고 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 |