TCP数据包及连接建立过程分析

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字节是什么意思 1. 学习并分析TCP数据包的结构、含义

2.分析TCP连接的建立过程和数据传输过程。

1.Wireshark网络分析软件

2.实验文件“计算机网络-实验文件.cap”

●一个 TCP 数据报由首部和数据两部分组成。

●首部的前一部分是固定长度,共 20 字节,是所有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 通知上层应用进程,连接已经建立。

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连接的建立过程

图4 选择“flow graph”参数观察TCP流

图5 TCP流

客户端进程(IP地址:219.222.170.14,端口1668)与服务器端进程(IP地址:172.30.0.19 端口80)建立连接的3次握手过程,对应的分别是第29、30、31数据分组。它们分别完成的是:

第29数据分组:客户端的 TCP(序?=8a42cdc9,这是客户端为了防范某些安全性攻击而选择的起始序号,相对序号是1)向服务器端发出连接请求报文段;注意该分组的Option字段内容,给出了MSS=1460字节,Sack Permitted 等协商内容。该连接请求报文不携带数据(Len=0),但消耗一个序号。为了防止TCP syn 攻击,该分组选择的初始化序号是8a42cdc9,当然相对序号是1。

第30数据分组:服务器端的 TCP收到连接请求报文段后,同意,发回确认(确认报文段中将 SYN 置为 1,ACK=1);注意该分组的Option字段内容,给出了MSS=1460字节. 该连接请求确认报文不携带数据(Len=0),但消耗一个序号。同时初始窗口值为32768字节。为了防止TCP syn 攻击,该分组选择的初始化序号是27f5bf03,当然相对序号是1, 对29数据分组的确认是8a42cdca(8a42cdc9+1).

第31数据分组:客户端收到此报文段后,向服务器端给出确认(ACK=1)。连接建立完成。客户端进程(IP地址:219.222.170.14,端口1669)与服务器端进程(IP地址:172.30.0.19 端口80)释放连接的过程,对应的分别是第47、48、49、50数据分组。它们分别完成的是:第47数据分组:219.222.170.14端的 TCP(FIN置为 1)向172.30.0.19端发出连接释放

相关文档
最新文档