1.分层介绍
用wireshark查看客户端跟服务器之间的报文,了解其业务流程。
-
分层介绍
OSI体系结构,对应wireshark报文,如下图。
图片: -
物理层
-
数据链路层
相邻两个设备的MAC地址。 -
网络层
本层主要负责将TCP层传输下来的数据加上目标地址和源地址 -
传输层
主要关注传输层中内容,flag。
2.TCP3次握手
图片:
第一次握手:客户端向服务器发送一个SYN段(表示发起连接请求),并且包含客户端的一个初始序列号seq=0
第二次握手:服务端返回一个ACK(对客户端连接请求的应答)+SYN(表示服务端发起连接请求),并且包含服务端的一个初始序列号seq=0,同时返回一个确认号ack=1
第三次握手:客户端给服务端返回一个ACK(对服务端连接请求的应答),并更新自己的序列号seq=1,返回一个确认号ack=1
3.TCP传输过程分析
- 常说TCP是可靠性的传输协议,那么它是如何实现可靠性的数据传输呢,就是通过序列号和确认应答提高可靠性
- wireshark报文指令
- 过滤3次握手指令
(tcp.flags.syn == 1) or (tcp.seq == 1 && tcp.ack == 1 && tcp.len == 0 && tcp.analysis.initial_rtt) - 过滤IP,如来源IP或者目标IP等于某个IP
ip.src eq 地址 or ip.dst eq 地址
或者 ip.addr eq 地址 - 过滤端口
tcp.port == 80 // 不管端口是来源的还是目标的都显示
tcp.srcport == 80// 只显tcp协议的来源端口80
tcp.dstport == 80// 只显tcp协议的目标端口80 - 包长过滤
udp.length == 26 这个长度是指udp本身固定长度8 加上udp下面那块数据包之和
tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后。
- 过滤3次握手指令
4.TCP4次挥手分析
5.参考连接
链接: link