二 用协议分析工具学习TCP/IP( 三 )


16位标识:标识字段唯一地标识主机发送的每一份数据报 。通常每发送一份报文它的值就会加1 , 第3行为数值为30 21 , 第5行为30 22 , 第7行为30 23 。分片时涉及到标志字段和片偏移字段 , 本文不讨论这两个字段 。
8位生存时间(TTL):TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数 。它指定了数据报的生存时间 。ttl的初始值由源主机设置 , 一旦经过一个处理它的路由器 , 它的值就减去1 。可根据TTL值判定服务器是什么系统和经过的路由器 。本例为80 , 换算成十进制为128 , WINDOWS操作系统TTL初始值一般为128 , UNIX操作系统初始值为255 , 本例表示两个机器在同一网段且操作系统为WINDOWS 。
8位协议:表示协议类型 , 6表示传输层是TCP协议 。
16位首部检验和:当收到一份I P数据报后 , 同样对首部中每个16 位进行二进制反码的求和 。由于接收方在计算过程中包含了发送方存在首部中的检验和 , 因此 , 假如首部在传输过程中没有发生任何差错 , 那么接收方计算的结果应该为全1 。假如结果不是全1 , 即检验和错误 , 那么IP就丢弃收到的数据报 。但是不生成差错报文 , 由上层去发现丢失的数据报并进行重传 。
32位源IP地址和32位目的IP地址:实际这是IP协议中核心的部分 , 但介绍这方面的文章非常多 , 本文搭建的又是一个最简单的网络结构 , 不涉及路由 , 本文对此只做简单介绍 , 相关知识请参阅其它文章 。32位的IP地址由一个网络ID和一个主机ID组成 。本例源IP地址为C0 A8 71 D0 , 转换为十进制为:192.168.113.208; 目的IP地址为C0 A8 71 01 , 转换为十进制为:192.168.113.1 。网络地址为192.168.113 , 主机地址分别为1和208 , 它们的网络地址是相同的所以在一个网段内 , 这样数据在传送过程中可直接到达 。
TCP协议头信息
如表5是ICP协议的头信息 。
 
表5 TCP包首部
第三行TCP的头信息是:04 28 00 15 3A DF 05 53 00 00 00 00 70 02 40 00 9A 8D 00 00 02 04 05 B4 01 01 04 02
端口号:常说FTP占21端口、HTTP占80端口、TELNET占23端口等 , 这里指的端口就是TCP或UDP的端口 , 端口就像通道两端的门一样 , 当两机进行通讯时门必须是打开的 。源端口和目的端口各占16位 , 2的16次方等于65536 , 这就是每台电脑与其它电脑联系所能开的“门” 。一般作为服务一方每项服务的端口号是固定的 。本例目的端口号为00 15 , 换算成十进制为21 , 这正是FTP的默认端口 , 需要指出的是这是FTP的控制端口 , 数据传送时用另一端口 , 第三组的分析能看到这一点 。客户端与服务器联系时随机开一个大于1024的端口 , 本例为04 28 , 换算成十进制为1064 。你的电脑中了木马也会开一个服务端口 。观察端口非常重要 , 不但能看出本机提供的正常服务 , 还能看出不正常的连接 。Windows察看端口的命令时netstat 。
32位序号:也称为顺序号(Sequence Number) , 简写为SEQ , 从上面三次握手的分析可以看出 , 当一方要与另一方联系时就发送一个初始序号给对方 , 意思是:“让我们建立联系吧?” , 服务方收到后要发个独立的序号给发送方 , 意思是“消息收到 , 数据流将以这个数开始 。”由此可看出 , TCP连接完全是双向的 , 即双方的数据流可同时传输 。在传输过程中双方数据是独立的 , 因此每个TCP连接必须有两个顺序号分别对应不同方向的数据流 。
32位确认序号:也称为应答号(Acknowledgment Number) , 简写为ACK 。在握手阶段 , 确认序号将发送方的序号加1作为回答 , 在数据传输阶段 , 确认序号将发送方的序号加发送的数据大小作为回答 , 表示确实收到这些数据 。在第三组的分析中将看到这一过程 。

推荐阅读