实验4 TCP数据包及连接建立过程分析
1.实验目的
1. 学习并分析TCP数据包的结构、含义
2.分析TCP连接的建立过程和数据传输过程。
2.实验设备与环境
1.Wireshark网络分析软件
2.实验文件“计算机网络-实验文件.cap”
3.相关知识
3.1 TCP 数据报结构
? 一个 TCP 数据报由首部和数据两部分组成。
? 首部的前一部分是固定长度,共 20 字节,是所有TCP数据报必须具有的。 ? 在首部的固定部分的后面是一些可选字段,其长度是可变的。
32 bit比特0 8 16 源端口序号TCP首部确数据偏移保留检验和选项(长度可变)认号窗口紧急指针填充20 字节的固定首部24 31目的端口UAPRSFRCSSYIGKHTNNTCP 报文段发送在前IP 首部TCP 首部TCP 数据部分IP 数据部分TCP 报文段首部 3.2 TCP 连接的建立过程
? A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择
序号 x (为了防止TCP syn 攻击,分组选择的是经过较复杂运算后得到的初始化序号,当然其相对序号应该视作是1),表明传送数据时的第一个数据字节的序号是 x。 ? B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
? B 在确认报文段中应将 SYN 置为 1,其确认号应为 x ? 1,同时也为自己选择序号
y(为了防止TCP syn 攻击,分组选择的是经过较复杂运算后得到的初始化序号,当然其相对序号应该视作是1)。
? A 收到此报文段后,向 B 给出确认,其确认号应为 y ? 1。 ? A 的 TCP 通知上层应用进程,连接已经建立。
? 当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,
连接已经建立。
4.实验内容
4.1 TCP数据包的结构和含义分析
打开文件“计算机网络-实验文件.cap”,这是一个包括204个分组的网络通信记录,详细记录了分组的序号、相对时间、源地址、目标地址、协议类型、内容,如图1是对第29个分组的详细信息。
图1 第29个分组的TCP数据包的解析
观察文件内第29个分组的TCP数据包详细信息,见图1。
? 它的前16位是1668,表示源端口是1668,是客户端的一般端口,(本机是客户端) ? 它的目的端口是0050(H)=8080,表明是访问服务器端的HTTP应用。
? 当前发送的数据首字节是0(相对值),表示为首发字节。它携带的数据包长度是0字
节,64(IP包全长,见IP包头的长度字段值)-20(IP首部长度)-44(TCP首部长度)=0字节,该TCP数据包未携带数据。
? 确认号字段为0,结合后面的ACK ? 0,表明未携带确认信息。
? TCP首部的固定长度部分是20字节; b002(H)=1011 0000 0000 0010 (B),其中表示TCP
首部长度长度.是前4位,即1011(B)=11,以4个字节为1个单位,因此该TCP首部总长度是11×4字节=44字节,其中包含选项字段24字节。 ? 同步比特SYN=1,表明它是一个TCP连接相关的数据包 ? 其它:ACK ? 0,确认比特 ACK —— 只有当 ACK ? 1 时确认号字段才有效。当 ACK
? 0 时,确认号无效。
? 推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给
接收应用进程,而不再等到整个缓存都填满了后再向上交付。 ? 窗口字段大小524280字节,当前可以接收对方发送524280字节。 ? 校验和=a4ff,正确。
? 紧急指针字段=0,因为紧急URG=0
? 头部选项字段:给出了最大报文段长度MMX=1460字节,注意MAC帧携带的数据范
围是46-1500字节,1500-20(IP头长)-20(TCP长)=1460。
观察文件内第34个分组的TCP数据包详细信息,见图2。
图2 第34个分组的TCP数据包的解析
? 它的源端口是0050(H)=80,是服务器端的HTTP应用服务。 ? 它的目的端口是1668,是客户端的一般端口号。
? 当前发送的数据首字节是1449(相对值)。它携带的数据包长度是357字节,409(IP
包全长,见IP包头的长度字段值)-20(IP首部长度)-32(TCP首部长度)=357字节,该TCP数据包携带357字节数据,因此下一个TCP数据包携带数据的首字节是1449+357=1806。
? 确认号字段为875,结合后面的ACK ?1,表明已经正确接收对方发送的875字节前的
数据。
? TCP首部固定字段长度是20字节; 8018(H)=1000 0000 0001 1000 (B),其中表示TCP
首部长度长度是前4位,即1000(B)=8,因此该TCP首部长度是8×4字节=32字节,包含选项字段12字节。