第
5 章


传输层实验

实验19 
运输层协议分
析


.实验目的

191 

(1)理解端到端通信和端口的概念、分类。
(2)了解UDP 报文的格式。
(3)掌握TCP 建立连接的过程,理解TCP 的工作原理。
.实验环境

192 

(1)设备要求:计算机若干台(安装有Windows操作系统,安装有网卡), 局域网环
境,主机装有Wireshark工具。
(2)每组1人,独立完成。
193 
实验预备知识

.

1. 
运输层的通信实现
运输层实现两个主机端到端的通信,即应用进程之间的通信。实现进程之间的通信
需要使用端口号,简称为端口(Port)。端口号是一个16b 的标识符,取值范围是0~65535 。
端口号只具有本地意义,每个主机上的TCP 和UDP 各有一套。进程之间的通信需要使
用IP 地址+端口号(套接字)来实现。

IANA(互联网数字分配机构)将端口分为以下三种类别。

(1)熟知端口,其数值为0~1023 。这类端口是因特网赋号管理局(IANA)控制的, 
一些常用的应用程序固定使用。
(2)登记端口,其数值为1024~49151 。IANA 既不分配也不控制,可以在IANA 登
记,防止重复使用。
(3)动态端口,其数值为49152~65535 。这类端口是留给客户进程选择作为临时
端口使用的。
2.UDP 
报文结构
每个UDP 报文分为UDP 报头和UDP 数据两部分。报头由4个16b 长(2B)的字段


200
计算机网络实验教程———基于华为eNSP+Wireshark 

组成,分别说明该报文的源端口、目的端口、报文长度和校验值。UDP 报文格式如图5-1 
所示。


图5-
1 
UDP 
报文结构

UDP 报文中每个字段的含义如下。

.源端口:这个字段占据UDP 报文头部的前16 位,通常包含发送数据报的应用程
序所使用的UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目
的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写
入该字段中。如果不写入端口号,则把这个字段设置为0。这样,接收端的应用
程序就不能发送响应了。
.目的端口:接收端计算机上UDP 软件使用的端口,占据16 位。
.长度:该字段占据16 位,表示UDP 数据报长度,包含UDP 报文头部和UDP 数
据长度。因为UDP 报文头部长度是8B,所以这个值最小为8。
.校验值:该字段占据16 位,可以检验数据在传输过程中是否被损坏。
3.TCP 
报文段的结构
TCP 是TCP/IP 体系中运输层的重要协议。它为应用层提供面向连接的、可靠的数据
传递服务。在提供数据可靠性的同时,TCP 还为应用层提供了全双工的数据传输服务。
TCP 接收应用层的数据,添加TCP 首部后形成TCP 报文段。TCP 报文段需要被下
层的IP 协议封装,发送到目的地,如图5-2所示。

.源端口和目的端口:16b,分别对应发送数据的应用进程和接收数据的应用进程。
TCP 用这两个字段来实现多路复用和多路分解。
.序号和确认号:32b,TCP 将连接上发送的每一个字节都进行编号,序号和确认号
用来实现可靠的数据传输。其中,序号是TCP 报文段数据部分的第一个字节的
编号;确认号是告诉对方期望收到对方的下一个字节的编号。
.数据偏移:4b,表示TCP 报文段中的数据部分距离TCP 首部的起始位置有多少
字节。它实际上就是TCP 首部的长度。
.保留字段:6b,保留作为以后扩展。
.标志字段:6b,当其值为1时称为置位。这里有6个位,分别是URG 表示紧急指
针,ACK 表示确认,PSH 表示请求推送,RST 表示连接复位,SYN 表示同步序

实验19 运输层协议分析

201
图5-
2 
TCP 
报文段的组成和封装

号,FIN 表示终止连接。

.窗口大小:16b,主要用于流量控制,用来告诉对方的TCP 自己接收缓存的大小。
.检验和:用来确保数据的可靠性。
.紧急指针:给出紧急数据距离当前序号的偏移量。
.可选项:可选的,TCP 规定一种可选项,最大报文段长度(MSS), 规定TCP 报文
段数据的最大字节数。
.填充项:当可选项字段的长度不是4B 的整倍数时,填充项字段需要将其补足,填
充项字段全部都是0。
4.TCP 
连接的建立与断开
TCP 提供面向连接的传输服务。利用TCP 通信的两个应用进程要首先建立连接, 
这个连接是虚拟的连接,并不是一条实际的物理线路。TCP 连接的三次握手如图5-3所


图5-
3 
TCP 
连接的建立


202
计算机网络实验教程———基于华为eNSP+Wireshark 

示。建立连接的目的是使通信双方在开始传输数据前建立联系,使双方都确定对方愿意
与之通信;同时在建立连接的过程中传递和协商一些必要的参数(如发送字节的起始编号
和最大报文段长度), 为后面的数据传递打下基础。连接建立后,两边的应用进程就可以
开始全双工地通信,在此期间,连接两端的TCP 会记录数据发送和接收的情况,利用控制
信息始终保持这个连接,直到数据传输完毕。最后TCP 还要负责关闭这个连接,释放与
这个连接相关的资源,连接的断开如图5-4所示。


图5-
4 
TCP 
连接的断开

194 
实验内容与步骤

.

本实验利用Wireshark捕捉数据包,分析UDP 和TCP 的报文结构,并分析TCP 建
立连接的过程。
使用实验室网络或者家庭网络完成次实
验。一般情况下,网络拓扑结构如图5-5所示。

