一、wireshark界面查看
WireShark 主要分为这几个界面
1. Display Filter(显示过滤器), 用于过滤
2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。
3. Packet Details Pane(封包详细信息), 显示封包中的字段
4. Dissector Pane(16进制数据)
5. Miscellanous(地址栏,杂项)
二、wireshark过滤规则
- 过滤IP,如来源IP或者目标IP等于某个IP
如前面说的例子: ip.src==192.168.1.102 or ip.dst==192.168.1.102
比如TCP,只显示TCP协议。 - 过滤端口
tcp.dstport == 80 // 只显tcp协议的目标端口80
tcp.srcport == 80 // 只显tcp协议的来源端口80
也可以写成tcp.port eq 80 or udp.port eq 80 这样的模式 - 过滤协议
单独写上tcp、udp、xml、http就可以过滤出具体协议的报文。你也可以用tcp or xml这样格式来过滤。
我们还可以更加具体过滤协议的内容,如tcp.flags.syn == 0x02 表示显示包含TCP SYN标志的封包。 - 过滤mac地址
eth.src eq A0:00:00:04:C5:84 // 过滤来源mac地址
eth.dst==A0:00:00:04:C5:84 // 过滤目的mac地址 - http模式过滤
http.request.method == “GET”
http.request.method == “POST”
http.request.uri == “/img/logo-edu.gif”
http contains “GET”
http contains “HTTP/1.”
// GET包
http.request.method == “GET” && http contains “Host: ”
http.request.method == “GET” && http contains “User-Agent: ”
// POST包
http.request.method == “POST” && http contains “Host: ”
http.request.method == “POST” && http contains “User-Agent: ”
// 响应包
http contains “HTTP/1.1 200 OK” && http contains “Content-Type: ”
http contains “HTTP/1.0 200 OK” && http contains “Content-Type: “ - 过滤内容
contains:包含某字符串
ip.src==192.168.1.107 and udp contains 02:12:21:00:22
ip.src==192.168.1.107 and tcp contains “GET”
前面也有例子,http contains “HTTP/1.0 200 OK” && http contains “Content-Type: “
更多过滤规则查看官方文档:https://www.wireshark.org/docs/wsug_html_chunked/
三 、OSI模型 【参考博客:https://blog.csdn.net/u014530704/article/details/78842000】
OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。如下图左边部分。在每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如源ip地址和目的ip地址等。
osi模型中,在下一层的角度看,当收到上一层的包时,全部会被认为是本层的数据,然后在本层中加上自己本层的首部,继续往下传递。一个数据包格式如下:
举一个例子,比如客户端应用程序A向远端服务器应用程序B发送“早上好”的数据,那么大致流程是这样的:
- 应用程序A把数据发送给下一层的TCP模块。
- TCP模块属于传输层。TCP在应用层数据的前端加上一个TCP首部。TCP首部中包含源端口号和目标端口号等信息。然后将包发送给IP模块。
- IP模块属于网络层。IP将TCP传过来的TCP首部和TCP数据合起来当做自己的数据,并且在TCP首部的前面加上自己的IP首部。IP首部包含了源ip地址和目的ip地址。然后,IP包将被发送给数据链路层,也就是以太网驱动程序。
- 从IP传过来的包,对于以太网驱动程序来说不过就是数据。给这些数据加上以太网首部,里面包含了源MAC地址和目的MAC地址。然后再通过物理层把数据发送给目的MAC地址。
- 服务器物理层接收到来自客户端的数据包时,首先从以太网的包首部找到MAC地址,判断是否为发给自己的包,如果不是就丢弃,如果是就向上转移给IP模块解析。
- IP模块收到IP包首部和后面的数据以后,判断包首部的目的ip地址与自己的ip地址是否匹配,如果匹配,就接收数据并传给TCP模块处理。
- TCP模块会检查端口号确定接收数据的应用程序是哪一个。
- 应用程序接收到数据包之后也会根据自己的规则判断做出一系列的处理。
通过上面例子大致的过程,可以体会到从上而下发包再到从下而上收包的过程。
四、通过wireshark查看tcp三次握手
通过wireshark 我们查看 src = 10.25.8.189 与 des = 104.193.88.91 IP之间tcp连接
第一次握手
第二次握手
第三次握手
三次握手流程为
- 客户端通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答。
- 服务器发送ACK包确认应答,发送SYN包请求连接。
- 客户端针对SYN包发送ACK包确认应答。
查看报文参考图