TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

百度安全验证

TCP三次握手

 

(1)序号(sequence number):seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

(2)确认号(acknowledgement number):ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。

(3)标志位(Flags):共6个如下:

ACK:确认序号有效。

SYN:发起一个新连接。

FIN:释放一个连接。

确认序号ack=发起方seq+1

过程:

1、标志位:SYN=1,序号:seq=x,状态:SYN-SENT

2、标志位:SYN=1,ACK=1,序号:seq=y ,ack=x+1 ,状态:SYN-RCVD

3、标志位:ACK=1,序号:seq=x+1,ack=y+1 ,状态:ESTABLISHED

四次挥手

 

过程:

1、标志位:FIN=1,序号:seq=u,状态:FIN-WAIT-1

2、标志位:ACK=1,序号:seq=v,ack=u+1,状态:CLOSE-WAIT

3、标志位:FIN=1,ACK=1,序号:seq=w,ack=u+1,状态:LAST-ACK

4、标志位:ACK=1,序号:seq=u+1,ack=w+1,状态:TIME-WAIT

服务端进入CLOSED

客户端等待2MSL后进入CLOSED

MSL:TCP报文在传输过程中的最大生命周期

服务器端在1MSL内没有收到客户端发出的ACK确认报文,就会再次向客户端发出FIN报文;

如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,说明服务器端由于各种原因没有接收到客户端发出的ACK确认报文。客户端再次向服务器端发出ACK确认报文,计时器重置,重新开始2MSL的计时;

HTTP版本区别

1996年 HTTP/1.0

短连接(一次TCP连接,只能处理一个HTTP请求,完成就断开,时间耗费在不断的建立连接和断开连接上)

支持GET、POST、 HEAD请求

1999年 HTTP/1.1

长连接(connection:keep-alive)

一个TCP连接可以处理多个http请求,支持PUT、DELETE、PATCH等更多的请求

但也是有上限的,Chrome浏览器向同一个域名下的请求最多6个

2015年 HTTP/2.0

连接数不受限制

双向通信,服务端可以主动push

将请求和响应数据分割为更小的帧,并且它们采用二进制编码进行传输,而不是文本格式

header压缩,效率更高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值