写博客前先碎碎念,TCP报文三次握手在大二的时候学过,大三的时候《计算机网络》专业课又学了一遍,这次因为是专业课  学习,对整个计算机网络的理解更深刻了。正好我们做了关于用WireShark抓包的实验,写了实验报告,所以有必要记录一下。本博客的大部分内容是我实验报告上的内容,感谢王涛老师给我们上这门计算机网络课程。好,废话不多说,接下来进入正题。

首先我们用书面语言理解TCP三次握手,下面是TCP三次握手的演示图。

wiresharktcp三次握手抓包 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三次握手图。

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_TCP_02

在图中我们可以看到看WireShark截获到了三次握手的三个数据包。第四个包才是HTTP的,这说明HTTP的确是使用TCP建立连接的。

1.        第一次握手数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_计算机网络_03

 

2.   第二次握手的数据包

服务器发回确认包, 标志位为SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的ISN加1以.即0+1=1, 如下图:

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_WireShark_04

3.   第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方, 如下图:

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_wiresharktcp三次握手抓包_05

       在第一个图中,服务器端B发送给客户端A的报文段,也可以拆分为两个报文段。可以先发送一个确认报文(ACK=1,ack=x+1),然后再发送一个同步报文段(SYN,seq=y)。这样的过程就变成了四次握手,效果是一样的。

好了,重点讲完了,我们再聊一点其他的。

Filter(过滤规则介绍)


  使用过滤是非常重要的,在捕获的数据中会有大量的冗余信息,所以过滤功能会帮我们过滤掉不符合条件的包,提高我们的分析效率。


  过滤器有两种:


1)显示过滤器,用来过滤在捕获的记录中找到所需要的记录。


比如:


    tcp->只显示TCP协议的记录;


    http->只看HTTP协议的记录;


    ip.src ==202.206.1.115 ->显示源地址为202.206.1.115的记录;


    ip.dst==202.206.1.115 ->显示目标地址为202.206.1.115的记录;


    ip.addr == 10.81.37.139 ->只显示与某主机的通信;


    tcp.port ==80->端口为80的;


    tcp.srcport == 80 ->只显示TCP协议的源端口为80的;


    http.request.method=="GET"  ->只显示HTTP GET方法的;


    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,物理层的数据帧概况:

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_TCP报文三次握手_06

2,数据链路层以太网祯头部信息:

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_计算机网络_07

3,互联网层IP包头部信息:

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_WireShark_08

4,传输层TCP数据段的头部信息:

wiresharktcp三次握手抓包 wireshark捕获tcp三次握手_wiresharktcp三次握手抓包_09


后记:纸上得来终觉浅,绝知此事要躬行。书本上学过的知识,在WireShark验证和博客记录后,印象更深刻。

各位看官如果觉得看完本文受益的话,别忘打赏哟。感谢各位老板,爱你们,么么哒。