TCP连接

1、三次握手

在这里插入图片描述

1.1 为什么要三次握手

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

  • 第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
  • 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
  • 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常

1.2 传了 SYN,为啥还要传 ACK

双方通信无误必须是两者互相发送信息都无误。传了 SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要 ACK 信号来进行验证。

2、四次挥手

在这里插入图片描述
第一次,表示client不会发送了,关闭发送通道
第二次,表示server知道了,关闭接受通道
第三次,表示server不会发送了,关闭发送通道
第四次,表示client不会接受了,关闭接受通道

3、Time_Wait问题

当服务器主动断开一个连接时,该端口还会占用2*MSL(TCP包的最大存活时间)的时间,在这个时间段内该端口处于关闭状态,可想而知,如果并发量急剧增加,极容易发生端口耗尽问题,比如说如果Time_Wait=60,端口总数为63500,那么如果 QPS(每秒查询率——Queries-per-second) >= 63500/60,必然会发生端口耗尽问题。
——解决方案:在网络延迟低的情况下,降低Time_Wait的时间;另外可以将连接改为长连接

【为什么会出现Time_Wait问题】
Time_Wait的目的是为了避免因为网络延迟造成数据混乱的问题,比如说因为延迟,前一个连接的数据在后一个连接才到来,此时便无法分辨到底是哪一次的数据。所以加了Time_Wait后,如果超过这个时间段,延迟数据一定会被丢弃,就不会造成数据混乱了。

4.状态变迁图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值