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 ( 연결 맺기 )

클라이언트가 서버에게 SYN 패킷을 보낸다. (sequence : x)
서버가 SYN(x)를 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄 (sequence : y, ACK : x+1)
클라이언트는 서버의 응답은 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