传输层TCP相关知识

为什么三次握手?


不采用2次: 避免服务端收到过时的请求。
这是为了防止超时重传的无效的连接请求报文到达B服务机。
    1. 因为有可能A先发了一个连接请求报文,但是由于网络的1问题,迟迟没有到达B主机,这时候,A主机就超时重传了该报文,然后B主机响应了该请求报文,但是不妙了,第一个报文居然又到了B主机,那么B主机就会把它作为新的连接请求,
        a. 如果只有两次握手,那么B主机对于该连接请求也会建立连接,
        b. 但是如果是三次握手,B主机发出确认报文后,A主机不予理睬,这样就不会建立TCP连接了。
所以说只有当三次握手完成,也就是A主机发出确认报文的时候,双方主机才会进入ESTABLISHED状态。
 

四次放手?

为什么最后要等一个TIME_WAIT时间呢?
    1. 一:为了保证最后一个ACK能够到达B,防止丢失了,B重传,A不能回复确认。
二是为了防止之前提到的“已经失效的连接请求报文段“出现在连接中”。A发送完最后一个ACK,再经过时间2MSL,可以使本连接产生的所有请求报文从网络中消失。

长连接

为什么要⻓连接?有些场景需要不断开,比如两人需要保持连接聊天、更常见的是消息推送。
因为移动⽹络并不在 Internet 中,⽽是在运营商的内网,并不具有真正的公网 IP,因此当某个 TCP 连接在一段时间不通信之后,⽹关会出于⽹络性能考虑⽽关闭这条 TCP 连接和公⽹的连接通道,导致这个TCP端⼝不再能收到外部通信消息,即 TCP 连接被动关闭。


⻓连接的实现方式?
心跳。即在一定间隔时间内,使用 TCP 连接发送超短无意义消息来让⽹关不能将⾃⼰定义为「空闲连接」,从而防止⽹关将⾃⼰的连接关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值