三次握手,四次挥手,原来TCP这么有礼貌!
当我们与他人交谈时,我们需要遵循一定的规则,例如确保对方能够理解我的语言如果你和一个不懂中文的外国人说中文,是不可能很好沟通的
计算机之间的通信也是如此,必须遵循一定的规则才能顺利通信。
什么是TCP和UDP。
在TCP/IP协议栈中,TCP和UDP是传输层的两个协议我们平时刷视频,玩游戏,看新闻都是用这两种协议来传输数据的
那么这两个协议有什么区别呢。
Tcp差异
面向连接
可靠的
提供流量控制
仅支持一对一的通信
非面向连接
不可靠的
不提供流量控制。
支持一对一,一对多,多对一,多对多通信。
优点:数据传输安全可靠,传输速度快,占用资源少。
看了上表,是不是还是有点别扭下面小编用一个比喻告诉你两者的区别
按照地址寄信就行了,也就是不需要建立联系,不知道对方能不能收到发过来的信,不靠谱。
为了保证传输文件的完整性,TCP会根据接收方的接收速率来控制发送方的发送速率,即实现流量控制,所以TCP的传输速度低于UDP。
两种协议没有区别,都有各自适合的应用场景。
比如传输文件的时候,对速度没有要求,但是要保证文件完整送达,不丢失数据这时候应该采用TCP协议我们视频聊天时,时效性要求高但准确性要求略低,所以采用UDP协议
计算机之间的通信也是如此,必须遵循一定的规则才能顺利通信。
TCP的三次握手
在传输数据之前,两台主机需要通过三个会话建立连接这个过程称为三次握手
第一次握手:客户端请求服务器建立连接,
SYN=1,
seq=x,
客户端进入同步发送状态。
第二次握手:服务器向客户端返回确认,并请求建立连接,
SYN=1,
ACK=1,
ack=x+1,
序列=y,
服务器进入同步RCVD状态。
三次握手:客户端向服务器发送确认消息,
ACK=1,
ack=y+1,
序列=x+1,
三次握手完成后,就可以在两台主机之间传输数据了~
TCP的四次浪潮
当数据传输完成后,两台主机需要通过四个会话断开连接,这个过程我们称之为四波。
第一波:客户端请求服务器断开连接,
FIN=1,
seq=u,
客户端进入FIN_WAIT_1状态。
第二波:服务器向客户端返回确认消息,
ACK=1,
ack=u+1,
seq=v,
服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。
第三波:服务器完成数据传输后,向客户端发送断开请求。
FIN=1,
ACK=1,
ack=u+1,
seq=w,
服务器进入LAST_ACK状态。
第四波:客户端向服务器返回确认消息,
ACK=1,
ack=w+1,
seq=u+1,
客户端进入TIME_WAIT状态,服务器进入CLOSED状态。
当客户端处于TIME_WAIT状态时,TCP连接尚未释放等待2个MSL后,客户端进入关闭状态
看到这里,相信你还有一些疑问以下是边肖的一些回答
为什么是三次握手握手两次四次不行吗
如果是两次握手,可能会出现以下情况。
客户端发送建立连接的请求,但由于网络拥塞,响应被延迟客户端再次发送连接请求,服务器响应,连接建立
一段时间后,客户端第一次发送的连接请求到达服务器,服务器认为客户端再次请求建立连接此时服务器会返回响应消息,保持等待连接的状态,造成资源浪费,如下图所示
为什么不握手四次。
四次握手也可以达到三次握手的效果,即把原来的第二次握手拆分成两次,一次发送确认消息,一次单独发送连接请求消息,但这也造成了资源的浪费,如下图所示所以最终决定通过三次握手建立连接
为什么不能挥四次,挥三次。
你不能当客户端在发送完断开请求后停止发送数据,有可能此时服务器还有数据要发送给客户端,所以会先发送确认消息,在发送完所有数据后再发送断开消息通知客户端可以断开
四波过后,客户端为什么不立即关闭。
客户端没有立即关闭,而是进入了TIME_WAIT状态等待2 MSL后,客户端进入关闭状态这是为了确保第四次发送的确认消息到达服务器
如果服务器在规定时间内没有收到最终确认消息,会第三次再次挥手请求断开,客户端会重新发送确认消息,如下图所示。
MSL是一条消息的最长生存期,两个MSL是两条消息在网络中往返所需的最长时间如果超过这个时间,客户端没有收到再次断开连接的请求,说明已经成功完成了四波,可以断开连接了
摘要
今天到此为止。让我们和边肖一起回顾今天的内容:
TCP和UDP是传输层的两种协议TCP安全可靠,但传输速度慢UDP速度很快,但数据可能会丢失这两种协议各有优势,适用于不同的应用场景
连接和断开两个主机的过程称为三次握手和四波。
明白为什么一定要三次握手,四次挥手。
我相信通过今天的学习,当将来被问到TCP和UDP的时候,每个人都可以用侃侃语交谈。
。郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。
编辑:醉言