공부합시다!/Network

Packet Analysis - 4. 3Way_4Way Handshake & UDP

간서치 2022. 3. 17. 15:44
728x90

TCP Header를 분석하기 전에 TCP 연결과 종료시의 동작 구조인

3Way_4Way Handshake를 간단히 살펴 본 후 

비교적 간단한 UDP 구조를 분석해 보겠습니다.

 

 

1. 3Way-Handshake

 1.1. TCP 연결 시

3Way_Handshake

 

1.2. 양쪽 모두 데이터 전송 준비 완료 보장

 1.3. 실제 데이터 전달 시작 전 다른 쪽이 준비가 되었다는 것을 확인

 1.4. TCP/IP를 이용해서 통신 시 상대방 컴퓨터와 사전 세션 수립 과정

 1.5. Client -> Server

  1.5.1. SYN

   1.5.1.1. Client가 Server에 연결 요청 메세지 전송

   1.5.1.2. 최초 데이터 전송 시 Sequence Number를 임의의 랜덤한 숫자 지정

   1.5.1.3. SYN Flag Bit를 1로 설정한 Segment 전송

   1.5.1.4. Port 상태 : Client(Listen), Server(Closed)

 1.6. Server -> Client

  1.6.1. SYN + ACK

   1.6.1.1. 접속 요청을 받은 Server가 Client의 요청 수락

   1.6.1.2. 접속을 요청한 Client도 Port를 열어달라는 메시지 전송(SYN+ACK)

   1.6.1.3. Server는 Acknowledgement Number Field (Seqeunce Number + 1) 지정

   1.6.1.4. SYN과 ACK Flag Bit를 1로 설정한 Segment 전송

   1.6.1.5. Port 상태 : Server(SYN_RCV), Client(Closed)

 1.7. Client -> Server

  1.7.1. ACK

   1.7.1.0. Port 상태 : Server(SYN_RCV), Client(Established)

   1.7.1.1. 접속 요청을 Client가 수락 확인 전송

   1.7.1.2. 전송할 데이터가 있으면 이 단계에서 데이터 전송

   1.7.1.3.  Port 상태 : Server(Established), Client(Established)

 

2. 4Way_Handshake

 2.1. TCP 연결 종료 시

4Way_Handshake

  2.1.1. Cllient -> Server

   2.1.1.1. Client가 연결 종료를 알리는 FIN Flag 전송

   2.1.1.2. Port 상태 : FIN-Wait

  2.1.2. Server -> Client

   2.1.2.1. Server FIN Flag 수신

   2.1.2.2. Ack Flag 전송

   2.1.2.3. Port 상태 : Close_Wait

  2.1.3. Server -> Client

   2.1.3.1. 연결 해지를 위한 준비가 되었음을 알리는 FIN Flag 전송

   2.1.3.2. Port 상태 : Last_Ack

  2.1.4. Client -> Server

   2.1.4.1. Client는 해지 준비가 되었다는 Ack를 확인했다는 메세지 전송

   2.1.4.2. Port 상태 : FIN_Wait -> TIME_Wait로 변경

 

3. UDP Header

 3.1. UDP Header 구조

UDP Header

 3.2. UDP Header 구조 분석

  3.2.1. Source Port

   3.2.1.1. 송신자 App Port 번호

  3.2.2. Destination Port

   3.2.2.1. 수신할 App Port 번호

  3.2.3. Length

   3.2.3.1. UDP Header와 Data의 전체 길이를 Byte로 표시

  3.2.4. Checksum 

   3.2.4.1. Data가 원본과 동일한지 여부 확인

   3.2.4.2. 만일 Chechsum값이 Incorrect일 경우 송신자에게 패킷을 재전송 요구

   3.2.4.3. 옵션이지만 RFC1122에서는 사용할 것을 권장

   3.2.4.4. 현재는 Host에 의해서 기본적으로 동작

   3.2.4.5. Check 값이 Validation : Wireshark의 Preformance로 인하여 Checksum값이 Disable됨

   3.2.4.6. MTU를 초과하는 UDP Packet은 단편화 되며 Sequence Number가 없기에 재조립은 IP Header의 ID Field

 

드디어 공포의 TCP Header가 우리를 기다리네요!

 

Have a nice day!

728x90