汪中才 马正军
(河南工程技术学校 河南 454000)
TCP/IP(Transmission Control Protocol/Internet Protocol,即传输控制协议/互联网协议)是不同操作系统的计算机网络互连的通用协议,它是一组计算机通信协议族,其中最著名的两个协议是TCP及IP协议。TCP/IP协议具有开放式互联环境,很容易实现各种局域网和广域网的集成式互联。
从体系结构来看,TCP/IP是OSI/ISO(开放系统互连参考模型)七层结构的简化,可分为四层:应用层、传输层、网络层和物理链路层,其每一层都有特定的功能及协议机制,整个系统遵循低层向高层服务,对等实体间按照协议进行通信的原则。
在TCP/IP层次结构中,数据发送时是自上而下、层层封装,数据接收时是自下而上、层层解封装。数据发送的过程为:①应用程序把需要发送的报文或数据流发送至传输层协议TCP或UDP;②传输层协议把数据分解成更小的块,添加一个目标端IP地址封装成TCP、UDP等报文段后发送到网络层;③网络层在IP数据报中封装该包,增加数据报报头和报尾后将数据报发送到网络接口层;④网络接口层接受IP数据报并按帧方式(如Ethernet或Token Rings)通过特定网络硬件传输,当接收方主机接收到链路层帧后,数据传输的过程恰好相反,其路径是从网络物理层向上传输给应用层,每层都去掉相应的报头信息一直到数据返回至应用层。具体过程如下图所示。
图1 TCP /IP数据传输
Ethereal 是免费的网络协议检测程序,可以用来监视所有在网络上被传送的包,并分析其内容的,支持Unix,Windows。用户可以抓取运行的网站的相关资讯,包括每一封包流向及其内容、资讯可依操作系统语系看出,方便查看、监控TCP session动态等等。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。目前ethereal提供了对TCP、UDP、Telnet和Ftp等常用协议的支持。它在很多情况下可以代替价格昂贵的sniffer。
启动Ethereal,选择“Capture”,选择网卡,执行抓包。
图2 Ethereal抓包界面
选择一个TCP的数据包分析,从图2可以看出,该数据包封装了三个头信息:以太网(Ethernet)帧、IP数据报和 TCP报文段。下面我们分别对三种类型的数据包进行分析。
在物理链路层,数据以帧的方式进行传输。以太网帧头信息中。描述了该数据包的源MAC地址为00-03-0F-0F-4B-FF,目标MAC为00-E0-4C-F4-DE-6B,在帧中封装的协议类型type值为0x0800,即所封装的是IP数据报。
与图3所示的MAC帧格式相比较,分析各个字段的含义,加深对以太网数据包结构的理解与认识。
图3 MAC帧格式
在网络层,主要数据对象是IP数据报。IP协议是TCP/IP协议族中的核心协议之一,所有的 TCP、UDP、ICMP数据都以IP数据报格式传输。从以上请求数据包的IP首部可以看出,此IP数据报版本号(version)为4(即这个数据报为IPv4),首部(head length)为 20bytes,服务类型(services field)为 0x00,数据报总长(total length,即IP首部+数据载荷)为48,标识(identification)为02aab,标志(flags)为0x04表示报文不分段,段偏移(fragment offset)为0,生存时间(time to live)为128,数据报中上层协议类型protocol值为0x06(即本IP包中加载的内容是一个TCP报文段),头部校验和 0x9005表示正确,源主机的 IP地址为192.168.0.91,目的主机的IP地址为125.46.1.230。
然后再与图4所示的IP数据包结构相比较,分析各个字段的含义,加深对IP数据包结构的理解与认识。
图4 IP数据包结构
在运输层,主要数据对象是TCP报文。在以上的TCP报文段中,描述了请求方源端口号(source port)为 1114;目的端口号(destination port)为80,其中80是HTTP协议的保留端口号;序列写SEQ是本次连接的初始序写,因此在连接请求时相对初始值是 0,其实际值是 092f18f5;头部长度(header length)为 28bytes;标志位(flags)为 0x0002,指示 ACK标志为0,表明确认写被忽略,SY'N=1表示正在进行连接请求,通过 SI'N和 ACK也可以用来区分 Connection Request和Connection Accepted,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1;PSH为0;窗口字段((window size)指示发送方想要接收的最大字节数为 16384;校验和(checksum)为0xf252表明正确;最后是8bytes的选项字段。
然后再与图5所示的TCP协议段结构相比较,分析各个字段的含义。
图5 TCP协议段结构
TCP/IP协议是一个协议族,包含大小上百个协议和标准。使用Ethereal也可方便地对其它协议如UDP、ICMP、HTTP、ARP等进行分析,具体的分析过程与TCP类似,这里不再赘述。
通过以上分析可以看到,在教学中,通过实时抓包分析,可以将TCP/IP协议的封装、解封过程解释得非常清晰,起到事半功倍的效果。
随着Internet应用领域的扩大,TCP/IP协议的地位也变得越来越重要。借助Ethereal、Sniffer等分析工具,深入研究TCP/IP协议体系,无论是对于我们开展计算机网络课程教学、网络系统检查维修,还是对于我们更好地开发利用网络资源都具有深远的意义。
[1]张浦生.计算机网络基础与应用技术[M].北京:中国铁道出版社,2007
[2]雷震甲.网络工程师教程[M].北京:清华大学出版社,2006
[3]秦迎春.TCP/IP协议的隐患及防范[J].计算机安全.2005.4
[4]蒋波.用Ethereal对数据包进行网络协议分析[[J].教学与科技.2005.5
[5]苏玉,许绘香.基于Ethereal的TCP/ IP网络协议研究及分析[J].电脑知识与技术.2006.4