什么是TCP协议?

TCP(Transmission control protocol)及传输控制协议,是一种面向链接可靠的数据传输协议,它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一种传输协议。

1.面向链接:数据传输之前客户端和服务器端必须建立连接

2.可靠的:数据传输是有序的 要对数据进行校验

三次握手

1.连接需要你情我愿 双方进行连接的事情不能强迫,如果是两次握手,对于服务端来说,我只要发了想和你链接的请求后,对我来说,链接就已经建立,我就可以开始向你传输信息,这是不对的,如果对方不同意呢!所以我们必须征求对方同意之后才能进行连接,也就是等待第二次握手到达,发送第三次握手信息时。

2.避免堆积的垃圾消息捣乱 官方的语言就是:已失效的链接请求报文段,突然又传到了客户端,因而产生错误,在网络世界的传输过程中,丢包、延迟是很常见的事情,所以我们所有的协议都要考虑到最坏的情况,当网络堵塞服务端的连接请求没有收到回应时,我们会持续发送连接请求,当网络恢复正常建立连接后,之前旧的请求可能会源源不断地到达服务端,如果两次握手就能建立连接,那么服务端会以为是新请求,从而建立了很多并不存在的链接。

TCP建立链接过程

TCP四次挥手

四次挥手

1.为什么TCP挥手需要四次?

当女神向你提出分手,如同握手而言,第一次挥手也就是女神提分手的信息

①如果你给女神买的礼物还没到货,这时你肯定想等礼物都到货了再分手,你会跟女神说,再等等,等礼物都到货了我再告诉你,那时候再跟我分手,这就是第二次挥手,过了几天物流都到货之后,你主动和女神说,久等了,你的礼物到货了,我们分手吧!这就是第三次挥手,当女神收到消息,把你拉黑就是第四次挥手

②当你没给女神买礼物,你可以直接跟女神说,分手吧,你是我谈过的几个中事最多的,这样就把上述的第二、三次挥手合并了,当女神收到消息,把你拉黑时就,恭喜分手成功,在TCP世界中,如果客户端在得知在得知要断开时,可能还有没法送完的消息,所以需要四次挥手,留一个缓冲期,真正的断开时间等客户端发完数据后告知,如果没有消息要发了,那么客户端直接告知,将第二、第三次挥手合并成一条消息

TCP四次挥手流程图

TCP四次挥手