2016.02.13 16:50

tcp 기초

기초 복습

TCP/IP 추적 읽기에 대한 기본 사항

https://support.microsoft.com/ko-kr/kb/169292

TCP 플래그

A, ACK-(Acknowledge): 받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냅니다. 

SYN 및 FIN 플래그는 1바이트로 계산됩니다. 또한 ACK는 받는 사람이 받을 예정인 다음 옥텟의 시퀀스 번호로 생각될 수도 있습니다. 

S, SYN-: 동기화(Synchronize)는 세션 설정 동안 사용되어 초기 시퀀스 번호에 일치시킵니다. 시퀀스 번호는 임의로 생성됩니다. 

F, FIN-: 완료(Finish)는 세션을 닫는 동안 사용되어 보낸 사람이 더 이상 보낼 데이터가 없음을 보여줍니다. 

R, RST-: 재설정(Reset)은 양방향에서 동시에 일어나는 중단 작업입니다(비정상적인 세션 연결 끊기). 

P, PSH-: 밀어넣기(Push)는 버퍼가 채워지는 것을 기다리지 않고 데이터를 강제로 배달합니다. 이것은 대화형 트래픽에 사용됩니다. 데이터는 버퍼링 없이 받는 쪽의 응용 프로그램에도 배달됩니다. 

U, URG- Urgent-: 데이터를 밴드 범위 밖에서 보냅니다. 

세 방향 핸드셰이크의 예
--------------------------------------------------------------
시간      대상 IP          원본 IP        프로토콜     설명
20.862   157.57.24.193   157.57.11.169   TCP       ....S., len: 4, 
seq:346564214, ack:         0, win: 8192,

20.866   157.57.11.169   157.57.24.193   TCP       .A..S., len: 4, 
seq:339000739, ack: 346564215, win: 8760,

20.866   157.57.24.193   157.57.11.169   TCP       .A...., len: 0, 
seq:346564215, ack: 339000740, win: 8760,


두 단계 닫기 작업(Graceful)의 예(수정된 세 방향 핸드셰이크)
시간     대상 IP          원본 IP        프로토콜     설명
39.295  157.57.11.169   157.57.24.193   TCP       .A...F, len:  0, 
seq:339000917, ack: 346564257, win: 8718,

39.295  157.57.24.193   157.57.11.169   TCP       .A...., len:  0, 
seq:346564257, ack: 339000918, win: 8583,

39.298  157.57.24.193   157.57.11.169   TCP       .A...F, len:  0, 
seq:346564257, ack: 339000918, win: 8583,

39.300  157.57.11.169   157.57.24.193   TCP       .A...., len:  0, 
seq:339000918, ack: 346564258, win: 8718,

ACK가 SYN+1인 경우는 SYN, FIN일 경우이고,

LEN값이 있을 경우는 SYN+LEN값이 되어야 한다.


.67이 서버이고, .1이 클라이언트이다.

3-way handshaking 과정이다.


클라이언트가 gif 이미지를 요청했다. Seq=1, Ack=1, Len=357

응답은 Seq=1(요청 Ack값), Ack=358(요청 Seq+Len값)로 갔다.


그 다음도 동일한다..

요청시 Seq=1, Ack=358, Len=507이다.

응답은 Seq=358, Ack=508(1+507)이다.


다음은 종료시 Fin+Ack을 통한 종료 과정이다.

                              SEQ       ACK

C -> S [Fin, Ack]          508        358(위 패킷의 Seq+Len)

S -> C [Ack]               358         509(508+1)

S -> C [Fin, Ack]          358         509

C -> S [Ack]               509         359(358+1)


데이터 추출부분은 Hex Stream으로 복사한 후 Winhex와 같은 프로그램을 이용해 붙어넣기하면 된다.


저작자 표시
신고
트랙백이 없고 댓글이 없습니다.


티스토리 툴바