[INTERFACE]/Ethernet2007. 7. 16. 11:10

TCP Server 모드에서 패킷 분석

2007-07-16 16:20:38
TCP Server 모드에서 패킷 분석
 
SYN 초기 동기 메시지
ACK 수신확인
FIN 종료 메시지
Reset 강제 종료
 
Server(92), PC : Client(91)로 91이 92에 접속하여 데이터 송수신하고 종료하는 상황의 패킷 분석
사용자 삽입 이미지
 
 
접속
5)Client(91)가 Connect()로 접속하여 랜덤하게 생성된 시퀀스 넘버 0으로  [SYN] 패킷 보냄. 포트는 4129->5000

6)Server(92)가 Listen()상태에서 램덤하게 생성한 시퀀스넘버 0으로 [SYN] 패킷에 [ACK]번호 1로 설정하여[SYN, ACK] 패킷 보내서 Listen. 이때의 ack번호는 대부분 Client(91)에게서 받은 syn+1의 값을 가진다.

7)Client(91)가 Listen에  서버에서 받은 시퀀스 넘버를 사용하여 ack 넘버(syn+1)을 호스트 B에게 보낸다.

 
데이터 송수신
12)Client(91)가 데이터 전송
13)Server(92)가 [ACK]
ACK는 수신확인 메시지이고 전송받은 데이터량에 대한 수신확인 번호값을 전송해야 된다. 예를 들어 101Byte를 받았다면 ACK=101이 된다.
사용자 삽입 이미지



출발지 목적지 포트 번호: 호스트에 있는 응용 프로그램 포트번호
순서번호: 전달되는 각 바이트에 대한 시퀀스 넘버로 1씩증가
확인번호: 수신측에서 수신하고자하는 바이트의 번호
헤더길이: TCP헤더길이
예약: 아직 사용하지 않는 필드로 값은 0
플래그: URG,ACK,PSH,RST,SYN,FIN

접속종료
22)Client(91)가 disconnect()로 [FIN, ACK] 보냄
23)Server(92)가 FIN에 대한 [ACK] 보냄
24)Server(92)가 [FIN, ACK] 보냄
25)Client(91)가 [ACK] 보냄



* 참고 RST
한쪽의 호스트에서 자신이 가지지 않은 포트의 연결 요청을 받은 경우 연결 최소를 의미하는 RST 세그먼트를 전
송한다.
한쪽 호스트에서 시스템의 이상으로 연결을 종료하고 싶을 때 RST세그먼트를 보내 연결을 종료한다
한쪽 호스트에서 상대 호스트가 장시간 동안 어떤 동작도 하지 않을때 RST세그먼트를 보내 연결을 재설정한다.
Posted by nexp

댓글을 달아 주세요