3-way-handshake

HTTP) TCP 및 3-way handshake

2023. 5. 9. 14:30

TCP

image-20230506202513313image-20230506202629882

위와같은 방식으로 Hello, world 메세지에 TCP, IP, 이더넷 프레임을 씌운 상태에서 랜카드를 통해 서버로 전송이 된다.

TCP segment 안에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 들어가 IP 프로토콜의 한계를 극복할수 있게 해준다.

 

 

TCP의 특징

  1. 연결 지향 - TCP 3 way handshake
    • SYN(접속 요청), ACK(요청 수락) 를 통해 서버와 클라이언트가 서로 연결이 되어있는지를 확인한다.
  2. 데이터 전달 보증
    • 서버가 클라이언트가 전송한 모든 패킷을 받았는지 확인할수 있게 해준다.
  3. 순서 보장
  4. 신뢰할수 있는 프로토콜

따라서 현재는 거의 TCP를 사용한다.

 

 

TCP 연결 및 연결 해제

TCP는 Client와 Server간 연결을할때 3-way HandShake연결을 해제할때 4-way Handshake과정을 진행한다.

위 과정에서 SYN, ACK를 사용하며 SYN과 ACK는 아래와 같다.

SYN (연결 요청 플래그): TCP에서 세션을 성립할떄 가장 먼저 보내는 패킷이며, 세션을 연결하는데 사용된다.

ACK(응답): 상대방으로부터 패킷을 잘받았다고 알려주는 응답이다.

TCP 연결 과정(3-way Handshake)

3wayhandshake

TCP는 연결을 할때 3-way Handshake를 통해 진행한다.

  1. A클라이언트는 B서버에 접속을 하기위해 SYN 패킷을 보낸다. 이때 Client는 SYN+ACK응답을 기다리는 SYN_SENT상태가 된다
  2. B서버는 SYN요청을 받은후 A클라이언트에게 연결을 허용한다는 SYN+ACK 패킷을 보낸후 Client가 ACK응답을 보내기를 기다리는상태 SYN_RECEIVED 상태가 된다.
  3. A클라이언트는 SYN+ACK응답을 받고 ACK응답을 Server에게 보내면서 연결이 이루어진다.

TCP 연결 해제 과정(4-way Handshake)

4wayhandshake

TCP는 세션을 종료할때 즉 연결을 해제할때 4-way Handshake 를 진행한다.

  1. 클라이언트가 연결을 종료하겠다는 FIN플래그를 Server에게 전송한다.
  2. FIN플래그를 받은 Server는 ACK를 Client에게 보내 해당 포트에 연결되어있는 애플리케이션에게 close를 요청한다.
  3. 그후 서버또한 종료 프로세스를 진행하며 Client에게 FIN을 보낸다.
  4. FIN을 받은 Client는 ACK를 Server에게 보내며 상태를 TIME-WAIT로 바꾼다.
    • 이때 TIME-WAIT에서 일정시간이 지나면 Client는 closed되고 클라이언트로부터 ACK받은 서보또한 포트를 CLOSED로 닫는다.
    • TIME-WAIT: 연결을 먼저 끊는쪽에서 생성되는 소켓이다. 혹시모를 전송실패를 대비하여 존재하는 소켓이며 TIME-WAIT가 없다면 패킷의 손실이 발생되거나 연결해제가 잘 되지 않을수 있다. (FIN이후에 네트워크의 지연으로 인해 데이터가 도착할수 있기때문에 TIME-WAIT를 통해 잉여 패킷을 기다리는 과정을 거치는 것이다.)

 

🙏Reference

'네트워크' 카테고리의 다른 글

RDT(Reliable Data Transfer)  (1) 2023.11.21
Multiplexing, deMultiplexing  (0) 2023.10.25
소켓  (0) 2023.10.23
DNS  (0) 2023.10.19
HTTP1/HTTP2/HTTP3  (0) 2023.10.19

+ Recent posts