一、WireShark简介
二、简单使用
下面以Mac版Wireshark为例介绍下如何去用它抓取网络请求的。
上面是Wireshark在抓包界面上具体的功能区域介绍,以便于我们在数据流过来的时候能够知道怎么去查看。
三、接口筛选
nslookup name.tgs-dev.tap4fun.com
从上图来看,解析的IP地址为172.20.90.129,接下来就要在Wireshark抓包界面里输入过滤语句:
ip.addr == 172.20.90.129
此时Wireshark处理监听状态等待172.20.90.129这个服务器上下行的数据,然后打开postman发送一条Post请求,此过程可以用下面的动图来展示。
四、TCP的3次握手
通过上述的步骤可以完整的记录一个请求发送后,客户端和服务端之间的交互过程。
首先就是和服务器建立连接,建立连接的过程可以抽象为TCP的3次握手,具体过程下面就拿某一个接口下的报文列表来举例说明:
第一次握手:
第二次握手:
第三次握手:
五、TLS协商过程
TLS介绍:
TLS全称Transport Layer Security,传输层安全的缩写,是网络传输协议中的一种(加密的)。
通过下面的报文列表中我们可以看到一个TLS建立起来需要经历如下几个步骤:
Client Hello:
这个过程是由客户端发起的,里面包含了TLS协议的版本号,一个随机数(用于生成会话密钥),以及客户端这边所支持的加密算法。
Server Hello:
这个过程是由服务端发起的,将服务端使用的TLS协议版本、生成的一组随机数以及确认要使用的加密算法一起发送给客户端。
Certificate:
这个时候服务端要把证书发给客户端,用于验证服务端的身份。并且在Server Key Exchange中,规定了服务端和浏览器是通过Diffie-Hellman算法来生成pubKey的,这个pubKey后续和客户端交换要用到。
Client Key Exchange:
当客户端这边收到上一步服务端发来的Certificate后,并且运行服务端发来的Diffie-Hellman算法生成了一个公钥pubKey。
Change Cipher Spec Message:
这一步是客户端将上面生成的pubKey和服务端进行交换。
Encripted Handshake Message:
这一步是将交换过来的pubKey生成一个sessionKey,这个sessionKey是保证通信安全的。
Change Cipher Spec,Encrypted Handshake Message:
其实完成上述的步骤后,TLS已经建立起来了的。这一步我觉得应该是每隔一段时间就需要变更一次加密方式,以保证安全传输。(具体是不是这个原因我还不太确定)
最后前后端建立了安全连接后就可以发送数据了,也就是后续的Application Data数据包了。