精华内容
下载资源
问答
  • 本文将展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析网络流量。文中的例子比较简单,适合作为入门参考。 1. 基础环境准备 为方便大家跟着上手练习,本文将搭建一个容器环境。 1.1 Pull Docker ...

    作者:ARTHURCHIAO’S BLOG
    来源:http://arthurchiao.art/blog/tcpdump-practice-zh/

    本文将展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析网络流量。文中的例子比较简单,适合作为入门参考。

    1. 基础环境准备

    为方便大家跟着上手练习,本文将搭建一个容器环境。

    1.1 Pull Docker 镜像
    $ sudo docker pull alpine:3.8
    
    1.2 运行容器
    $ sudo docker run -d --name ctn-1 alpine:3.8 sleep 3600d
    $ sudo docker ps
    CONTAINER ID    IMAGE        COMMAND         CREATED        STATUS          PORTS  NAMES
    233bc36bde4b    alpine:3.8   "sleep 3600d"   1 minutes ago  Up 14 minutes           ctn-1
    

    进入容器:

    $ sudo docker exec -it ctn-1 sh
    

    查看容器网络信息:

    / # ifconfig
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:09
              inet addr:172.17.0.9  Bcast:0.0.0.0  Mask:255.255.0.0
    
    1.3 安装 tcpdump
    / # apk update
    / # apk add tcpdump
    

    2 HTTP/TCP 抓包

    接下来我们用 wget 获取一个网站的首页文件(index.html),同时 tcpdump 抓包,对抓 到的网络流量进行分析。

    2.1 HTTP 请求:下载测试页面

    example.com 是一个测试网站,wget 是一个 linux 命令行工 具,可以下载网络文件。

    如下命令可以下载一个 example.com 网站的首页文件 index.html:

    / # wget http://example.com
    Connecting to example.com (93.184.216.34:80)
    index.html           100% |*****************************|  1270   0:00:00 ETA
    

    虽然这看起来极其简单,但背后却涵盖了很多复杂的过程,例如:

    • **域名查找:**通过访问 DNS 服务查找 example.com 服务器对应的 IP 地址
    • **TCP 连接参数初始化:**临时端口、初始序列号的选择等等
    • 客户端(容器)通过 TCP 三次握手协议和服务器 IP 建立 TCP 连接
    • 客户端发起 HTTP GET 请求
    • 服务器返回 HTTP 响应,包含页面数据传输
    • 如果页面超过一个 MTU,会分为多个 packet 进行传输(后面会看到,确实超过 MTU 了)
    • TCP 断开连接的四次挥手
    2.2 抓包:打到标准输出

    用下面的 tcpdump 命令抓包,另一窗口执行 wget http://example.com,能看到如下类 似的输出。为了方便后面的讨论,这里将一些字段去掉了,并做了适当的对齐:

    / # tcpdump -n -S -i eth0 host example.com
    1  02:52:44.513700 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [S] , seq 3310420140,                            length 0
    2  02:52:44.692890 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [S.], seq 1353235534,            ack 3310420141, length 0
    3  02:52:44.692953 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353235535, length 0
    4  02:52:44.693009 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [P.], seq 3310420141:3310420215, ack 1353235535, length 74: HTTP: GET / HTTP/1.1
    5  02:52:44.872266 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                            ack 3310420215, length 0
    6  02:52:44.873342 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , seq 1353235535:1353236983, ack 3310420215, length 1448: HTTP: HTTP/1.1 200 OK
    7  02:52:44.873405 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353236983, length 0
    8  02:52:44.874533 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [P.], seq 1353236983:1353237162, ack 3310420215, length 179: HTTP
    9  02:52:44.874560 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353237162, length 0
    10 02:52:44.874705 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [F.], seq 3310420215,            ack 1353237162, length 0
    11 02:52:45.053732 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                            ack 3310420216, length 0
    12 02:52:45.607825 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [F.], seq 1353237162,            ack 3310420216, length 0
    13 02:52:45.607869 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353237163, length 0
    

    参数说明:

    • **-n:**打印 IP 而不是 hostname,打印端口号而不是协议(例如打印 80 而不是 http)
    • **-S:**打印绝对时间戳
    • **-i eth0:**指定从 eth0 网卡抓包
    • **host example.com:**抓和 example.com 通信的包(双向)

    更多 tcpdump 的常用命令,可以参考tcpdump: An Incomplete Guide。

    2.3 抓包:存文件

    -w 命令可以将抓到的包写到文件,注意这和用重定向方式将输出写到文件是不同的。 后者写的只是标准输出打印的 LOG,而 -w 写的是原始包。

    / # tcpdump -i eth0 host example.com -w example.pcap
    ^C
    13 packets captured
    13 packets received by filter
    0 packets dropped by kernel
    

    生成的 pcap 文件可以用 tcpdump 或者 wireshark 之类的网络流量分析工具打开。

    3 流量分析: tcpdump

    如果不指定输出的话,tcpdump 会直接将信息打到标准输出,就是我们上面看到的那样。从 这些输出里,我们看到很多信息。

    3.1 每列说明

    第 1 列是为了讨论方便而加的行号,实际的 tcpdump 输出并没有这一列。接下来将用 # 号加数字表示第几个包,例如 #3 表示第 3 个包。

    接下来依次为:

    • packet 时间戳,例如 02:52:44.513700 表示抓到这个包的时间是** 02 时 52 分 44 秒 513 毫秒**
    • packet 类型,这里是 IP
    • 源 (SRC) IP 和端口,目的 (DST) IP 和端口
    • packet TCP flags,其中
      S 表示 syn
      . 表示 ack
      F 表示 fin
      P 表示 push 包(发送正常数据)
    • 序列号(seq)
    • 应答号(ack)
    • 包的 payload 长度
    • 包的部分内容(ASCII)
    3.2 三次握手(1~3)

    wget 是基于 HTTP 协议,因此它在下载文件之前,必定要和服务端建立一个连接。

    而 TCP 建立连接的过程就是著名的三次握手 [4]:

    • client -> server: SYN
    • server -> client: SYN+ACK
    • client -> server: ACK

    我们可以看到,这刚好对应于前三个包:

    1  02:52:44.513700 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [S] , seq 3310420140,                 length 0
    2  02:52:44.692890 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [S.], seq 1353235534, ack 3310420141, length 0
    3  02:52:44.692953 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                 ack 1353235535, length 0
    

    第一次握手: SYN

    #1 包含以下信息:

    • 02:52:44.513700 时刻,客户端主动向 server(93.184.216.34)发起一个 SYN 请求,请求建立连接
    • 客户端请求的服务端端口是 80(HTTP 服务默认 80 端口),客户端使用的是临时端口(大于 1024)41038
    • #1 序列号是 3310420140,这是客户端的初始序列号(客户端和服务端分别维护自己的序列号,两者没有关系;另外,初始序列号是系统选择的,一般不是 0)
    • #1 length 为 0,因为 SYN 包不带 TCP payload,所有信息都在 TCP header

    第二次握手: SYN+ACK

    #2 的 ack 是 3310420140,等于 #1 的 seq 加 1,这就说明,#2 是 #1 的应 答包。

    这个应答包的特点:

    • TCP flags 为 S.,即 SYN+ACK
    • length 也是 0,说明没有 payload
    • seq 为 1353235534,这是服务端的初始序列号
    • 到达 eth0 的时间为 02:52:44.692890,说明时间过了 18ms

    第三次握手: ACK

    同理,#3 的 ack 等于 #2 的 seq 加 1,说明 #3 是 #2 的应答包。

    这个包的特点:

    • TCP flags 为 .,即 ACK
    • 长度为 0,说明没有 TCP payload

    至此,三次握手完成。

    3.3 正常数据传输

    三次握手完成后,client 和 server 开始 HTTP 通信,客户端通过 HTTP GET 方法下载 index.html。

    4  02:52:44.693009 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [P.], seq 3310420141:3310420215, ack 1353235535, length 74: HTTP: GET / HTTP/1.1
    5  02:52:44.872266 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                            ack 3310420215, length 0
    6  02:52:44.873342 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , seq 1353235535:1353236983, ack 3310420215, length 1448: HTTP: HTTP/1.1 200 OK
    7  02:52:44.873405 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353236983, length 0
    8  02:52:44.874533 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [P.], seq 1353236983:1353237162, ack 3310420215, length 179: HTTP
    9  02:52:44.874560 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353237162, length 0
    

    这里可以看到:

    • #4: client 向 server 发起 HTTP GET 请求,请求路径为根路径(/),这个 packet 长度为 74 字节
    • #5: 发送了 ACK 包,对 #4 进行确认
    • #6: 发送了 1448 字节的数据给 client
    • #7: client 对 server 的 #6 进行应答
    • #8: server 向 client 端继续发送 179 字节数据
    • #9: client 对 server 的 #8 进行应答

    3.4 四次挥手

    最后是四次挥手 [5]:

    • client -> server: FIN (我们看到的是 FIN+ACK,这是因为这个 FIN 包除了正常的关闭连接功能之外,还被用于应答 client 发过来的前一个包)
    • server -> client: ACK
    • client -> server: FIN+ACK
    • server -> client: ACK
    10 02:52:44.874705 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [F.], seq 3310420215, ack 1353237162, length 0
    11 02:52:45.053732 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                 ack 3310420216, length 0
    12 02:52:45.607825 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [F.], seq 1353237162, ack 3310420216, length 0
    13 02:52:45.607869 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                 ack 1353237163, length 0
    

    4 流量分析: wireshark

    tcpdump 可以指定 -r 读取 pcap 文件,并以指定的格式输出包的信息,最后输出的内容 和上面看到的类似。我们上面的流量非常简单,所以看 tcpdump 的输出就够了。

    对于复杂的 pcap,例如,其中包含了上百个 IP 地址、上千个端口、上万个连接的 pcap, 通过 tcpdump 看输出可能就比较低效了。

    这时,wireshark 这样带图形用户界面,且功能强大的网 络流分析工具就派上了用场。

    wireshark 支持强大的过滤功能,支持按 IP、端口、协议、连接、TCP flag 以及它们的各 种组合进行过滤,然后进行分析,大大节省网络排障的时间。

    wireshark 官方维护了一个 sample pcap列表 ,我们拿 iperf-mptcp-0-0.pcap 作为例子来展示如何使用 wireshark。

    4.1 追踪 TCP 流

    下载后双击就可以用 wireshark 打开。看到有重传(TCP Retransmition)的包:

    在重传的包上,右键 -> Follow -> TCP Stream,会过滤出只属于这个连接的包:

    我们看到,这个连接只有 3 个包:

    • #1 在 08:00:05.125 发送出去,请求建立连接
    • 大约 1s 后,客户端仍然没有收到服务端的 ACK 包,触发客户端 TCP 超时重传
    • 又过了大约 2s,仍然没有收到 ACK 包,再次触发超时重传
    • 这里其实还可以看出 TCP 重传的机制:指数后退,比如第一次等待 1s,第二次等 待 2s,第三次等待 4s,第四次 8s

    因此,从这个抓包文件看,这次连接没有建立起来,而直接原因就是 client 没有收到 server 的应答包。要跟进这个问题,就需要在 server 端一起抓包,看应答包是否有发出来 。本文不对此展开。

    4.2 过滤流

    上面的截图我们看到 wireshark 里有 tcp.stream eq 1,这其实就是其强大的过滤表达式。

    我们可以直接手写表达式,然后回车,符合条件的包就会显示出来。而且,在编辑表达式的 时候,wireshark 有自动提示,还是比较方便的。这些表达式和 tcpdump 的 filter 表达 式很类似,如果熟悉 tcpdump,那这里不会有太大困难。

    下面举一些例子:

    • ip.addr == 192.168.1.1 过滤 SRC IP 或 DST IP 是 192.168.1.1 的包
    • ip.src_host == 192.168.1.1 and ip.dst_host == 192.168.1.2 过滤 SRC IP 是 192.168.1.1,并且 DST IP 是 192.168.1.2 的包
    • tcp.port == 80 源端口或目的端口是 80 的包
    • tcp.flags.reset == 1 过滤 TCP RST 包。先找到 RST 包,然后右键 Follow -> TCP Stream 是常用的排障方式
    • tcp.analysis.retransmission 过滤所有的重传包
    4.3 导出符合条件的包

    有时 pcap 文件太大,导致 wireshark 非常慢,而大部分数据包可能是不需要的。在这种情况 下,可以先用过滤条件筛选出感兴趣的包,然后 File -> Export Specified Packets … ,弹出的对话框里,可以选择当前显示的包,或者某个指定区间的包另存为新 pcap。

    然后就可以关闭原来的 pcap,打开新的 pcap 进行分析。

    5 总结

    tcpdump 和 wireshark 功能非常强大,组合起来更是网络排障的首选利器。这里介绍的内 容只是九牛一毛,更多的时候,你需要 tcpdump+wireshark+google。

    References

    1、Man Page of tcpdump
    2、Wireshark
    3、Wireshark: Sample Pcaps
    4、TCP 3-way Handshaking
    5、TCP 4-times Close
    6、tcpdump: An Incomplete Guide


    今天的推荐不知道大家喜欢吗?如果你喜欢,请在文章底部留言点赞,以表示对我的支持,你们的留言点赞是我持续更新的动力哦,感谢大家!

    1、点个赞,让更多的人看到这篇文章,顺便激励下我,嘻嘻。

    2、关注我的原创微信公众号「杰哥的IT之旅」专注于IT技术干货文章,以及不定期的分享学习资料,实用工具,面试经验等,当然了还有内推机会哦,期待你的关注!

    展开全文
  • Wireshark抓包及分析——HTTP

    千次阅读 2019-09-22 18:56:49
    2、然后开始抓包分析,在浏览器中输入网址 3、可以看到 Wireshark 已经抓到很多数据包,然后过滤,筛选出 HTTP 数据包。 3、接下来才是对 HTTP 数据包的分析。 双击点开HTTP请求、HTTP响应(最前面——箭头向...

    1、首先我们打开 Wireshark,可以看到有很多的网络,选择自己正在使用的网络,比如我现在就是使用 WLAN,双击点开就可以了。
    在这里插入图片描述

    2、然后开始抓包分析,在浏览器中输入网址
    在这里插入图片描述

    3、可以看到 Wireshark 已经抓到很多数据包,然后过滤,筛选出 HTTP 数据包。
    在这里插入图片描述

    4、接下来才是对 HTTP 数据包的分析。
    双击点开HTTP请求、HTTP响应(最前面——箭头向右的是请求,箭头向左的是响应)

    (1)Frame
    物理层的数据帧概况。
    (2)Ethernet II
    数据链路层以太网帧头部信息,一般包含源(本机)、目的地(服务器)物理地址(MAC)。
    (3)Internet Protocol Version 4
    互联网层IP包头部信息,一般包含源(本机)、目的地(服务器)IP地址。
    (4)Transmission Control Protocol
    传输层的数据段头部信息,此处是TCP协议,一般包含源(本机)、目的地(服务器)端口和连接状态。
    (5)Hypertext Transfer Protocol
    应用层的信息,此处是HTTP协议。
    

    我着重要解读的是HTTP协议包解读。
    下面就是一个请求数据包
    在这里插入图片描述

    > Frame 432: 536 bytes on wire (4288 bits), 536 bytes captured (4288 bits) on interface 0
    > Ethernet II, Src: Cybertan_83:22:81 (60:14:b3:83:22:81), Dst: XiaomiEl_1b:75:f7 (40:31:3c:1b:75:f7)
    > Internet Protocol Version 4, Src: 192.168.31.208, Dst: 128.119.245.12
    > Transmission Control Protocol, Src Port: 56556, Dst Port: 80, Seq: 1, Ack: 1, Len: 482
    v Hypertext Transfer Protocol
    	v GET /ethereal-labs/HTTP-ethereal-file1.html HTTP/1.1\r\n										#请求信息
    		v [Expert Info (Chat/Sequence): GET /ethereal-labs/HTTP-ethereal-file1.html HTTP/1.1\r\n]	#专家信息
    			[GET /ethereal-labs/HTTP-ethereal-file1.html HTTP/1.1\r\n]
    			[Severity level: Chat]
    			[Group: Sequence]
    		Request Method: GET																			#请求方式 GET
    		Request URI: /ethereal-labs/HTTP-ethereal-file1.html										#请求地址
    		Request Version: HTTP/1.1																	#请求版本,即本机浏览器(客服端的版本)
    	Host: gaia.cs.umass.edu\r\n																		#请求主机
    	Connection: keep-alive\r\n																		#使用持久连接
    	Cache-Control: max-age=0\r\n																	#检验是否有本地缓存,max-age>0 时 直接从游览器缓存中 提取max-age<=0 时 向server 发送http 请求确认 ,该资源是否有修改 
    	Upgrade-Insecure-Requests: 1\r\n
    	User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36\r\n	#浏览器类型
    	Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3\r\n	#请求的类型
    	Accept-Encoding: gzip, deflate\r\n																#请求的编码格式
    	Accept-Language: zh-CN,zh;q=0.9\r\n																#请求的语言
    	\r\n
    	[Full request URI: http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file1.html]				#完整的请求 URL 路径
    	[HTTP request 1/1]																				#HTTP请求进度 1/1
    	[Response in frame: 438]																		#响应帧,编号
    

    下面就是一个响应数据包,可以看到一些传递数据
    在这里插入图片描述

    > Frame 438: 538 bytes on wire (4304 bits), 538 bytes captured (4304 bits) on interface 0
    > Ethernet II, Src: XiaomiEl_1b:75:f7 (40:31:3c:1b:75:f7), Dst: Cybertan_83:22:81 (60:14:b3:83:22:81)
    > Internet Protocol Version 4, Src: 128.119.245.12, Dst: 192.168.31.208
    > Transmission Control Protocol, Src Port: 80, Dst Port: 56556, Seq: 1, Ack: 483, Len: 484
    v Hypertext Transfer Protocol
    	v HTTP/1.1 200 OK\r\n																			#响应信息
    		v [Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n]										#专家信息
    			[HTTP/1.1 200 OK\r\n]
    			[Severity level: Chat]
    			[Group: Sequence]
    		Response Version: HTTP/1.1																	#响应版本,即服务器版本
    		Status Code: 200																			#状态码
    		[Status Code Description: OK]																#响应状态码描述
    		Response Phrase: OK																			#响应短语
    	Date: Sat, 21 Sep 2019 08:34:51 GMT\r\n															#响应时间
    	Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.10 Perl/v5.16.3\r\n	#服务器信息
    	Last-Modified: Sat, 21 Sep 2019 05:59:02 GMT\r\n												#上一次修改时间
    	ETag: "7e-59309e22c0357"\r\n																	#上一次修改标志
    	Accept-Ranges: bytes\r\n																		#接收范围
    	v Content-Length: 126\r\n																		#内容长度
    		[Content length: 126]
    	Keep-Alive: timeout=5, max=100\r\n																#保持响应时间,以及最大值#
    	Connection: Keep-Alive\r\n																		#持久连接
    	Content-Type: text/html; charset=UTF-8\r\n														#响应的内容类型
    	\r\n
    	[HTTP response 1/1]																				#HTTP响应进度 1/1
    	[Time since request: 0.253416000 seconds]														#响应时间
    	[Request in frame: 432]																			#请求帧,编号
    	[Request URI: http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file1.html]					#完整 URL 路径
    	File Data: 126 bytes																			#文件长度
    v Line-based text data: text/html (4 lines)															#响应数据内容
    	<html>\n
    	Congratulations.  You've downloaded the file \n
    	http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file1.html!\n
    	</html>\n
    
    展开全文
  • 公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !本文将展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析网络流...

    公众号关注 「奇妙的 Linux 世界

    设为「星标」,每天带你玩转 Linux !



    本文将展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析网络流量。文中的例子比较简单,适合作为入门参考。

    1. 基础环境准备

    为方便大家跟着上手练习,本文将搭建一个容器环境。

    1.1 Pull Docker 镜像

    $ sudo docker pull alpine:3.8
    

    1.2 运行容器

    $ sudo docker run -d --name ctn-1 alpine:3.8 sleep 3600d
    $ sudo docker ps
    CONTAINER ID    IMAGE        COMMAND         CREATED        STATUS          PORTS  NAMES
    233bc36bde4b    alpine:3.8   "sleep 3600d"   1 minutes ago  Up 14 minutes           ctn-1
    

    进入容器:

    $ sudo docker exec -it ctn-1 sh
    

    查看容器网络信息:

    / # ifconfig
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:09
              inet addr:172.17.0.9  Bcast:0.0.0.0  Mask:255.255.0.0
    

    1.3 安装 tcpdump

    / # apk update
    / # apk add tcpdump
    

    2. HTTP/TCP 抓包

    接下来我们用 wget 获取一个网站的首页文件(index.html),同时 tcpdump 抓包,对抓 到的网络流量进行分析。

    2.1 HTTP 请求:下载测试页面

    example.com 是一个测试网站,wget 是一个 linux 命令行工 具,可以下载网络文件。

    如下命令可以下载一个 example.com 网站的首页文件 index.html:

    / # wget http://example.com
    Connecting to example.com (93.184.216.34:80)
    index.html           100% |*****************************|  1270   0:00:00 ETA
    

    虽然这看起来极其简单,但背后却涵盖了很多复杂的过程,例如:

    1. 域名查找:通过访问 DNS 服务查找 example.com 服务器对应的 IP 地址

    2. TCP 连接参数初始化:临时端口、初始序列号的选择等等

    3. 客户端(容器)通过 TCP 三次握手协议和服务器 IP 建立 TCP 连接

    4. 客户端发起 HTTP GET 请求

    5. 服务器返回 HTTP 响应,包含页面数据传输

    6. 如果页面超过一个 MTU,会分为多个 packet 进行传输(后面会看到,确实超过 MTU 了)

    7. TCP 断开连接的四次挥手

    2.2 抓包:打到标准输出

    用下面的 tcpdump 命令抓包,另一窗口执行 wget http://example.com,能看到如下类 似的输出。为了方便后面的讨论,这里将一些字段去掉了,并做了适当的对齐:

    / # tcpdump -n -S -i eth0 host example.com
    1  02:52:44.513700 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [S] , seq 3310420140,                            length 0
    2  02:52:44.692890 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [S.], seq 1353235534,            ack 3310420141, length 0
    3  02:52:44.692953 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353235535, length 0
    4  02:52:44.693009 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [P.], seq 3310420141:3310420215, ack 1353235535, length 74: HTTP: GET / HTTP/1.1
    5  02:52:44.872266 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                            ack 3310420215, length 0
    6  02:52:44.873342 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , seq 1353235535:1353236983, ack 3310420215, length 1448: HTTP: HTTP/1.1 200 OK
    7  02:52:44.873405 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353236983, length 0
    8  02:52:44.874533 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [P.], seq 1353236983:1353237162, ack 3310420215, length 179: HTTP
    9  02:52:44.874560 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353237162, length 0
    10 02:52:44.874705 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [F.], seq 3310420215,            ack 1353237162, length 0
    11 02:52:45.053732 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                            ack 3310420216, length 0
    12 02:52:45.607825 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [F.], seq 1353237162,            ack 3310420216, length 0
    13 02:52:45.607869 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353237163, length 0
    

    参数说明:

    • -n:打印 IP 而不是 hostname,打印端口号而不是协议(例如打印 80 而不是 http)

    • -S:打印绝对时间戳

    • -i eth0:指定从 eth0 网卡抓包

    • host example.com:抓和 example.com 通信的包(双向)

    更多 tcpdump 的常用命令,可以参考tcpdump: An Incomplete Guide。

    2.3 抓包:存文件

    -w 命令可以将抓到的包写到文件,注意这和用重定向方式将输出写到文件是不同的。后者写的只是标准输出打印的 LOG,而 -w 写的是原始包。

    / # tcpdump -i eth0 host example.com -w example.pcap
    ^C
    13 packets captured
    13 packets received by filter
    0 packets dropped by kernel
    

    生成的 pcap 文件可以用 tcpdump 或者 wireshark 之类的网络流量分析工具打开。

    3. 流量分析: tcpdump

    如果不指定输出的话,tcpdump 会直接将信息打到标准输出,就是我们上面看到的那样。从 这些输出里,我们看到很多信息。

    3.1 每列说明

    第 1 列是为了讨论方便而加的行号,实际的 tcpdump 输出并没有这一列。接下来将用 # 号加数字表示第几个包,例如 #3 表示第 3 个包。

    接下来依次为:

    • packet 时间戳,例如 02:52:44.513700 表示抓到这个包的时间是** 02 时 52 分 44 秒 513 毫秒**

    • packet 类型,这里是 IP 包

    • 源 (SRC) IP 和端口,目的 (DST) IP 和端口

    • packet TCP flags,其中

      • S 表示 syn 包

      • . 表示 ack 包

      • F 表示 fin 包

      • P 表示 push 包(发送正常数据)

    • 序列号(seq)

    • 应答号(ack)

    • 包的 payload 长度

    • 包的部分内容(ASCII)

    3.2 三次握手(1~3)

    wget 是基于 HTTP 协议,因此它在下载文件之前,必定要和服务端建立一个连接。

    而 TCP 建立连接的过程就是著名的三次握手 [4]:

    1. client -> server: SYN

    2. server -> client: SYN+ACK

    3. client -> server: ACK

    我们可以看到,这刚好对应于前三个包:

    1  02:52:44.513700 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [S] , seq 3310420140,                 length 0
    2  02:52:44.692890 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [S.], seq 1353235534, ack 3310420141, length 0
    3  02:52:44.692953 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                 ack 1353235535, length 0
    

    第一次握手: SYN

    #1 包含以下信息:

    1. 02:52:44.513700 时刻,客户端主动向 server(93.184.216.34)发起一个 SYN 请求,请求建立连接

    2. 客户端请求的服务端端口是 80(HTTP 服务默认 80 端口),客户端使用的是临时端口(大于 1024)41038

    3. #1 序列号是 3310420140,这是客户端的初始序列号(客户端和服务端分别维护自己的序列号,两者没有关系;另外,初始序列号是系统选择的,一般不是 0)

    4. #1 length 为 0,因为 SYN 包不带 TCP payload,所有信息都在 TCP header

    第二次握手: SYN+ACK

    #2 的 ack 是 3310420140,等于 #1 的 seq 加 1,这就说明,#2 是 #1 的应 答包。

    这个应答包的特点:

    1. TCP flags 为 S.,即 SYN+ACK

    2. length 也是 0,说明没有 payload

    3. seq 为 1353235534,这是服务端的初始序列号

    4. 到达 eth0 的时间为 02:52:44.692890,说明时间过了 18ms

    第三次握手: ACK

    同理,#3 的 ack 等于 #2 的 seq 加 1,说明 #3 是 #2 的应答包。

    这个包的特点:

    1. TCP flags 为 .,即 ACK

    2. 长度为 0,说明没有 TCP payload

    至此,三次握手完成。

    3.3 正常数据传输

    三次握手完成后,client 和 server 开始 HTTP 通信,客户端通过 HTTP GET 方法下载 index.html。

    4  02:52:44.693009 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [P.], seq 3310420141:3310420215, ack 1353235535, length 74: HTTP: GET / HTTP/1.1
    5  02:52:44.872266 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                            ack 3310420215, length 0
    6  02:52:44.873342 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , seq 1353235535:1353236983, ack 3310420215, length 1448: HTTP: HTTP/1.1 200 OK
    7  02:52:44.873405 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353236983, length 0
    8  02:52:44.874533 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [P.], seq 1353236983:1353237162, ack 3310420215, length 179: HTTP
    9  02:52:44.874560 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                            ack 1353237162, length 0
    

    这里可以看到:

    1. #4: client 向 server 发起 HTTP GET 请求,请求路径为根路径(/),这个 packet 长度为 74 字节

    2. #5: 发送了 ACK 包,对 #4 进行确认

    3. #6: 发送了 1448 字节的数据给 client

    4. #7: client 对 server 的 #6 进行应答

    5. #8: server 向 client 端继续发送 179 字节数据

    6. #9: client 对 server 的 #8 进行应答

    3.4 四次挥手

    最后是四次挥手 [5]:

    1. client -> server: FIN (我们看到的是 FIN+ACK,这是因为这个 FIN 包除了正常的关闭连接功能之外,还被用于应答 client 发过来的前一个包)

    2. server -> client: ACK

    3. client -> server: FIN+ACK

    4. server -> client: ACK

    10 02:52:44.874705 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [F.], seq 3310420215, ack 1353237162, length 0
    11 02:52:45.053732 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] ,                 ack 3310420216, length 0
    12 02:52:45.607825 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [F.], seq 1353237162, ack 3310420216, length 0
    13 02:52:45.607869 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] ,                 ack 1353237163, length 0
    

    4. 流量分析: wireshark

    tcpdump 可以指定 -r 读取 pcap 文件,并以指定的格式输出包的信息,最后输出的内容 和上面看到的类似。我们上面的流量非常简单,所以看 tcpdump 的输出就够了。

    对于复杂的 pcap,例如,其中包含了上百个 IP 地址、上千个端口、上万个连接的 pcap, 通过 tcpdump 看输出可能就比较低效了。

    这时,wireshark 这样带图形用户界面,且功能强大的网 络流分析工具就派上了用场。

    wireshark 支持强大的过滤功能,支持按 IP、端口、协议、连接、TCP flag 以及它们的各 种组合进行过滤,然后进行分析,大大节省网络排障的时间。

    wireshark 官方维护了一个 sample pcap列表 ,我们拿 iperf-mptcp-0-0.pcap 作为例子来展示如何使用 wireshark。

    4.1 追踪 TCP 流

    下载后双击就可以用 wireshark 打开。看到有重传(TCP Retransmition)的包:

    在重传的包上,右键 -> Follow -> TCP Stream,会过滤出只属于这个连接的包:

    我们看到,这个连接只有 3 个包:

    1. #1 在 08:00:05.125 发送出去,请求建立连接

    2. 大约 1s 后,客户端仍然没有收到服务端的 ACK 包,触发客户端 TCP 超时重传

    3. 又过了大约 2s,仍然没有收到 ACK 包,再次触发超时重传

    4. 这里其实还可以看出 TCP 重传的机制:指数后退,比如第一次等待 1s,第二次等 待 2s,第三次等待 4s,第四次 8s

    因此,从这个抓包文件看,这次连接没有建立起来,而直接原因就是 client 没有收到 server 的应答包。要跟进这个问题,就需要在 server 端一起抓包,看应答包是否有发出来 。本文不对此展开。

    4.2 过滤流

    上面的截图我们看到 wireshark 里有 tcp.stream eq 1,这其实就是其强大的过滤表达式。

    我们可以直接手写表达式,然后回车,符合条件的包就会显示出来。而且,在编辑表达式的 时候,wireshark 有自动提示,还是比较方便的。这些表达式和 tcpdump 的 filter 表达 式很类似,如果熟悉 tcpdump,那这里不会有太大困难。

    下面举一些例子:

    1. ip.addr == 192.168.1.1 过滤 SRC IP 或 DST IP 是 192.168.1.1 的包

    2. ip.src_host == 192.168.1.1 and ip.dst_host == 192.168.1.2 过滤 SRC IP 是 192.168.1.1,并且 DST IP 是 192.168.1.2 的包

    3. tcp.port == 80 源端口或目的端口是 80 的包

    4. tcp.flags.reset == 1 过滤 TCP RST 包。先找到 RST 包,然后右键 Follow -> TCP Stream 是常用的排障方式

    5. tcp.analysis.retransmission 过滤所有的重传包

    4.3 导出符合条件的包

    有时 pcap 文件太大,导致 wireshark 非常慢,而大部分数据包可能是不需要的。在这种情况 下,可以先用过滤条件筛选出感兴趣的包,然后 File -> Export Specified Packets ... ,弹出的对话框里,可以选择当前显示的包,或者某个指定区间的包另存为新 pcap。

    然后就可以关闭原来的 pcap,打开新的 pcap 进行分析。

    5. 总结

    tcpdump 和 wireshark 功能非常强大,组合起来更是网络排障的首选利器。这里介绍的内 容只是九牛一毛,更多的时候,你需要 tcpdump+wireshark+google。

    References

    1. Man Page of tcpdump

    2. Wireshark

    3. Wireshark: Sample Pcaps

    4. TCP 3-way Handshaking

    5. TCP 4-times Close

    6. tcpdump: An Incomplete Guide

    本文转载自:「ARTHURCHIAO'S BLOG」,原文:https://url.cn/5yCrirJ,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com

    你可能还喜欢

    点击下方图片即可阅读

    天天都在用的 Iptables 你真的了解吗?5 分钟带你看懂其底层架构 Netfilter!

    点击上方图片,打开小程序,加入「玩转 Linux」圈子

    更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

    展开全文
  • 一. WireShark 抓包及常用协议分析

    千次阅读 多人点赞 2019-10-28 10:22:30
    WireShark 抓包及常用协议分析简介WireShark 简介和抓包原理及过程实战:WireShark 抓包及快速定位数据包技巧实战:使用 WireShark 对常用协议抓包并分析原理实战:WireShark 抓包解决服务器被黑上不了网总结: ...

    简介

    1.1 WireShark 简介和抓包原理及过程
    1.2 实战:WireShark 抓包及快速定位数据包技巧
    1.3 实战:使用 WireShark 对常用协议抓包并分析原理
    1.4 实战:WireShark 抓包解决服务器被黑上不了网

    WireShark 简介和抓包原理及过程

    WireShark 简介

    Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接不网卡迚行数据报文交换。

    WireShark 的应用

    网络管理员使用 Wireshark 来检测网络问题,网络安全工程师使用 Wireshark 来检查资讯安全相关问题,开发者使用 Wireshark 来为新的通讯协定除错,普通使用者使用 Wireshark 来学习网络协定的相关知识。当然,有的人也会“居心叵测”的用它来寻找一些敏感信息……

    WireShark 快速分析数据包技巧

    (1) 确定 Wireshark 的位置。如果没有一个正确的位置,启动 Wireshark 后会花费很长的时间捕获一些不自己无关的数据。
    (2) 选择捕获接口。一般都是选择违接到 Internet 网络的接口,这样才可以捕获到不网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
    (3) 使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
    (4) 使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器迚行过滤。
    (5) 使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
    (6) 构建图表。如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。
    (7) 重组数据。当传输较大的图片或文件时,需要将信息分布在多个数据包中。这时候就需要使用重组数据的方法来抓取完整的数据。Wireshark 的重组功能,可以重组一个会话中不同数据包的信息,或者是重组一个完整的图片戒文件。

    实战:WireShark 抓包及快速定位数据包技巧

    常见协议包

    ARP 协议
    ICMP 协议
    TCP 协议
    UDP 协议
    DNS 协议
    HTTP 协议
    FTP 协议
    Tips: 本节主要分析以上几种协议类型

    使用 WireShark 迚行抓包

    启动 WireShark
    在这里插入图片描述
    会有一个报错信息,是丌建议我们使用 root 用户运行。我们直接点击 OK 就行,这个报错信息不影响我们任何的使用。

    在这里插入图片描述
    选择我们的网卡
    在这里插入图片描述
    双击网卡之后就会自劢迚行抓包
    在这里插入图片描述
    混杂模式介绍

    1、混杂模式概述:混杂模式就是接收所有经过网卡的数据包,包括丌是发给本机的包,即不验证 MAC
    地址。普通模式下网卡只接收发给本机的包(包括广播包)传逑给上层程序,其它的包一律丢弃。
    一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。
    2、关闭和开启混杂模式方法
    关闭和开吭混杂模式前,需要停止当前抓包,如果当前正在抓包的过程中,点击“ 停止捕获 ”
    在这里插入图片描述
    在这里插入图片描述

    WireShark 的过滤器使用
    我们开吭混淆模式来做一下感受,我们再次捕获—在所有接口上使用混杂模式就可以直接迚行抓包了
    在这里插入图片描述在这里插入图片描述

    这里就是我们的过滤器,我们可以根据自己的条件筛选自己想要的数据包。
    例 1:使用过滤器筛选 TCP 的数据包
    注意:筛选条件我们都使用小写就好了,大写的话会不识别。
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    其实我们不仅可以对协议类型迚行筛选,我们还有跟多的筛选条件,比如源地址目的地址等等。。。
    例 5:筛选源地址是 192.168.1.53 或目的地址是 192.168.1.1在终端 ping 192.168.1.1
    在这里插入图片描述
    然后修改筛选器条件为:
    ip.src_host == 192.168.1.53 or ip.src_host == 192.168.1.1
    这个判断条件是什么意思呢?
    ip.src_host == 192.168.1.53 表示源 IP 地址
    ip.dst_host == 192.168.1.1 表示目的地址

    我们中间用 or 进行了拼接,表示或 当然我们也可以使用 and 表示不,or 表示满足左右其中一个条件就会显示符合条件的数据包,and 表示左右 2 个条件都满足才会显示。
    在这里插入图片描述
    在这里插入图片描述

    实战:使用 WireShark 对常用协议抓包并分析原理

    协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。

    常用协议分析-ARP 协议

    地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在 IPv4 中极其重要。ARP 是通过网络地址来定位 MAC 地址。开始抓包—过滤 arp
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Address Resolution Protocol (request) #ARP 地址解析协议 request 表示请求包
    Hardware type : Ethernet (1) #硬件类型
    Protocol type: IPv4 ( 0x0800 ) #协议类型
    Hardware size: 6 #硬件地址
    Protocol size: 4 #协议长度
    Opcode: _ request ( 1 ) #操作码,该值为 1 表示 ARP 请求包
    Sender MAC address: Vmware_ 96:67:52 (00:0c:29:96:67:52) #源 MAC 地址
    Sender IP address: 192.168.1.53 . #源 IP 地址
    Target MAC address: 00:00:00_ 00: 00:00 (00: 00: 00 :00: 00:00) #目标 MAC 地址
    Target IP address: 192.168.1.1 #目标 IP 地址

    我们来分析第二个数据包 ARP 的应答数据包
    第一层 Frame 是物理层,前面的 32 表示第几个包。42 表示字节数。
    第二层 数据链路层详解:
    在这里插入图片描述
    Destination:Boradcast 表示目的 MAC 地址 ff 表示我们的广播地址
    Source 表示源 MAC 地址即我们当前主机的 MAC 地址
    Type:ARP(0x0806)表示我们的上层协议是 ARP
    Padding:000 表示补位,
    第三层 Address Resolution Protocol (reply) ARP 地址解析协议
    在这里插入图片描述
    Address Resolution Protocol (reply) #ARP 地址解析协议 reply 表示回复包
    Hardware type: Ethernet (1) #硬件类型
    在这里插入图片描述

    常用协议分析-ICMP 协议
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    我们分析有用的信息
    Version 4 表示 IPv4
    Differentiated Services 原来这 8 字节是被定义成 TOS(Type of Service),现在被
    RFC2474 定义成 Differentiated services(差异化服务)和 ECN。
    Total Length 整个数据包的长度,含头部,单位为 Byte(字节)
    Identification 数据包标识,用来区分相同的数据包,比如我们的 ping 包
    Flags 0x4000,Don’t fragment 表示数据包丌迚行分片丌分包
    Time to Live:64 TTL 值每经过一个网络设备减 1 直到为 0 数据包被丢弃
    Protocol:ICMP(1) 上层协议号 ICMP 是 1,TCP 是 6,UDP 是 17
    Header Checksum 头部 CRC 校验用于校验 IPv4 报头损坏
    Source IP Address 源 IP 地址
    Destination IP Address 目标 IP 地址
    在这里插入图片描述
    工作过程:
    本机发送一个 ICMP Echo Request 的包
    接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令

    常用协议分析-TCP 协议
    在这里插入图片描述
    在这里插入图片描述

    我们从以上信息就可以看出这是一个 SYN 数据包,SYN=1 表示发送一个链接请求。这时 Seq 和 ACK都是 0 我们分析第二个数据包
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    我们分析一下过程,我们在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的
    Server 端向客户端发起关闭链接请求。
    第一次挥手: 服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并迚入
    FIN_WAIT_1 状态
    第二次挥手: 客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 迚行确认,确认序号
    为收到序号+1(不 SYN 相同,一个 FIN 占用一个序号),客户端进入CLOSE_WAIT 状态。
    第三次挥手: 客户端发送 FIN 给对方,表示自己没有数据要发送了,客户端迚入 LAST_ACK 状态,
    然后直接断开 TCP 会话的违接,释放相应的资源。
    第四次挥手: 服务户端收到了客户端的 FIN 信令后,迚入 TIMED_WAIT 状态,并发送 ACK 确认消
    息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的
    ACK 并正确关闭了迚入 CLOSE 状态,自己也断开了 TCP 违接,释放所有资源。当客户端收到服务端的
    ACK 回应后,会迚入 CLOSE 状态并关闭本端的会话接口,释放相应资源。

    常用协议分析-HTTP 协议

    我们还是筛选 TCP 协议因为 HTTP 是 TCP 的上层协议,所以我们过滤 TCP 的数据会包含 HTTP 协议的数据包
    在这里插入图片描述在这里插入图片描述
    第一步: 我们我们发送了一个 HTTP 的 HEAD 请求
    第二步: 服务器收到我们的请求返回了一个 SEQ/ACK 迚行确认
    第三步: 服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常
    第四步: 客户端收到服务器返回的头部信息向服务器发送 SEQ/ACK 迚行确认
    发送完成后客户端就会发送 FIN/ACK 来进行关闭链接的请求。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    实战:WireShark 抓包解决服务器被黑上不了网

    场景: 服务器被黑上丌了网,可以 ping 通网关,但是丌能上网。
    模拟场景
    修改主机 TTL 值为 1,下面的方式是我们临时修改内核参数。
    root@BBBB53:~# echo “1” > /proc/sys/net/ipv4/ip_default_ttl
    拓展:
    TTL : 数据报文的生存周期。
    默认 linux 操作系统值: 64,每经过一个路器节点,TTL 值减 1。TTL 值为 0 时,说明目标地址丌可
    达并返回: Time to live exceeded
    作用: 防止数据包,无限制在公网中转发。我们测试结果
    在这里插入图片描述在这里插入图片描述我们对比数据包发现返回我们数据包被丢弃的源地址变成了 123.115.0.1,这证明了数据包在网络中
    已经到达了下一个网络设备才被丢弃,由此我们还判断出我们的运营商网关地址为 123.115.0.1 但是我们
    并没有到达目标主机。
    我们恢复系统内核参数
    root@xuegod53:~# echo “64” > /proc/sys/net/ipv4/ip_default_ttl
    在这里插入图片描述
    在这里插入图片描述

    总结

    1.1 WireShark 简介和抓包原理及过程
    1.2 实戓:WireShark 抓包及快速定位数据包技巧
    1.3 实戓:使用 WireShark 对常用协议抓包并分析原理
    1.4 实戓:WireShark 抓包解决服务器被黑上不了网

    展开全文
  • wireshark抓包分析

    2019-01-31 10:37:04
    Wireshark学习笔记及抓包结果分析   一、学习笔记 1.[Packet size limited during capture] 当你看到这个提示,说明被标记的那个包没有抓全。以图1的4号包为例,它全长有171字节,但只有前96个字节被抓到了,...
  • DHCP完整过程及Wireshark抓包分析 1、概念和过程 **a、DHCP:**动态主机配置协议(主机获取IP地址的过程),属于应用层协议。 b、DHCP过程:DHCP Discover–>DHCP Offer–>DHCP Request–>DHCP Ack 发现...
  • MSTP模拟实验搭建测试报告、Wireshark抓包分析,内附:拓扑结构、环境配置、测试结果截图、MSTP报文等,用于学习交流。
  • Wireshark 抓包分析工具

    2019-03-13 17:49:45
    Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 网络封包分析软件...
  • 介绍TCP最重要的机制之一是滑动窗口机制,以及用以控制TCP终端节点愿意接收的数据总量的流控机制。...本节中,我们查找问题以及分析解决问题的方法。 本章讨论以上两个问题。 更多信息 TCP窗口问题: TCP零窗口...
  • 文章目录WireShark抓包分析 WireShark抓包分析 wireshark监听localhost地址时,需要选择Loopback: lo0这个选项。 找到相应的Request请求,然后 右键选择 - 查看HTTP流 示例 HTTP报文,请求 和 响应(Body...
  • 前段时间看到群里在讨论Wireshark抓包工具,想写一篇使用笔记但一直没来得写,本篇就通过实例来分享wireshark抓包工具的使用。Wireshark简介 Wireshark 是一...
  • 该文档详细描述了wireshark抓包分析tcp三次握手四次挥手详解网络命令,亲自整理,适合新手借鉴
  • Wireshark网络抓包案例分析及实施方案
  • 1、wireshark的基本介绍(推荐) https://www.cnblogs.com/Chilam007/p/6973990.html 2、wireshark介绍: https://blog.csdn.net/ctrigger/article/details/89365038 3、TCP数据包中的几个链接状态:SYN,FIN,ACK: ...
  • Wireshark抓包——IP协议分析

    万次阅读 多人点赞 2019-06-09 23:12:10
    一. 实验目的 通过本次实验,掌握使用Wireshark抓取TCP/IP协议...1.本次实验重点:利用Wireshark抓IP包及IP包的分析。 2.本次实验难点:分析抓到的IP包。 3.本次实验环境:Windows 7,Wireshark。 4.本次实验...
  • Wireshark抓包——TCP协议分析

    千次阅读 多人点赞 2019-06-11 00:34:17
    一. 实验目的 通过本次实验,掌握使用Wireshark抓取TCP/IP协议数据包的技能,...1.本次实验重点:利用Wireshark抓TCP包及TCP包的分析。 2.本次实验难点:分析抓到的TCP包。 3.本次实验环境:Windows 7,Wiresha...
  • 网络基本功(二十六):Wireshark抓包实例分析TCP窗口reset转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese介绍TCP最重要的机制之一是滑动窗口机制,以及用以控制TCP终端节点愿意...
  • HTTP报文格式及WireShark抓包分析

    千次阅读 2019-01-19 16:40:22
    请求信息和相应信息可以通过wireshark抓包获取,具体方法如下。 wireshark可以在网上下载,随便哪个版本都可以。下载安装好以后,打开软件。我的可以看到如下界面: 界面中显示波动变化的就是你访问网络...
  • 本篇我们对syslong协议进行解析,通过抓包分析syslog协议报文格式,先了解syslog发展史。syslog协议多年来,用于syslog协议的标准RFC是RFC3194,现在,RFC5424是针对syslog协议提出的新标准草案。 换句话说,RFC5424...
  • Wireshark抓包 客户端发送数据后进行抓包,如图: Wireshark流程统计查看 统计-流量图-显示过滤器的限制,选择TCP Flows: 从结果可以看到tcp从SYN、ACK、FIN的整个过程每个过程的耗时情况。 TCP窗口大小调研结论...
  • 本文整理一下日常抓包使用的一些方法及抓包分析的一些方法。 本文基于wireshark2.2.6版本进行抓包处理。其他版本使用方式大同小异。 自定义捕获条件 wireshark可以将抓包数据保存到硬盘上。若需要长时间抓包的...
  • 下面的写作思路将先通过wireshire抓包分析SSH协议上述三个流程,最后将提出整个学习过程中小编遇到的问题进行探讨。 二、SSH协议握手过程分析 在接着下面的内容之前,这里有几个概念非常重要! 1、 会话密钥 ...
  • 我们用抓包分析验证过程 二 使用connect 当客户端向Proxy发起Http CONNECT Method的时候,就是告诉Proxy,先在Proxy和目标服务器之间先建立起连接,在这个连接建立起来之后,目标服务器会返回一个回复给...
  • wireshark抓包工具详细说明操作使用

    万次阅读 多人点赞 2018-01-24 18:06:03
    wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。 为了安全考虑,wireshark只能查看封包,而...
  • Wireshark 抓包过滤器使用TCP三次握手深层分析 前言 笔者上一篇写过 Docker 的博客 logo 就是一条小鲨鱼,没想到这次想要更的内容,碰巧也是和鲨鱼有关,当然只有 logo 有关了,哈,看来和 shark 有不解之缘。 一...
  • Wireshark抓包 客户端发送数据后进行抓包,如图:     Wireshark流程统计查看 统计-流量图-显示过滤器的限制,选择TCP Flows: 从结果可以看到tcp从SYN、ACK、FIN的整个过程每个过程的耗时情况。 ...
  • 前言 坦白讲,没想好怎样的开头。辗转三年过去了。一切已经变化了许多,一切似乎从没有改变。 前段时间调研了一次代理...原理/层级wireshark抓包分析 HTTP head:X-Forwarded-For/Proxy-Connection/伪造X-Forwar...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 274
精华内容 109
关键字:

wireshark抓包及分析