Welcome

首页 / 软件开发 / C++ / TCP/IP学习笔记补遗

TCP/IP学习笔记补遗2010-04-03肖进经过我对网络上IP数据包的跟踪,对我写的《TCP/IP学习笔记》进行补充。通过本文,可以加深对TCP/IP的认识。

●网络环境:ADSL宽带

●IP数据包内容:通过Outlook发送邮件,帐号是xiaojin8039@163.com,给我的其他邮箱xiaoj@njb.swirebev.com发送邮件,系统从而捕获的IP包。

●所有IP包均为TCP协议

1、关于IP包的分片情况:

所有的IP包均不分片,也就是IP包传输过程从不进行分片,均保持原始IP包的大小。这可能跟网络环境较好有关。

2、关于IP首部和TCP首部的大小:

IP首部的大小均为20,未见到包括选项的情况。但TCP首部有时会包括选项,大小为24到44不等,建立连接时的协商都带有选项数据,一般为28。

3、关于TCP连接的步骤:

(1)客户端发送建立报文的TCP报文给服务器端;

(2)服务器端发送同意建立TCP连接的报文给客户端;

(3)客户端再次进行确认;

(4)服务器端发送服务器信息;

(5)客户端发送数据,服务器端发送数据;

(6)客户端发送结束连接的命令;

(7)服务器端发送结束连接的TCP报文给客户端;

(8)客户端发送同意结束连接的TCP报文给服务器端;

4、TCP连接的具体过程,包括P包的唯一标识符ID、TCP报文连接的sequence和ACK数据,这是一个完整的TCP连接建立和结束的过程:

序号数据大小客户端服务器端
IPIDsequenceACKIPIDsequenceACK
1027320986600280   
20   5470739046711242098660029
3027420986600293904671125   
456   5470839046711252098660029
51427520986600293904671181   
60   5470939046711812098660043
7113   5471039046711812098660043
81227620986600433904671294   
918   5471139046712942098660055
101827720986600553904671312   
1118   5471239046713122098660073
121027820986600733904671330   
1331   5471339046713302098660083
14027920986600833904671361   
153428020986600833904671361   
168   5471439046713612098660117
173528120986601173904671369   
188   5471539046713692098660152
19628220986601523904671377   
2037   5471639046713772098660158
21141428320986601583904671414   
220   5471739046714142098661572
2399328420986615723904671414   
240   5471839046714142098662570
25528520986625653904671414   
2638   5471939046714142098662570
27628620986625703904671452   
289   5472039046714522098662576
290   5472139046714525098662576
30028720986625763904671462   
31028820986625763904671462   

(1)数据大小不包括IP首部和TCP首部的大小。

(2)除开始协商建立连接外,每一个sequence均等于上一sequence值加数据大小。开始协商的SYN标记要占用一个字节。

(3)1和2行数据设置了SYN标志。

(4)30和31行数据设置了FIN标志。

(5)每个数据都包括发送方数据的起始字节sequence和期待对方发送数据位置的Ack值。