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



当应用程序用TCP传送数据时 , 数据被送入协议栈中 , 然后逐个通过每一层直到被当作一串比特流送入网络 。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息) , 该过程如图6所示 。TCP传给IP的数据单元称作TCP报文段或简称为TCP段 。I P传给网络接口层的数据单元称作IP数据报 。通过以太网传输的比特流称作帧(Frame) 。

数据发送时是按照图6自上而下 , 层层加码;数据接收时是自下而上 , 层层解码 。

图6

c. 逻辑上通讯是在同级完成的

垂直方向的结构层次是当今普遍认可的数据处理的功能流程 。每一层都有与其相邻层的接口 。为了通信 , 两个系统必须在各层之间传递数据、指令、地址等信息 , 通信的逻辑流程与真正的数据流的不同 。虽然通信流程垂直通过各层次 , 但每一层都在逻辑上能够直接与远程计算机系统的相应层直接通信 。

从图7可以看出 , 通讯实际上是按垂直方向进行的 , 但在逻辑上通信是在同级进行的 。

图72、过程描述

为了更好的分析协议 , 我们先描述一下上述例子数据的传输步骤 。如图8所示:

1)FTP客户端请求TCP用服务器的IP地址建立连接 。

2)TCP发送一个连接请求分段到远端的主机 , 即用上述IP地址发送一份IP数据报 。

3) 假如目的主机在本地网络上 , 那么IP数据报可以直接送到目的主机上 。假如目的主机在一个远程网络上 , 那么就通过IP选路函数来确定位于本地网络上的下一站路由器地址 , 并让它转发IP数据报 。在这两种情况下 , IP数据报都是被送到位于本地网络上的一台主机或路由器 。

4) 本例是一个以太网 , 那么发送端主机必须把32位的IP地址变换成48位的以太网地址 , 该地址也称为MAC地址 , 它是出厂时写到网卡上的世界唯一的硬件地址 。把IP地址翻译到对应的MAC地址是由ARP协议完成的 。

5) 如图的虚线所示 , ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机 , 这个过程称作广播 。ARP请求数据帧中包含目的主机的IP地址 , 其意思是“假如你是这个IP地址的拥有者 , 请回答你的硬件地址 。”

6) 目的主机的ARP层收到这份广播后 , 识别出这是发送端在寻问它的IP地址 , 于是发送一个ARP应答 。这个ARP应答包含I P地址及对应的硬件地址 。

7) 收到ARP应答后 , 使ARP进行请求—应答交换的IP数据包现在就可以传送了 。

8) 发送IP数据报到目的主机 。

图8

3、实例分析

下面通过分析用iris捕捉的包来分析一下TCP/IP的工作过程 , 为了更清楚的解释数据传送的过程 , 我们按传输的不同阶段抓了四组数据 , 分别是查找服务器、建立连接、数据传输和终止连接 。每组数据 , 按下面三步进行解释 。

显示数据包

解释该数据包

按层分析该包的头信息

第一组 查找服务器

1)下图显示的是1、2行的数据;

图9

2)解释数据包

这两行数据就是查找服务器及服务器应答的过程 。

在第1行中 , 源端主机的MAC地址是00:50:FC:22:C7:BE 。目的端主机的MAC地址是FF:FF:FF:FF:FF:FF , 这个地址是十六进制表示的 , F换算为二进制就是1111 , 全1的地址就是广播地址 。所谓广播就是向本网上的每台网络设备发送信息 , 电缆上的每个以太网接口都要接收这个数据帧并对它进行处理 , 这一行反映的是步骤5)的内容 , ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机 。网内的每个网卡都接到这样的信息“谁是192.168.113.1的IP地址的拥有者 , 请将你的硬件地址告诉我” 。

推荐阅读