2010-07-02 3 views
1

"Unix Network Programming"을 읽고 tcpdump로 패킷을 생성합니다. 이 예제는 단지 문자열 "liha"를 포함하는 패킷을 전송하는 것입니다.TCP 패킷의 중복 데이터는 무엇입니까?

TCP/IP RFC를 읽고 정상적인 IP 헤더가 20B임을 알았습니다. 데이터를 제외한 일반 TCP 헤더는 24B입니다.

따라서 캡처 된 패킷에 "liha"문자열 앞에 8B가 있습니다. "0121 3d2a 0120 b43e"는 쓸모가 있습니까?

11:00:51.690949 IP localhost.40163 > localhost.9877: Flags [P.], seq 94:99, ack 95, win 513, options [nop,nop,TS val 18955562 ecr 18920510], length 5 
     0x0000: 4500 0039 ddc6 4000 4006 5ef6 7f00 0001 [email protected]@.^..... 
     0x0010: 7f00 0001 9ce3 2695 8465 e35c 8466 58ca ......&..e.\.fX. 
     0x0020: 8018 0201 fe2d 0000 0101 080a 0121 3d2a .....-.......!=* 
     0x0030: 0120 b43e 6c69 6861 0a     ...>liha. 

답변

2

이들은 TCP options입니다. 그리고 당신의 분석기는 이미 당신을 위해 그들을 분석 :

options [nop,nop,TS val 18955562 ecr 18920510], 

그들은 일반적으로 중요하고 TCP 연결에 사용할 수있는 추가하는 향상된 협상하는 통신 측에 의해 사용됩니다.

+0

Dummy00001, 감사합니다.하지만 RFC793 http://www.faqs.org/rfcs/rfc793.html, 그림 3에서 옵션은 21B ~ 23B가 아닌 25B ~ 28B입니다. 어떠한 제안? – David

+0

옵션에 동적 크기가 있습니다 (정확하게 정의 된 방법을 모르겠습니다). 그래서 TCP 헤더에는 데이터 오프셋 필드가 있습니다. 처음 20 바이트는 고정되어 있으며 데이터 오프셋까지 나머지는 옵션입니다. – Dummy00001

+0

옵션 구문 분석의 예 : http://lxr.linux.no/#linux+v2.6.33/net/ipv4/tcp_input.c#L3729 – Dummy00001