前沿拓展:
wireshark
用wireshark时,大多数情况下我们都是用的电脑自带的**网卡,所以只能抓取到流经本机网卡的网络包。也就是说除了局域网内的广播包外你无法抓到其他设备的网络包。除非你买一个专用u**抓包网卡,这里不讨论这种情况。
比如我们希望抓取局设备dev1和云端server通信的数据,我们需要用自己的电脑开一个热点(Ap),即建立一个私有的局域网。dev1做为(Station)连接到Ap。这样当我们在自己的电脑上运行wireshark时就可以抓到dev1和server的通信数据了。
其实在局域网内抓包并不是个容易的事,上面的情况是Dev1和server通信的情况下wireshark可以抓到包,但如果我们需要抓取局域网内两个设备Dev1和Dev2之间通信数据的话,这种情况就无法抓取了。
明明在同一个局域网,为什么PC上的wireshark无法抓取Dev1和Dev2的通信呢?原因正是因为Dev1和Dev2在同一个局域网的原因,它俩的通信数据在经过PC的网卡时只涉及Mac层,压根就不会进入PC的IP层协议处理,所以运行在PC上的wireshark自然就看不到任何数据了。而Dev1和server通信的情况就不同了,它需要PC将数据路由至外网的server,需要路由的数据必然会经过IP层协议,所以wireshark能够很好的抓取二者的通信数据包。
TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255,TTL的一个推荐值是64。
虽然TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP数据包在计算机网络中可以转发的最大跳数。TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,第二再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息。
TTL的主要作用是避免IP包在网络中的无限循环和收发,节省了网络资源,并能使IP包的发送者能收到告警消息。
TTL 是由发送主机设置的,以防止数据包不断在IP互联网络上**终止地循环。转发IP数据包时,要求路由器至少将 TTL 减小 1。
在实际报文分析中,两端(client 和 server)通信报文的TTL维持一致,在异常通信中,经常会看到异常报文的TTL和其他报文的TTL不一致,这种场景是在通信时,被网络链路中的其他网元设备(比如防火墙拦截等)回包时,尤其是在公网访问未备案域名时,被工信部防火墙设备拦截,就会出现这种情况;
拓展知识:
wiresharkץ��
一、 wireshark是捕获机器上的某一块网卡的网络包 ,当你的机器上有多块网卡的时候,你需要选择一个网卡。
例如,我测试本地连接,直接选择“本地连接”,进入如下界面
二、 WireShark 主要分为这几个界面
1. Display Filter(显示过滤器), 用于过滤
2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表不同的协议,你也可以修改这些显示颜色的规则, View ->Coloring Rules.
3. Packet Details Pane(封包详细信息), 显示封包中的字段
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Tran**ission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
4. Dissector Pane(16进制数据)
5. Miscellanous(地址栏,杂项)
wireshark顶部显示过滤器
使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。
过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
过滤器有两种,
一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录
一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置
保存过滤
1)设置显示过滤器,按如下步骤进行编辑
过滤表达式的规则
表达式规则
1. 协议过滤
比如TCP,只显示TCP协议。
2. IP 过滤
比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
ip.dst==192.168.1.102, 目标地址为192.168.1.102
3. 端口过滤
tcp.port ==80, 端口为80的
tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
4. Http模式过滤
http.request.method==”GET”, 只显示HTTP GET方法的。
5. 逻辑运算符为 AND/ OR
常用的过滤表达式
三、 wireshark与对应的OSI七层模型
TCP包的具体内容
从下图可以看到wireshark捕获到的TCP包中的每个字段。
四、实例分析TCP三次握手过程
看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例
三次握手过程为
这图我都看过很多遍了, 这次我们用wireshark实际分析下三次握手的过程。
打开wireshark, 打开浏览器输入 http://www.cr173.com
在wireshark中输入http过滤, 第二选中GET /tankxiao HTTP/1.1的那条记录,右键第二点击”Follow TCP Stream”,
这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图
图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
就这样通过了TCP三次握手,建立了连接
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/46683.html