TCP/IP 송수신 원리

Sequence Number : 패킷들이 순서대로 오는 것이 보장되지 않기 때문에 도착지에서 조립을 할 때 사용된다.

Acknowledgement Number : receiver가 성공적으로 받은 이후, 다음으로 받기 기대하는 패킷번호를 적어서 보낸다.

HLEN ( Header Length)

: Tcp header의 길이를 나타냄

Control flags

  • URG : Urgent pointer is valid

  • ACK: Acknowledgement number is valid( used in case of cumulative acknowledgement)

  • PSH: Request for push

  • RST: Reset the connection

  • SYN: Synchronize sequence numbers

  • FIN: Terminate the connection

Checksum : 오류 검증에 이용된다. UDP와 다르게 TCP에서는 필요하다.

3-way-handshake ( 연결 맺기 )

  1. 클라이언트가 서버에게 SYN 패킷을 보낸다. (sequence : x)

  2. 서버가 SYN(x)를 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄 (sequence : y, ACK : x+1)

  3. 클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버에 보냄

이렇게 3번의 통신이 완료되면 연결이 성립됨.

4 way handshake ( 연결 해제 )

연결 성립 후 , 모든 통신이 끝나면 해제해야함.

  • FIN

    • 송신자가 연결 종료를 요청하며 FIN 패킷을 보냄

  • ACK

    • 수신자가 FIN 패킷을 받고 이를 확인했다는 ACK 패킷을 송신자에게 보냄

  • FIN (Receiver's termination Request)

    • 수신자도 연결 종료를 요청하며 FIN 패킷을 송신자에게 보냄

  • ACK (Acknowledgemnt for Receiver's FIN)

    • 송신자가 수신자의 FIN 패킷을 받고 , 종료를 확인하는 ACK 패킷을 수신자에게 보냄

4번의 과정인 이유는 서버는 아직 본인의 일이 끝나지 않을 수 있기에 , 송신자로부터 FIN 패킷을 받은 후 , 자신이 처리하고 있는 작업을 다 끝내고 FIN을 보내기 때문에 4단계가 필요하다.

Last updated