-
TCP 3-way HandShake & 4-way HandShakeCS이론/네트워크 2022. 12. 19. 20:05
TCP란?
TCP는 Transport Layer에서 사용되는 프로토콜이다.
TCP는 신뢰성이 높고 연결 지향성 서비스를 제공한다. 그러므로 정보 전달에 있어 안정적으로, 순서대로, 에러 없이 교환할 수 있도록 하는 것에 목적을 둔 프로토콜이다.
이러한 특징으로 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 handshake를 사용한다. 3-Way Handshake 는 TCP의 접속, 4-Way Handshake는 TCP의 접속 해제 과정이다.
3-Way Handshake 란?
3-Way Handshake는 데이터를 전송하기 전에 정확한 전송을 보장하기 위해 사전에 세션을 수립하는 과정이다.
양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한쪽에서 다른 쪽이 준비되었다는 것을 알 수 있다.
플래그 정보
Handshaking 과정에서 세그먼트에 설정되는 Flag 포트 상태 정보
3-Way Handshaking 과정에서 포트 상태 3-Way Handshake 동작 과정
3-Way Handshaking 동작 과정 1. Client → Server (SYN)
- 서버에 접속을 요청하는 SYN 패킷을 전송한다.
- 송신자가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 새그먼트를 전송한다.
- Client는 SYN을 보낸 후 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
2. Server → Client (SYN/ACK)
- LISTEN 상태인 Server가 SYN을 받고, 클라이언트에게 요청을 수락(ACK)했으며 접속 요청 프로세스인 클라이언트도 포트를 열어달라(SYN)는 메시지를 전송한다.
- ACK Number필드를 Sequence Number + 1로 지정하고 SYN과 ACK 플래그 비트를 1로 설정한 새그먼트 전송
- SYN을 받은 서버는 SYN_RECEIVED 상태가 된다.
3. Client → Server (ACK)
- 클라이언트는 서버의 응답을 받았다는 의미로, ACK Number필드를 Sequence Number + 1로 지정하고 서버로 ACK 플래그가 설정된 새그먼트를 전송한다.
- ACK 요청을 보낸 클라이언트는 ESTABLISHED 상태가 된다.
- ACK를 받은 서버는 ESTABLISHED 상태가 된다.
4-Way Handshake 란?
3-Way Handshake가 세션을 수립하는 과정이었다면 4-Way Handshake는 세션을 종료하기 위해 수행되는 과정이며, 여기서 FIN 플래그를 사용한다.
포트 상태 정보
4-Way Handshaking 과정에서 포트 상태 4-Way Handshake 동작 과정
4-Way Handshaking 동작 과정 1. Client → Server (FIN)
- close()가 호출되면 연결을 종료한다는 FIN 패킷을 보낸다.
- FIN 패킷에는 ACK로 포함되어있다.
- FIN 패킷을 보낸 후 FIN_WAIT_1 상태가 된다.
2. Server → Client (ACK)
- FIN 패킷을 받은 서버는 응답 패킷 ACK를 보낸다.
- 응답 패킷 ACK를 보낸 후 CLOSE_WAIT 상태가 된다.
- 아직 남은 데이터가 있다면 마저 전송을 마친 후에 close( )를 호출한다.
- 클라이언트는 ACK 패킷을 받은 후 FIN_WAIT_2 상태가 된다.
3. Server → Client (FIN)
- 데이터를 모두 보냈다면, 서버는 FIN 패킷을 클라이언트에게 보낸 후에, 승인 번호를 보내줄 때까지 기다리는 LAST_ACK 상태로 들어간다.
4. Client → Server (ACK)
- 클라이언트는 FIN 패킷을 받고, 확인했다는 ACK 응답을 보낸다.
- ACK 응답을 보낸 후 클라이언트는 TIME_WAIT 상태가 된다.
- TIME_WAIT 상태는 의도치 않은 에러로 인해 연결이 데드락으로 빠지는 것을 방지한다.
- 만약 에러로 인해 종료가 지연되다가 타임이 초과되면 CLOSED 상태로 들어간다.
- 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
- TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed) - 기본 240초
참고
[ 네트워크 쉽게 이해하기 22편 ] TCP 3 Way-Handshake & 4 Way-Handshake
우선 TCP의 3-way Handshaking 에 대하여 알아보겠습니다. * TCP 3-way Handshake 란? TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake를 사용한다. TCP 3 Way Handshake는 TCP/IP프로토
mindnet.tistory.com
네트워크 스터디 3주차 - TCP 3-way handshake 이후
TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다. UDP와 동일하게 전송 계층에 위치하고 있다.3-way handshake 과정을 통해 연결을 설정하고, 4-way handshake 과정을 통해 해제한다.
velog.io
[네트워크] TCP/UDP와 3 -Way Handshake & 4 -Way Handshake
TCP / UDP / 3-Way Handshake / 4-Way Handshake
velog.io
[TCP] 4-way Handshake란? / 와이어샤크, tcpdump 확인
4-way Handshake란? TCP/IP 네트워크 환경에서 서버와 클라이언트를 연결을 해제(세션 종료)하는데 필요한 프로세스입니다. TCP FLAG FLAG 설명 SYN(연결 요청 플래그) - TCP에서 세션을 성립할 때 가장먼저
sh-safer.tistory.com