-
TCP Handshake에 대해서카테고리 없음 2024. 5. 25. 16:22
저번 블로그에서 TCP와 HTTP에 대해 알아보다가 나온 HandShake에 대해 자세히 알아보겠다.
TCP란
TCP는 신뢰성이 높고 연결 지향성 서비스를 제공한다. 정보 전달에 있어 순서대로, 에러 없이 교환할 수 있도록 하는 것에
목적을 둔 프로토콜이다.
이러한 이유 때문에 장치들 사이에서는 접속을 성립하기 위해 handshake를 사용하는데 3-Way Handshake와 4-Handshake가 있다.
전자는 TCP의 접속, 후자는 TCP의 접속 해제 과정이다.
3-Way Handshake 란?
데이터를 전송하기 전에 정확한 전송을 보장하기 위해 사전에 세션을 수립하는 과정이다. 양쪽 모두 데이터를 전송할 준비가 되었다는
준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한쪽에서 다른 쪽이 준비되었다는 것을 알 수 있다.
한마디로 데이터 전송전 클라이언트와 서버가 모두 전송할 준비가 되었는지 확인하는 과정이라고 생각하면 된다.
일단 handshake 동작과정을 알아보기 전에 플래그 정보와 포트 상태 정보를 알고 가자.
플래그 정보
3-Way Handshake 포트 상태 정보
3-Way Handshake 동작 과정
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 Numvber필드를 Sequence Number + 1로 지정하고 서버로
ACK 플래그가 설정된 새그먼트를 전송한다. - ACK 요청을 보낸 클라이언트는 ESTABLISHED 상태가 된다.
- ACK를 받은 서버도 ESTABLISHIED 상태가 된다.
4-Way Handshake 란?
3-Way Handshake가 세션을 수립하는 과정이었다면 4-Way Handshake는 세션을 종료하기 위해 수행되는 과정이며,
여기서 FIN 플래그를 사용한다.4-Way Handshake 포트 상태 정보
4-Way Handshake 동작 과정
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 상태가 된다.
- 서버는 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
TCP 3-way HandShake & 4-way HandShake
TCP란? TCP는 Transport Layer에서 사용되는 프로토콜이다. TCP는 신뢰성이 높고 연결 지향성 서비스를 제공한다. 그러므로 정보 전달에 있어 안정적으로, 순서대로, 에러 없이 교환할 수 있도록 하는
ghs4593.tistory.com