实验四 TCPUDP协议分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四TCP/UDP协议分析

【实验目的】

1、理解与掌握TCP协议

2、UDP协议通信机制

【预习要求】

1、复习课堂上所学习的TCP协议、UDP协议方面基本知识。

【工具软件】

协议解码工具:wireshark(或sniffer pro)

【实验原理】

(一)TCP

说明:

(1)每个TCP段都包括源端和目的端的端口号,用于寻找发送端和接收端的应用进程。

这两个值加上IP首部的源端IP地址和目的端IP地址唯一确定一个TCP连接。

(2)序号用来标识从TCP发送端向接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号对每个字节进行计数。

(3)当建立一个新连接时,SYN标志变1。序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节的序号为这个ISN加1,因为SYN标志使用了一个序号。

(4)既然每个被传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当时上次已成功收到数据字节序号加1。只有ACK标志

为1时确认序号字段才有效。

(5)发送ACK无需任何代价,因为32位的确认序号字段和ACK标志一样,总是TCP 首部的一部分。因此一旦一个连接建立起来,这个字段总是被设置,ACK标志也总是被设置为1。

(6)TCP为应用层提供全双工的服务。因此,连接的每一端必须保持每个方向上的传输数据序号。

(7)TCP可以表述为一个没有选择确认或否认的华东窗口协议。因此TCP首部中的确认序号表示发送方已成功收到字节,但还不包含确认序号所指的字节。当前还无法对数据流中选定的部分进行确认。

(8)首部长度需要设置,因为任选字段的长度是可变的。TCP首部最多60个字节。

(9)6个标志位中的多个可同时设置为1

◆URG-紧急指针有效

◆ACK-确认序号有效

◆PSH-接收方应尽快将这个报文段交给应用层

◆RST-重建连接

◆SYN-同步序号用来发起一个连接

◆FIN-发送端完成发送任务

(10)TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端期望接收的字节数。窗口大小是一个16为的字段,因而窗口大小最大为65535字节。

(11)检验和覆盖整个TCP报文端:TCP首部和TCP数据。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。TCP检验和的计算和UDP首部检验和的计算一样,也使用伪首部。

(12)紧急指针是一个正的偏移量,黄蓉序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。

(13)最常见的可选字段是最长报文大小MMS,每个连接方通常都在通信的第一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。

【实验步骤】

(一)TCP协议分析

运行给定的程序(由指导教师提供),采用”解码软件”跟踪捕获通信报文,全面分析TCP通信机制。

1、在单机上调试运行程序,选择一个长度为10k字节左右的数据文件,进行网络传输。

2、运行网络协议解码工具(如wireshark),跟踪程序整个通信过程,并进行分析。

建立连接过程

应答机制;

包顺序号变化规律;

关闭连接过程

3、分别采用不同的文件分割尺度传输文件,借助于网络协议解码工具,对相关的报文

进行统计和分析,并给出结论。

(二)UDP协议分析

运行给定的程序(由指导教师提供),采用”解码软件”跟踪捕获通信报文,全面分析UDP通信机制。

【实验结果与分析】

建立连接过程

成功建立连接并发送txt10kb文件

使用wireshark抓包

分析建立连接的过程

(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

包顺序号变化规律:其数值等于发送方的发送序号+1(也就是抓包图中的Seq)。

应答机制:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段

TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。

关闭连接的过程:

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

CP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。

(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。

(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

相关文档
最新文档