Wireshark分析tcp三次握手HTTP请求过程以及四次挥手

这里介绍一下,使用Wireshark抓包来看,tcp三次握手HTTP请求过程以及四次挥手。上面几个过程具体就不介绍了,大家可以去其他博文查看,这里使用wireshark来分析,主要目的是对以往学习的知识进行一次考验以及加固,顺便可以学习一下wireshark,有些时候遇到http请求失败啊什么的情况下,有可能是tcp层出现的问题,就必须要使用wireshark来进行分析了。大花瓶已经无能为力了。

1.Wireshark分析tcp三次握手

这里看下No.83 85 86三条记录,这三条记录就是TCP的三次握手的三次消息收发过程。这里客户端使用的端口是49212,服务端的端口是80

首先分析No.83

从详情中可以看到,它的seq = 0,ack = 0 ,Flags = SYN,客户端发送给服务端请求建立连接,也就是第一次握手。

然后分析一下No.85

这里可以看到seq = 0, ack = 1, 正常情况下 ack = 对应收到消息seq + 消息长度len,但是上一条消息No.83长度是0,所以就是+1(这是我猜的)这个是服务端返回给客户端的SYN+ACK,表示收到客户端的消息了,然后又请求客户端建立连接。

再分析一下No.86

这里可以看到seq = 1, ack = 1 Flags = ACK是最后一次握手,客户端返回给服务端,表示自己已经收到服务端的消息了,也就是连接正式建立完毕。这三个消息完成后,tcp连接正式建立起来了,后面要收发消息,都可以走这条链路。

2.Wireshark分析HTTP请求过程

这里来看No.88 - No.98的记录,这个请求是一个GET请求,是像服务端请求一个web页面,也就是会返回HTML文件,所以会比较大,这里就涉及到包拆分过来发送

首先看到No.88

seq = 1, ack = 1 ,len = 800, Flags = PSH,ACK, 它是一条http请求类型的记录,PSH表示的是发送数据,也就是客户端像服务端请求数据。

再来看No.91 92 94 95

No.91 92 94 95这几条是比较类似的,都是服务端发给客户端的tcp消息,里面的body就是web页面html的内容,每一个包包含一部分html,这个拆包过程又底层完成。这里以No.91为例seq = 1 ack = 801(这里的801其实就是No.88中seq+len, 1 + 800 = 801,这里就是能知道,我这个No.91就是回复No.88的 ) len = 1448 然后这里还有一个next seq = 1449(这个是拆包特有的,因为一个包发不全,所以为了把包连起来,seq2 = seq1 + len)

再来看看No.92 seq = 1449 ack = 801跟之前猜测的一样,其他几个就不打开来看了。

再来看No.93 96 98

这里看到seq = 801 ack = 2897(也就是No.92的seq+len 1449+1448 = 2897)这样就证实了No.93是No92的回复。这里有个疑问就是,No.91的回复去哪里了呢,需要注意的是,tcp协议里面,回复了后面的就默认前面的消息也收到了,因为tcp是有重传协议的。

最后需要注意的是这个No.97(他的回复是No.98)

No.97和No.91 92差不多,只不过它是最后一条片段,seq = 5793 ack = 801 len = 1363(比之前No.91 92 len = 1448要短,说明数据已经完整了。)客户端收到这条消息后,就会把之前的No.91 92 94 95 97这几条组装起来,组装成一个包返回给http应用层,这个时候,你就能看到完整的网页了。

3.Wireshark分析tcp四次挥手

在经过一段时间之后,tcp连接就会自动断开,但是断开过程,也是通过收发tcp消息来完成的。

这里首先No.8270

是由客户端发起断开的请求,这里看到seq = 1638 Flags = FIN(这个表示的就是需要断开连接) len = 0

然后看No.8274

这个是服务端返回客户端的ack, ack = 1639(也就是No.8270 seq + 1)表示服务端收到客户端的断开请求

还有No.8276是服务端发给客户端断开连接的请求,然后No.8278是客户端回复的ack,分析原理是一样的。到目前为止tcp连接就彻底断开了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值