반응형
3 way-handshake (TCP 접속)
1단계 SYNchronize : TCP 접속 요청
2단계 SYN, ACKnowledge : 응답 및 요청
3단계 ACK : 2단계 SYN에 대한 응답
4 way-handshake(TCP 연결 해제)
1단계 FIN : TCP 연결 해제 요청
2단계 ACK : 서버는 확인 메시지 보내고 통신이 끝날때 까지
3단계 FIN : 서버가 통신이 끝나면 연결이 종료되었다고 클라이언트에게 FIN 전송
4단계 ACK : 확인 메시지 전송
해제는 어느 쪽에서든 먼저 할 수 있습니다. client, server 상관 없이 동일합니다.
가장 중요히 알아야 할 것은 먼저 close한 쪽에 TIME_WAIT 상태가 오래 지속 된다는 것입니다.
- close를 먼저 요청한 쪽에 최종적으로 TIME_WAIT 상태가 남고 오랜동안 유지됩니다.
시스템에 따라 30초~2분(2 MSL, Maximum segment lifetime)정도 유지합니다.- 이렇게 하지 않으면 새로운 연결이 이전 연결의 지연 데이터를 받게 되기 때문입니다.
- 그림에서 ack N+1이 유실 된다면 fin N이 재전송 되는데 이를 받을 수 있게 하기 위함도 있습니다.
'게임 개발 > 게임 서버 프로그래밍' 카테고리의 다른 글
RPG 게임 이동 동기화 스트레스 테스트 봇 (0) | 2021.11.02 |
---|---|
Overlapped IO, IOCP (0) | 2020.07.13 |
C++ 프로그래머가 알아야할 C# 기능 요약 (0) | 2019.11.05 |
네비게이션 메쉬 + A* (Navigation Mesh + AStar) (1) | 2019.11.03 |