Wireshark软件安装在PC 主机上,实验
主要通过连入Internet的PC 主机访问WWW 
服务器上的网站而抓取相应的数据报。PC 主
机通过域名访问网站时,需要对域名进行解
析,因此,PC 主机首先访问自己的DNS 缓存, 


图5-
5 
实验网络拓扑图如果缓存中找不到域名对应的IP 地址时,则

向DNS 服务器进行请求(发送一个数据包), 
DNS 查询后响应(回复给PC 一个数据包),PC 主机然后根据DNS 查询到的WWW 服务
器的IP 地址向WWW 服务器进行请求,WWW 服务器给予响应,则其流向如图5-6所
示。我们则利用Wireshark抓取向DNS 请求以及响应的数据报,抓取向WWW 请求以
及响应的数据报。


实验19 运输层协议分析

203
图5-
6 
数据流向图

1.清空DNSChe(迫使PC主机向DNS发起请求)
ipconfig /flushdnsach-7打开CMD命令(a) 行(c) 窗口,输入“”命令清空DNSCe,如图5
所示。注意,查看DNSCe可以使用“pp”命令。

achiconfig /dislaydns


图5-
7 
清空DNSCache 

2.抓取数据包(通过域名访问网站)
(1)在PC主机上打开Wireshark软件并开始抓取数据包。
(2)在PC主机上打开IE浏览器,地址栏输入“www.eg.dc”,然后按Ener键
sieu.nt
访问该网站。

(3)待网站打开后停止抓取数据包。
3.分析UDP报文(通过DNS数据包进行分析)
(1)为了分析时更好地和本机信息进行比较,在分析之前先查阅本机(即PC主机)的
TCP/IP属性等相关信息。在CMD命令行中使用“p命令查询,并按要求记
录在表5-1中。
iconfig /al” 

204
计算机网络实验教程———基于华为eNSP+Wireshark 

表5-
1 
PC 
主机的TCP/IP 
属性

属性名

属性值

IP 地
址
子网掩
码
默认网
关
首选DNS(第一个DNS)


IP
备用DNS(第二个DNS)


IP 

(2)过滤DNS 数据包,即在过滤框中输入“dns”(注意小写), 然后按Enter键,则只
-resharInfo
显示DNS 的数据报,如图58所示。在Wik软件的数据报列表框中找到“字(”) 段中包含刚才访问的域名信息(即有www.eeu.n) 一个

请求报文,一个响应报文。
sig.dc的数据包。应该是成对出现, 


图5-
8 
过滤DNS 
数据包

(3)分别单击PC 主机请求DNS 的数据包(即源地址为PC 主机的数据包)和DNS 
服务器的响应报文(即源地址为DNS 服务器的数据包), 在协议分析框进行分析。请根据
要求进行分析填写表5-2和表5-3。

实验19 运输层协议分析

表5-
2 
DNS 
报文分析结果

205
分析问题结果
DNS 服务器的IP 地址
DNS 的下一层(运输层)协议是
www.seig.edu.cn网站的IP 地址
表5-
3 
UDP 
报文分析结果

DNS 
报文的下层协议分析请求报文响应报文
源端口号(SourcePort) 
目的端口号(DestinationPort) 
长度(Length) 
校验和(Checksum) 

4. 
分析TCP 
报文
(1)过滤TCP 报文,只需要保留访问www.ieu.n的TCP 数据,则在过滤框中
seg.dc
通过www.ig.dcn的IP(即WWW 服务器的IP 地址)进行过滤。其IP 在上述分析

seeu.
中已经填写在表53中。这里假设IP 为a.cd(请实验时换作WWW 服务器的真实

-b..
IP), 则在过滤框中输入过滤规则为“p.dd==.cd&&tp”,然后按Ener键。过滤

iarab..ct
结果如图5-9所示。


图5-
9 
过滤TCP 
报文段


206
计算机网络实验教程———基于华为eNSP+Wireshark 

(2)根据TCP 建立连接的三次握手的原理(某些字段的特征,如SYN 字段), 请找出
三次握手的三个TCP 报文段,并进行分析,将分析结果填入表5-4中。
表5-
4 
TCP 
三次握手报文段分析

三次握手
报文段
源端口目的端口序号确认号
头部
长度
6个标志位中, 
值为1的
窗口大小MSS 
选项
第1次
第2次
第3次

(3)请设计实验抓取TCP 关闭连接的4个报文段并进行分析(选做)。
19.练习与思考
5 

1. 
选择题
(1)如果要列出本机当前建立的连接,可以使用的命令是( )。
A.netstat-s B.netstat-o C.netstat-a D.netstat-r 
(2)TCP 的主要功能是( )。

A. 进行数据分组B. 保证可靠传输
C. 确定数据传输路径D. 提高传输速
度
(3)TCP 报文段中序号字段指的是() 的序号
。
A. 数据部分第一个字节B. 数据部分最后一个字节
C. 报文首部第一个字节D. 报文最后一个字
节
(4)TCP 报文中确认序号指的是( )
。
A. 已经收到的最后一个数据序号B. 期望收到的第一个字节序号
C. 出现错误的数据序号D. 请求重传的数据序
号
(5)TCP 的确认是对接收到的数据中的() 表示确认
。
A. 最高序号B. 第一个序号
C. 第二个序号D. 倒数第二个序号
(6)TCP 发送一段数据报,其序号是35~150,如果正确到达,接收方对其确认的序
号为( )。

A.36 B.150 C.35 D.151 
2. 
填空题
(1)TCP 报文的首部最小长度是( )
。
(2)TCP 报文段中给源端口分配了() 字节的长度
。
(3)TCP 报文段中序号字段为() 字节
。
(4)TCP 报文段中的数据偏移实际指明的是( )
。