写博客前先碎碎念,TCP报文三次握手在大二的时候学过,大三的时候《计算机网络》专业课又学了一遍,这次因为是专业课 学习,对整个计算机网络的理解更深刻了。正好我们做了关于用WireShark抓包的实验,写了实验报告,所以有必要记录一下。本博客的大部分内容是我实验报告上的内容,感谢王涛老师给我们上这门计算机网络课程。好,废话不多说,接下来进入正题。
首先我们用书面语言理解TCP三次握手,下面是TCP三次握手的演示图。
1.由客户端发起tcp连接的请求,此时客户端发送一条报文,其中包含SYN标志位,将SYN设置为1;以及seq位。设seq = x ; 该报文段成为SYN报文段。
2.服务器收到这条报文后,返回给客户端一条报文,包含Ack位,SYN,以及seq位。 其中ack = x+1; SYN = 1; seq = y。该报文段称为SYNACK报文段。
3.当客户端收到SYNACK报文段之后,客户端需要再给服务器发送另外一个报文段,进行确认。该报文段的SYN = 0, seq = x +1, ack =y+1;
我们打开WireShark,选择一个你正在使用的网卡。然后再打开浏览器,输入http://www.hbu.edu.cn/(学校官网)。在wireshark中输入http过滤,然后选中GET /HTTP/1.1那条记录。鼠标右键,选择追踪流,再选择TCP流。就可以得到如下TCP三次握手图。
在图中我们可以看到看WireShark截获到了三次握手的三个数据包。第四个包才是HTTP的,这说明HTTP的确是使用TCP建立连接的。
1. 第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
2. 第二次握手的数据包
服务器发回确认包, 标志位为SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的ISN加1以.即0+1=1, 如下图:
3. 第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方, 如下图:
在第一个图中,服务器端B发送给客户端A的报文段,也可以拆分为两个报文段。可以先发送一个确认报文(ACK=1,ack=x+1),然后再发送一个同步报文段(SYN,seq=y)。这样的过程就变成了四次握手,效果是一样的。
好了,重点讲完了,我们再聊一点其他的。
Filter(过滤规则介绍)eth.type == 0x806->只显示ARP报文,这个字段的值表示是ARP报文,如果是ip报文此值为0x8000
2)捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。
2、封包列表(Packet List Pane)
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 可以看到不同的协议用了不同的颜色显示,当然也可以在View ->Coloring Rules中修改显示颜色的规则。
3、封包详细信息(Packet Details Pane)
这是最重要的信息,用来查看协议中的每一个字段。而OSI七层模型分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
在封包信息中,每行对应的含义及在OSI模型中的对应关系如下:
Frame: 物理层的数据帧概况 ->对应OSI七层模型中的【物理层】
Ethernet II: 数据链路层以太网帧头部信息 ->对应OSI七层模型中的【数据链路层】
Internet Protocol Version 4: 互联网层IP包头部信息 ->对应OSI七层模型中的【网络层】
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP ->对应OSI七层模型中的【传输层】
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议 ->对应OSI七层模型中的【应用层】
1,物理层的数据帧概况:
2,数据链路层以太网祯头部信息:
3,互联网层IP包头部信息:
4,传输层TCP数据段的头部信息:
后记:纸上得来终觉浅,绝知此事要躬行。书本上学过的知识,在WireShark验证和博客记录后,印象更深刻。
各位看官如果觉得看完本文受益的话,别忘打赏哟。感谢各位老板,爱你们,么么哒。