Featured image of post TCP&TLS握手抓包分析

TCP&TLS握手抓包分析

1.TCP抓包分析

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

image-20240321164322215

接下来着重分析一条连接的建立,以53608端口建立的连接为例进行分析。

筛选出53608端口相关的网络数据包

image-20240321173008741

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

image-20240321165601173

标志位SYN为1表示希望建立连接,并且会设置初始序列号。可以看到第一次握手客户端发出的数据包是有随机生成的序列号238847144

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

image-20240321165854186

第三次握手数据包:

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

image-20240321175555442

2.TLS握手抓包分析

TCP连接建立后就能够进行TLS握手

客户端发起第一次握手:

客户端发送Client Hello,确定TLS版本,并且携带生成的随机数和支持的密码套件,密码套件的命名规则「密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法

image-20240321181132954

第二次握手:

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

image-20240321181348112

这里有点疑惑?Server Hello 后并没有把证书发给客户端?

重新抓了一次包,这次正常了。上面可能抓包没抓全?

image-20240321190245768

第一次握手:

image-20240321190515885

第二次握手:

image-20240321190536105

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

image-20240321190630684

第三次握手:

image-20240321190737733

第四次握手

image-20240321190807901

Licensed under CC BY-NC-SA 4.0