계발자 블로그
[네트워크] 3-way handshake, 4-way handshake 본문
3-way handshake
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정 하는 과정입니다.
TCP/IP 프로토콜을 이용하여 통신을 하는 응용 프로그램이 데이터를 전송하기 전에
먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미합니다.
3-way handshake 과정
- Client -> Server: SYN
- Client가 연결 요청 메시지 전송(SYN)한다.
- Client가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다.
- Server -> Client: SYN + ACK
- 접속 요청을 받은 Server가 요청을 수락했으며, Client도 포트를 열어달라는 메시지를 전송(SYN + ACK)한다.
- Server는 Acknowledgement Number 필드를 Sequence Number + 1로 지정하고, SYN과 ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
- Client -> Server: ACK
- 마지막으로 Client가 수락 확인(ACK)을 보내 연결을 맺는다.
- 이때, 전송할 데이터가 있으면 이 단계에서 데이터를 전송할 수 있다.
4-way handshake
TCP의 연결을 해제하는 과정
4-way handshake 과정
- Client -> Server: FIN
- Client가 연결을 종료하겠다는 FIN 플래그를 전송한다.
- Server가 FIN 플래그로 응답하기 전까지 연결을 계속 유지한다.
- Server -> Client: ACK
- Server는 일단 확인 메시지를 보내고 자신의 통신이 끝날 때까지 기다린다. 이 상태가 TIME_WAIT 상태다.
- Server는 Acknowledgement Number 필드를 Sequence Number + 1로 지정하고, ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
- 자신이 전송할 데이터가 남아있다면 이어서 계속 전송한다.
- Server -> Client: FIN
- Server가 통신이 끝났다면 연결 종료 요청에 합의한다는 의미로 Client에게 FIN 플래그를 전송한다.
- Client -> Server: ACK
- Client는 확인했다는 메시지(ACK)를 전송한다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] 쿠키와 세션 (0) | 2022.09.27 |
---|---|
[네트워크] HTTP와 HTTPS (0) | 2022.09.25 |
[네트워크] TCP, UDP (0) | 2022.09.22 |
[네트워크] OSI 7계층 (0) | 2022.09.21 |