第 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 报文段中的数据偏移实际指明的是( ) 。