|
TCP/IP学习笔记补遗
作者:肖进
源代码下载
经过我对网络上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连接建立和结束的过程:
| 序号 |
数据大小 |
客户端 |
服务器端 |
| IPID |
sequence |
ACK |
IPID |
sequence |
ACK |
| 1 |
0 |
273 |
2098660028 |
0 |
|
|
|
| 2 |
0 |
|
|
|
54707 |
3904671124 |
2098660029 |
| 3 |
0 |
274 |
2098660029 |
3904671125 |
|
|
|
| 4 |
56 |
|
|
|
54708 |
3904671125 |
2098660029 |
| 5 |
14 |
275 |
2098660029 |
3904671181 |
|
|
|
| 6 |
0 |
|
|
|
54709 |
3904671181 |
2098660043 |
| 7 |
113 |
|
|
|
54710 |
3904671181 |
2098660043 |
| 8 |
12 |
276 |
2098660043 |
3904671294 |
|
|
|
| 9 |
18 |
|
|
|
54711 |
3904671294 |
2098660055 |
| 10 |
18 |
277 |
2098660055 |
3904671312 |
|
|
|
| 11 |
18 |
|
|
|
54712 |
3904671312 |
2098660073 |
| 12 |
10 |
278 |
2098660073 |
3904671330 |
|
|
|
| 13 |
31 |
|
|
|
54713 |
3904671330 |
2098660083 |
| 14 |
0 |
279 |
2098660083 |
3904671361 |
|
|
|
| 15 |
34 |
280 |
2098660083 |
3904671361 |
|
|
|
| 16 |
8 |
|
|
|
54714 |
3904671361 |
2098660117 |
| 17 |
35 |
281 |
2098660117 |
3904671369 |
|
|
|
| 18 |
8 |
|
|
|
54715 |
3904671369 |
2098660152 |
| 19 |
6 |
282 |
2098660152 |
3904671377 |
|
|
|
| 20 |
37 |
|
|
|
54716 |
3904671377 |
2098660158 |
| 21 |
1414 |
283 |
2098660158 |
3904671414 |
|
|
|
| 22 |
0 |
|
|
|
54717 |
3904671414 |
2098661572 |
| 23 |
993 |
284 |
2098661572 |
3904671414 |
|
|
|
| 24 |
0 |
|
|
|
54718 |
3904671414 |
2098662570 |
| 25 |
5 |
285 |
2098662565 |
3904671414 |
|
|
|
| 26 |
38 |
|
|
|
54719 |
3904671414 |
2098662570 |
| 27 |
6 |
286 |
2098662570 |
3904671452 |
|
|
|
| 28 |
9 |
|
|
|
54720 |
3904671452 |
2098662576 |
| 29 |
0 |
|
|
|
54721 |
3904671452 |
5098662576 |
| 30 |
0 |
287 |
2098662576 |
3904671462 |
|
|
|
| 31 |
0 |
288 |
2098662576 |
3904671462 |
|
|
|
(1)数据大小不包括IP首部和TCP首部的大小。
(2)除开始协商建立连接外,每一个sequence均等于上一sequence值加数据大小。开始协商的SYN标记要占用一个字节。
(3)1和2行数据设置了SYN标志。
(4)30和31行数据设置了FIN标志。
(5)每个数据都包括发送方数据的起始字节sequence和期待对方发送数据位置的Ack值。
5、程序说明:

(1) 该程序收集通过本机网卡的所有协议为TCP的IP包。
(2) 对于未加密的邮件内容,可以进行识别并获得邮件首部内容。
(3) 对于采集的数据包可以进行保存,文件名为scan.bin,也可以导入符合该格式的文件。数据格式请见源程序。
(4) 源程序中还包括其他功能,有些尚未完成,有兴趣的读者可以帮我完成和修改.
6、由于笔者水平有限,上述内容难免有错误和不足之处,欢迎批评指正,先谢了。
作者:肖进
单位:南京中萃食品有限公司 资讯部
邮件:xiaoj@njb.swirebev.com
|