计算机网络实验四

您所在的位置:网站首页 使用网络协议分析器捕捉和分析协议数据包的区别 计算机网络实验四

计算机网络实验四

#计算机网络实验四| 来源: 网络整理| 查看: 265

一. 实验目的

1、 加深理解TCP报文结构 2、 通过跟踪TCP应用通信,能结合报文对整个通信过程进行分析。 3、 理解与掌握TCP协议、UDP协议通信机制 4、 熟悉UDP协议报文结构、领会UDP协议通信机制 5、 对比TCP、UDP协议主要特点

二. 实验环境

1、 头歌基于Linux的虚拟机桌面系统 2、 网络报文分析工具wireshark

三. 相关原理或知识点 TCP 首部格式(注:SYN、ACK、RST、FIN、PSH、URG为标记字段(各占1位存储空间)

在这里插入图片描述

源端口( 16 位):通信发送方使用的端口号 目标端口( 16 位):通信接收方使用的端口号 序列号( 32 位):用来确保数据可靠传输的唯一值 确认号( 32 位):接收方在响应时发送的数值 数据偏移( 4 位):标志数据包开始的位置,TCP 头部的长度 SYN:(同步)发起连接的数据包:同步 SYN=1 表示这是一个连接请求或连接接受报文。 ACK:(确认)确认收到的数据包:只有当 ACK=1 时,确认号字段才有效;当 ACK=0 时,确认号无效。 RST:(重置)之前尝试的连接被关闭,(信号差,信号拥挤):当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。 FIN:(结束)连接成功,传输完毕之后,连接正在断开:用来释放一个连接,FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。 PSH:(推送)数据包直接发送给应用,而不是缓存起来:接收 TCP 收到 PSH=1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。 URG:(紧急)数据包中承载的内容应该立即由 TCP 协议栈立即进行处理:当 URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 窗口大小( 16 位):匹配缓存区的大小 校验和( 16 位):确认 TCP 数据段中的内容是否发送了变化 紧急指针( 16 位):明确显示数据之前的 16 进制序列号

TCP连接建立过程

TCP连接建立过程,双方会产生三个报文,俗称三次握手。

在这里插入图片描述

①第一次握手: 客户端将标志位 SYN 置为 1 ,随机产生一个值SEQ = X,并将该数据包发送给服务器,等待服务器确认; ②第二次握手: 服务器收到数据包后由标志位SYN = 1,知道客户端请求建立连接,服务器将标志位 SYN 和 ACK 都置为 1 ,ACK = X + 1,随机产生一个值SEQ = Y,并将该数据包发送给客户端以确认连接请求; ③第三次握手: 客户端收到确认后,检查 ACK 是否为X + 1,ACK 是否为 1 ,如果正确则将标志位 ACK 置为 1 ,ACK = Y + 1,并将该数据包发送给服务器,服务器检查 ACK 是否为1 ,如果正确则连接建立成功。

(注:图中Seq代表tcp报文的序号,ack代表tcp报文的确认号。当ACK为1时,ack值有效。)

TCP连接关闭过程

TCP连接关闭过程,双方通常会产生四个报文,俗称四次握手。有时TCP连接关闭时,只能得到三个报文,这是因为第二次、第三次握手合并到一个报文里了。 在这里插入图片描述

① 第一次挥手: 主动关闭方发送一个 FIN ,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发送数据了(当然,在 FIN 包之前发送出去的数据,如果没有收到对应的 ACK 确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。 ②第二次挥手: 被动关闭方收到 FIN 包后,发送一个 ACK 给对方,确认序号为:收到报文序号Seq +收到报文所携带数据长度len+ 1 。上一个报文可能“捎带”了主动关闭方发送的最后一块数据,其长度用字段len来表示。 ② 第三次挥手: 被动关闭方发送一个 FIN ,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发送数据了。 ④第四次挥手: 主动关闭方收到 FIN 后,发送一个 ACK 给被动关闭方,确认序号为:收到报文的序号Seq + 收到报文所携带数据长度len+ 1 ,至此,完成四次挥手。

注:上图纵向表示时间轴,第二、三次握手报文的发送方都是被动方,中间间隔的时间内,被动方可以照常向另一方发送数据,直到发送完所有的数据。

UDP的首部格式

在这里插入图片描述

UDP 首部有 8 个字节,由 4 个字段构成,每个字段都是两个字节: 源端口: 源端口号,需要对方回信时选用,不需要时全部置 0 ; 目的端口:目的端口号,在终点交付报文的时候需要用到; 长度:UDP 的数据报的长度(包括首部和数据)其最小值为 8(只有首部)。字段记录了该 UDP 数据包的总长度(以字节为单位),包括 8 字节的 UDP 头和其后的数据部分。最小值是 8(报文头的长度),最大值为 65535 字节; 校验和:检测 UDP 数据报在传输中是否有错,有错则丢弃。它的值是通过计算 UDP 数据报及一个伪包头而得到的。校验和的计算方法与通用的一样,都是累加求和。

注:端口是用来指明数据的来源(应用程序)以及数据发往的目的地(同样是应用程序)。字段包含了 16 比特的 UDP 协议端口号,它使得多个应用程序可以多路复用同一个传输层协议及 UDP 协议,仅通过端口号来区分不同的应用程序。

四.实验任务

1、结合具体的报文数据,分析三次握手的过程。 2、结合具体的报文数据,分析四次握手的过程。 3、结合具体的报文数据,分析各字段的含义。 4、完成相关数据的计算统计。 5、在实验报告内,计算双方通信所用的时间、计算A方发送的所有的帧的长度之和、计算A->B连接的通信吞吐率是多少。

五.TCP协议分析 1、TCP连接建立过程分析

在这里插入图片描述

图:tcp建立连接三次“握手”包

在这里插入图片描述

图:第一次握手

第一次握手:客户端将标志位 SYN 置为 1 ,随机产生一个值SEQ = X = 0,并将该数据包发送给服务器,等待服务器确认; 在这里插入图片描述

图:第二次握手

第二次握手:服务器收到数据包后由标志位SYN = 1,直到客户端请求建立连接,服务器将标志位 SYN 和 ACK 都置为 1 ,ACK = X + 1 = 1,随机产生一个值SEQ = Y = 0,并将该数据包发送给客户端以确认连接请求;

在这里插入图片描述

图:第三次握手

第三次握手:客户端收到确认后,检查 ACK 是否为X + 1= 1,如果正确则将标志位 ACK 置为 1 ,SEQ = 1,ACK = Y + 1 = 1,并将该数据包发送给服务器,服务器检查 ACK 是否为1 ,如果正确则连接建立成功,后续开始传输数据。

2、TCP关闭连接过程分析

在这里插入图片描述

图:tcp关闭连接四次“挥手”包

在这里插入图片描述

图:第一次挥手

第一次挥手:主动关闭方发送一个 FIN = 1 ,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发送数据了;

在这里插入图片描述

图:第二次挥手

第二次挥手:被动关闭方收到 FIN = 1包后,发送一个 ACK = 1 给对方,确认序号为:收到报文序号Seq +收到报文所携带数据长度len+ 1=1 。上一个报文可能“捎带”了主动关闭方发送的最后一块数据,其长度用字段len来表示。

在这里插入图片描述

图:第三次挥手

第三次挥手:被动关闭方发送一个 FIN = 1 ,同时ACK=1,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发送数据了;

在这里插入图片描述

图:第四次挥手

第四次挥手:主动关闭方收到 FIN 后,发送一个 ACK 给被动关闭方,确认序号为:收到报文的序号Seq + 收到报文所携带数据长度len+ 1 ,至此,完成四次挥手,双向连接关闭。

3、6号报文分析

在这里插入图片描述

图:6号报文摘要

在这里插入图片描述

图:6号报文TCP展开展示 6号报文分析:

Source Port: 2000 //请求端端口:2000 Destination Port: 21098 //服务器端端口:21098 [Stream index: 0] //tcp流序号:0(wireshark中对源于同一tcp流的包的标记) [TCP Segment Len: 0] //tcp报文长度:0 Sequence Number: 1(relative sequence number) //报文序列号:1(相对序号) Sequence Number (raw): 1959254470 //报文序列号:1959254470(绝对序号) [Next Sequence Number: 1(relative sequence number)] //下一序列号:1 Acknowledgment Number: 1717(relative ack number) //确认号:1717(相对序号) Acknowledgment number (raw): 1749145722 //确认号:1749145722(绝对序号) 0101 … = Header Length: 20 bytes (5) //报文头部长度(数据偏移):20bytes

Flags : 0x010 (ACK) //报文类型:ACK 000… = Reserved: Not set //保留字段 …0… = Nonce: Not set//随机数:无效(随机数(Nonce)是任意的或非重复的值,它包括在经过一个协议的数据交换中,通常为保证活跃度以及避免受重复攻击) …0… = Congestion window Reduced (CWR): Not set //拥塞窗口减少戳:无标记(TCP拥塞控制) …0… =ECN-Echo: Not set //显式拥塞戳:无效(ECN-Echo与TCP拥塞控制) …0… = Urgent: Not set //紧急指针戳:无效 …1… = Acknowledgment: Set //确认号戳:有效 …0… = Push: Not set //推送戳:无效 …0… = Reset: Not set //复位戳:无效 …0. = Syn: Not set //同步戳:无效 …0 = Fin: Not set //结束戳:无效

[TCP Flags …… A……] window: 256 //窗口大小:256(TCP接收者缓冲的字节大小) [ Calculated window size: 65536] //计算出的窗口大小(窗口大小单位*窗口大小) [window size scaling factor: 256] //窗口大小换算系数 Checksum: Oxd6a1 [unverified] //校验和 [Checksum Status : Unverified] //校验状态 Urgent Pointer: 0(如果设置了URG位,这个域将被检查作为额外的指令,告诉CPU从数据包的哪里开始读取数据) [SEQ/ACK analysis]//序列号及确认号的分析结果,当且仅当数据中含有ACK时,才有此项! [This is an ACK to the segment in frame: 5]//这是对5号报文的回应 [ The RTT to ACK the segment was: 0.00050900e seconds]//往返时延 [iRTT: 8.000343000 seconds]//互联网往返时延 [Timestamps]//时间戳 [Time since first frame in this TCP stream: 0.012839000 seconds]// 从此TCP流中的第一帧开始的时间:0.012839000秒 [ Time since previous frame in this TCP stream: 0.000509000 seconds]// 从此TCP流中的上一帧开始的时间:0.000509000秒

4、A方(172.16.75.57)TCP报文序列号分析

(1) A方第1个报文的序列号(相对值)是多少?

在这里插入图片描述

图:A方第1个报文

A方第1个报文的序列号(相对值)是0 (2) A方第2个报文的序列号为什么是1?在这里插入图片描述

因为在TCP建立连接的第二次握手中的确认号为ack=X+1=1,A方第2个报文作为TCP建立连接的第三次握手,其序列号seq=X+1=1。

图:TCP建立连接的第二次握手中的确认号

在这里插入图片描述

图:A方第2个报文(TCP建立连接的第三次握手)

(3) 任取2个A方连续发送的报文(非连接建立或关闭期),分析前一个报文的序列号、所携带数据长度跟下一个报文序列号的关系。

在这里插入图片描述

图:7号报文

在这里插入图片描述

图:8号报文

有图分析可列表:

报文(Frame)序列号(Sequence Number)所携带数据长度TCP Segment)下一个报文序列号(Next Sequence Number)7171723619538195314603413

由表可分析得: 下一个报文序列号 = 其前一报文序列号 + 其前一报文所携带数据长度 (Next Sequence Number = the Front Sequence Number +the Front TCP Segment)

(4) A方最后一个报文的序号取值,没有遵循分析中第3条的变化规律,原因何在?

在这里插入图片描述

图:23号报文

在这里插入图片描述

图:26号报文

原因分析:在最后的TCP连接关闭时(第四次挥手),主动关闭方收到 FIN 后,会额外发送一个 ACK 给被动关闭方(这就是该26号报文的产生原因),此时26号报文(A方最后一个报文的序号)+1即10568+1得到最终的报文序列号为10569,这就是seq没有遵循分析中第3条的变化规律的原因。

(5) 计算A方所传输文件的长度(单位是字节)

在这里插入图片描述

图:追踪TCP流保存文件

在这里插入图片描述

图:大小验证

10567字节

五、计算

计算双方通信所用的时间、计算A方发送的所有的帧的长度之和、计算A->B连接的通信吞吐率。 1、 于最后一个报文的Timestamps里查看通信所用总时间的记录,如图: 在这里插入图片描述

图:26号报文时间戳

双方通信所用的时间:0.085306s

2、 A方发送的所有的帧的长度之和为过滤后lengh的数值总和 A方发送的所有的帧的长度之和:11497字节

3、A->B连接的通信吞吐率: A方发送的所有的帧的长度之和*8/10^6)Mb/双方通信所用的时间s 所以: A->B连接的通信吞吐率:1.078Mbps

