实验4-TCP数据包及连接建立过程分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4TCP数据包及连接建立过程分析1.实验目的
1. 学习并分析TCP数据包的结构、含义
2.分析TCP连接的建立过程和数据传输过程。
2.实验设备与环境
1.Wireshark网络分析软件
2.实验文件“计算机网络-实验文件.cap”
3.相关知识
3.1 TCP 数据报结构
●一个TCP 数据报由首部和数据两部分组成。
●首部的前一部分是固定长度,共20 字节,是所有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字节。
●同步比特SYN=0,表明它不是一个TCP连接相关的数据包
●确认比特ACK = 1 ,确认号字段才有效。当ACK = 0 时,确认号无效。
●推送比特PSH (PuSH)=1,接收TCP 收到推送比特置1 的报文段,就尽快地交付给
接收应用进程,而不再等到整个缓存都填满了后再向上交付。
●窗口字段大小64661字节,当前可以接收对方发送64661字节。
●校验和=d169,正确。
●紧急指针字段=0,因为紧急URG=0
●头部选项字段:给出了时间戳Time stamp。
数据被分片,1805字节的数据被分为第33个分组的1448字节和第34个分组的357字节.
4.2 TCP连接的建立和释放过程
选择“flow graph”观察TCP连接的建立过程。
图3 选择“flow graph”观察TCP连接的建立过程