一. 实验目的
1、加深理解TCP报文结构
2、领会TCP协议通信机制
3、通过跟踪TCP应用通信,能结合报文对整个通信过程进行分析。
二. 实验环境
1、头歌基于Linux的虚拟机桌面系统
2、网络报文分析工具wireshark
3、浏览器firefox
• 源端口( 16 位):通信发送方使用的端口号
• 目标端口( 16 位):通信接收方使用的端口号
• 序列号( 32 位):用来确保数据可靠传输的唯一值
• 确认号( 32 位):接收方在响应时发送的数值
• 数据偏移( 4 位):标志数据包开始的位置,TCP 头部的长度
• SYN:(同步)发起连接的数据包:同步 SYN=1 表示这是一个连接请求或连接接受报文。
• ACK:(确认)确认收到的数据包:只有当 ACK=1 时,确认号字段才有效;当 ACK=0 时,确认号无效。
• RST:(重置)之前尝试的连接被关闭,(信号差,信号拥挤):当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
• FIN:(结束)连接成功,传输完毕之后,连接正在断开:
计算机网络实验4主要聚焦于TCP和UDP协议的分析,旨在帮助学生深入理解TCP报文的结构和通信机制。实验中,学生将利用头歌Linux虚拟机桌面系统、网络报文分析工具Wireshark以及Firefox浏览器来追踪和分析TCP应用的通信过程。
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP报文头部包含多个关键字段,每个字段都有特定的作用:
1. **源端口和目标端口**:16位的源端口和目标端口分别标识发送和接收数据的进程。
2. **序列号**:32位的序列号用于确保数据的有序传输,每个字节的数据都有唯一的序列号。
3. **确认号**:接收方在响应时会发送一个32位的确认号,表示已接收的数据序列号。
4. **数据偏移**:4位的数据偏移指示TCP头部的长度,帮助定位数据部分的起始位置。
5. **标志字段**:包括SYN、ACK、RST、FIN等,用于控制TCP连接的状态和数据传输。
- SYN(同步):在建立连接时设置为1,表示连接请求或连接接受。
- ACK(确认):确认收到的数据,只有当ACK=1时,确认号才有效。
- RST(重置):用于表示连接错误,如主机崩溃,需要释放连接并重新建立。
- FIN(结束):表示数据传输完成,请求断开连接。
此外,TCP头部还有其他字段,如PSH(推送)、URG(紧急)、窗口大小、校验和和紧急指针等,分别用于数据的快速交付、紧急数据处理、流量控制和数据完整性检查。
TCP连接的建立是通过著名的“三次握手”过程:
1. 客户端发送带有SYN标志的TCP报文,初始化序列号。
2. 服务器响应,同时设置SYN和ACK标志,确认客户端的序列号,并分配自己的序列号。
3. 客户端再次回应,确认服务器的序列号,至此连接建立。
而TCP连接的关闭是“四次挥手”:
1. 主动关闭方发送FIN,表示不再发送数据。
2. 被动关闭方确认收到FIN,继续发送未完成的数据。
3. 被动关闭方发送FIN,表示数据传输完毕。
4. 主动关闭方确认收到FIN,连接完全关闭。
这个实验让学生亲手操作,通过Wireshark抓取和分析TCP报文,能够直观地理解TCP协议的工作原理,提高对网络通信的理解。
1