六.UDP协议分析

1、UDP报文分析

在这里插入图片描述

图:UDP报文摘要 在这里插入图片描述

图:UDP报文分析 UDP报文分析:

User Datagram Protocol, Src Port: 41831,Dst Port: 8080//UDP协议 Source Port: 41831 //请求方端口:41831 Destination Port: 8080 //服务器端口:8080 Length: 20 //长度:20 Checksum: 0x46c2 [unverified] //校验和 [checksum Status: Unverified] //校验状态 [Stream index: 0] //流序号:0

2、分析TCP、UDP协议主要特点 填写下表:

序号特性TCP协议的特点UDP协议的特点1连接面向连接面向无连接2可靠性高可靠较可靠3实时性一般较好4网络开销较大较小5数据负载边界面向字节流,以整个待传输的数据为边界,保证数据正确性基于数据报,以每段报文为边界,不保证传输的数据顺序 七.实验总结

本次实验作为计算机网络这门课程中很重要的一环:对TCP及UDP协议的理解、学习和调用协议的过程。是极其有必要升入理解和掌握的,通过此次实验,我认识到传输层的TCP/UDP协议与网络层的IP协议是Internet最基本的协议,是Internet国际互联网络的基础。通过在wireshark中对数据报的构造和解析、跟踪TCP应用通信,我加深了对TCP报文结构的理解,并能领会TCP协议通信机制:三次握手以及四次挥手的建立连接/关闭连接的机制,结合报文对整个通信过程进行分析,包括建立连接、传输数据、关闭连接三个重要阶段的主要判别特征以及其作用。而通过对TCP/UDP报文的各个字段的分析,我进一步加深了他们在通信中通过自身标志位从而对每次传输的调节与控制以及整个通信的流量控制和服务质量。我认识到:IP层并不保证数据报一定被正确地递交到接收方,也不指示数据报的发送速度有多快。是由TCP负责快速地发送数据报,以便使用网络容量,同时不会引起网络拥塞:在TCP超时后,要重传没有递交的数据报(即使被正确递交的数据报,也可能存在错序的问题),TCP把接收到的数据报重新装配成正确的顺序。从而达到可靠的通信服务。而UDP在牺牲了部分通信质量的情况下,获得了相比于TCP更快、更高效的数据传输,所以经常被用以传输文件进程中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3