开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
一、为什么 TCP 连接需要三次握手四次挥手
1.为什么是三次握手?
为了防止已失效的连接请求报文段突然有送到了服务器,因而产生错误,假设两次握手时,客户
发出的第一个请求连接报文段在某一网络节点长时间滞留,以致延误到连接释放后才到达服务
器。服务器收到失效的连接请求报文段后,认为是客户又发出一次新的连接请求。于是向客户
发送确认报文段,同意建立连接,此时在假定两次握手的前提下,连接建立成功。这样会导致
服务器的资源白白浪费
2.为什么是四次挥手?
TCP 协议是全双工通信,这意味着客户端和服务器端都可以向彼此发送数据,所以关闭连接是
双方都需要确认的共同行为,假设是三次挥手时,首先释放了客户到服务器方向的连接,此时
TCP 连接处于半关闭状态,这时客户不能向服务器发送数据,而服务器还是可以向客户发送数
据。如果此时客户收到了服务器的确认报文段后,就立即发送一个确认报文段,这会导致服务
器向客户还在发送数据时连接就被关闭。这样会导致客户没有完整收到服务器所发的报文段
二、TCP 与 UDP 的区别有哪些
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流
的传输层通信协议
UDP(User Datagram Protocol 用户数据报协议)是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
TCP 是面向连接的传输控制协议,而 UDP 提供了无链接的数据报服务//类似电话与短信
TCP 面向连接,提供可靠的数据服务
TCP 首部开销 20 字节,UDP 首部开销 8 字节
TCP 逻辑通信信道是全双工的可靠信道,UDP 则是不可靠信道
UDP 没有拥塞机制,因此网络出现拥堵不会使源主机的发送效率降低(有利于实时会议视频等)
TCP 的连接只能是点到点的,UDP 支持一对一,多对一,多对多的交互通信