1、实验目的
-
了解运输层TCP协议基本概念、报文结构
-
分析TCP报文头部
-
分析TCP连接建立过程、TCP连接释放
-
掌握利用tcpdump和wireshark进行tcp协议分析技术。
2、实验环境
-
硬件要求:阿里云云主机ECS 一台。
-
软件要求:Linux/ Windows 操作系统
3、实验内容
TCP是面向连接的、在不可靠的互联网络上提供可靠的端到端通信。它是TCP/IP协议集的核心协议。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
利用wget下载新疆大学主页www.xju.edu.cn,与此同时使用tcpdump抓包。使用wireshark分析TCP数据报文头部,分析建立连接三次握手和分析释放连接的四次挥手。
4、实验结果与分析
1、在阿里云环境中下载traceroute命令,代码:yum install traceroute,运行结果如下图4-1所示:
图4-1 traceroute安装
2、连接xshell与阿里云环境,如下图4-2所示:
图4-2 xshell界面
3、在阿里云环境中利用tcpdump命令进行抓包并保存到test4.cap文件中,代码:tcpdump -i eth0 -w test4.cap,运行结果如下图4-3所示:
图4-3 tcpdump抓包结果
4、在xshell页面中,使用wget命令下载新疆大学网站首页,代码:wget www.xju.edu.cn,运行结果如下图4-4所示:
图4-4 wget命令运行结果
5、在xftp应用中将test4.cap文件下载到本地,运行结果如下图4-5所示:
图4-5 xftp下载文件
6、利用wireshark应用分析test4.cap文件,运行结果如下图4-6所示:
图4-6 wireshark应用界面
7、通过ping命令得到www.xju.edu.cn 的ip地址为111.115.76.75,由此在wireshark中进行筛选,运行结果如下图4-7所示:
图4-7 wireshark筛选结果
8、对数据包内容进行分析并填写表格,运行结果如下图4-8所示:
图4-8 数据包内容分析
4.1 填写表格
根据捕获的数据包,分析TCP的报文结构,将TCP协议中个字段名,字段长度,字段值,字段含义填入下表:
字段名 | 字段长度 | 字段值 | 字段含义 |
---|---|---|---|
Source Port | 16 | 80 | 源端口 |
Destination Port | 16 | 58296 | 目的端口 |
Sequence Number | 32 | 17785 | 序列号 |
Acknowledgment Number | 32 | 113 | 确认序列 |
Flags | 6 | 0x018 | 数据偏移 |
Window | 16 | 227 | 窗口 |
Checksum | 16 | 0x8579 | 校验和 |
Urgent Pointer | 16 | 0 | 紧急指针 |
4.2 分析建立连接三次握手
通过分析实验结果,TCP报文结构由哪几部分组成,其功能是什么?
1、tcp报文结构由源端口、目的端口、序列号、确认序号、数据偏移、窗口、校验和与紧急指针组成。
2、各部分功能如下:
源端口:通信发送方使用的端口号
目的端口:指报文接收计算机上应用地址程序地址的接口
序列号:用来确保数据可靠传输的唯一值
确认序列:接收方在响应时发送的数值,由服务器来告诉客户端该发以第几个字节为开头的数据包
数据偏移:用于标志数据包开始的位置,tcp头部的长度
窗口:用于记录缓存时多少字节的
校验和:由发送端填充,接收端对报文段执行CRC(循环冗余校验,利用除法及余数的原理来作错误侦测)算法以检验TCP报文段在传输中是否损坏
紧急指针:当URG数值为1时才有效,用于标志有多少字节数据是需要紧急处理的
分析三次握手的标志位和序号:
1、第一次握手:客户端发送一个TCP,标志位Flags为SYN,序列号Sequence Number为0, 代表客户端请求建立连接,如下图4-9所示:
图4-9 第一次握手
2、第二次握手:TCP服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。确认报文中应该Flags为SYN,ACK, 并且确认号ACK应为0+1即1,如下图4-10所示:
图4-10 第二次握手
3、第三次握手:TCP客户端收到确认后,还要向服务器给出确认。确认报文的ack=y+1即0+1为1,自己的序列号seq=x+1即0+1为1,此时,TCP连接建立,客户端进入ESTABLISHED已建立连接状态, 完成三次握手,如下图4-11所示:
图4-11 第三次握手
分析TCP数据报窗口,序号:
window表示报文的值,calculated window size表示放大后的值,也就是实际可用的值,而window size scalling factor 就相当于放大的倍数
4.3 分析释放连接的四次挥手
1、第一次挥手:客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态,如下图4-12所示:
图4-12 第一次挥手
2、第二次挥手与第三次挥手:
第二次挥手:服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT 关闭等待状态
第三次挥手: 客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认
而在此处由于服务器没有需要发送的最后数据,所以第二次挥手和第三次挥手合并了,如下图4-13所示:
图4-13 第二次挥手与第三次挥手
3、第四次挥手:客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成,如下图4-14所示:
图4-14 第四次挥手
标签:挥手,报文,TCP,计算机网络,实验,所示,连接,客户端 From: https://blog.csdn.net/qq_68195068/article/details/143941226