1.TCP抓包分析
下面的请求是访问 www.baidu.com 的抓包信息,截图的部分是TCL建立连接时候的三次握手的请求。图中是分别在客户端的53608和53609建立了两条连接。

接下来着重分析一条连接的建立,以53608端口建立的连接为例进行分析。
筛选出53608端口相关的网络数据包

客户端发出的第一个包详细如下:

标志位SYN为1表示希望建立连接,并且会设置初始序列号。可以看到第一次握手客户端发出的数据包是有随机生成的序列号238847144
下面是第二次握手的报文,可以看到标志位SYN同样为1也表示希望建立连接,也会初始化出一个序列号238847145,同时ACK标志位也设置为1,确认号为第一次握手的数据包的序列号seq+1

第三次握手数据包:
seq=第二次握手的ack(ack就是期待下一次收到数据包的序号),ack=第二次握手的seq+1;

2.TLS握手抓包分析
TCP连接建立后就能够进行TLS握手
客户端发起第一次握手:
客户端发送Client Hello,确定TLS版本,并且携带生成的随机数和支持的密码套件,密码套件的命名规则「密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法」

第二次握手:
服务端发送Server Hello ,服务端确认的版本号,服务端生成的随机数,选择的密码套件。

这里有点疑惑?Server Hello 后并没有把证书发给客户端?
重新抓了一次包,这次正常了。上面可能抓包没抓全?

第一次握手:

第二次握手:

随后服务端立即发送了证书:

第三次握手:

第四次握手

