实验4 TCP协议分析
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、利用wget命令下载新疆大学主页www.xju.edu.cn;
wget www.xju.edu.cn
2、利用tcpdump抓包,监听eth0端口,将捕获的数据包保存为tcp.cap。
tcpdump -i eth0 -w tcp.cap
3、登录Xftp获取tcp.cap文件,其中index.html为下载的新疆大学官网。
4、使用wireshark分析捕获的包。
4.1 填写表格
根据捕获的数据包,分析TCP的报文结构,将TCP协议中个字段名,字段长度,字段值,字段含义填入下表:
字段名 | 字段长度 | 字段值 | 字段含义 |
---|---|---|---|
Source Port | 16 | 80 | 源端口 |
Destination Port | 16 | 35772 | 目的端口 |
Stream index | 32 | 1 | 用来标记,该TCP包所在的TCP流在整个文件TCP流中的编号 |
TCP Segment Len | 32 | 10 | 报文段长度 |
Sequence Number | 32 | 1 | TCP序列号 |
Acknowledgment Number | 32 | 843 | 相对确认号 |
Acknowledgment number (raw) | 32 | 1410316373 | 原始值 |
Flags | 6 | 0x018 | 数据偏移 |
Window | 16 | 1432 | 窗口 |
Checksum | 16 | 0x976c | 检验和 |
Urgent Pointer | 16 | 0 | 紧急指针 |
4.2 分析建立连接三次握手
-
通过分析实验结果,TCP报文结构由哪几部分组成,其功能是什么?
-
分析三次握手的标志位和序号;
-
分析TCP数据报窗口,序号
4.2.1第一次握手
客户端发起给服务器的报文,请求建立连接。SYN为1表示这个报文是一个请求链接的报文。
4.2.2第二次握手
服务器回复给客户端的额报文,确认并同意连接的请求。SYN为1,表示这个报文是一个同意连接的报文。ACK位为1,表示是一个队上一个报文的确认报文。
4.2.3第三次握手
客户端发送给服务器,对上一个同意连接请求的确认。
4.3 分析释放连接的四次挥手
- 分析四次挥手的报文标志和序号
4.3.1第一次挥手
客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1。
4.3.1第二次挥手
服务器收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到的序号加1,即X=X+1=2。
4.3.1第三次挥手
服务器关闭与客户端的连接,发送一个FIN。标志位FIN和ACK置为1,序号为Y=1,确认序号为X=2。
4.3.1第四次挥手
客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的序号加1,即Y+1=2。序号为收到的确认序号X=2。
5、实验小结
(包括遇到的特定问题和解决办法、心得体会、意见与建议等)
5.1问题与解决办法:
问题1、在使用tcpdump进行网络协议分析时,捕获到的数据包不完整。
解决方法:确认tcpdump监听的网络接口正确,且该接口上有预期的TCP流量。
问题2、不知道怎么找四次挥手。
解决方法:查找资料,第一次挥手会发送一个Fin的报文段,另一方会返回一个Ack。
5.2心得体会:
p进行网络协议分析时,捕获到的数据包不完整。
解决方法:确认tcpdump监听的网络接口正确,且该接口上有预期的TCP流量。
问题2、不知道怎么找四次挥手。
解决方法:查找资料,第一次挥手会发送一个Fin的报文段,另一方会返回一个Ack。
5.2心得体会:
通过实际操作tcpdump和Wireshark,我能够直观地看到TCP数据包的结构和传输过程,这对于理解网络协议的工作原理非常有帮助。同时,我也认识到了网络协议设计的复杂性和精妙性,每一个字段和控制机制都是为了确保数据的可靠传输。在实验过程中,我遇到了一些问题,但通过查阅资料和不断尝试,我逐渐找到了解决问题的方法。这个过程不仅锻炼了我的解决问题的能力,也让我对TCP协议有了更深刻的认识。学习TCP协议和相关分析技术是一次非常有价值的经历,它让我对网络通信有了更深入的了解,也为我未来的学习和工作打下了坚实的基础。