TCP通信的连接管理机制(可靠机制)总结为:三次握手建立连接,四次挥手断开连接。
(资料图片)
< 三次握手建立连接 >
TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认。TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接。
第一次握手
目的:这是一个请求建立连接的数据包,客户端先向服务器发送一个同步数据包。
数据包的TCP首部内容:
第二次握手
目的:服务器收到客户端发送的第一个数据包后,判断出为主动建立连接的数据包。若服务器同意连接,则服务器发送一个数据包进行回应。
数据包的TCP首部内容:
第三次握手
目的:客户端收到服务器的确认之后,再给服务器发送一个数据包。
数据包的TCP首部内容:
< 四次挥手断开连接 >
聚散终有时,当数据传输完成后,TCP客户端与TCP服务器需要通过四次会话断开连接,这个过程我们称之为四次挥手。
第一次挥手
目的:客户端向服务器发送连接释放的请求数据包,并停止发送数据。
在连接释放数据包的TCP首部中:
第二次挥手
目的:服务器在收到连接释放的报文之后,给客户端发送确认报文。因此,客户端到服务器方向上的连接释放,TCP连接此时处于半关闭状态。半闭因为客户端已无法发送数据给服务器,半开因为服务器仍可以发送数据给客户端并被其接收。
在服务器发送给客户端确认报文的TCP首部中:
第三次挥手
目的:若服务器已停止向客户端发送的数据,则释放连接,并向客户端发送确认报文。
在确认报文的TCP首部中:
第四次挥手
目的:客户端收到服务器的连接释放报文段后,向服务器发出确认报文。
在确认报文的TCP首部中:
UDP协议是面向无连接的,即发送数据之前不需要建立连接(无TCP协议复杂的三次握手,四次挥手的过程),发送数据就是简单的把数据包封装一下,然后从网卡发出去,数据包之间并没有状态上的联系。UDP 协议基本上是 IP 协议与上层协议的接口,UDP协议使用IP层提供的服务将应用层得到的数据从一台主机的某个应用进程传递到另一台主机的某个应用进程。
举个栗子~
当传输层从IP层收到UDP数据报文时,根据UDP数据报文首部中的目的端口,把UDP数据报文通过相应的端口传递给应用进程,如下图所示。
如上图中应用进程4与端口2,如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于端口号的应用进程),则丢弃该报文,并由ICMP发送“端口不可达"差错报文给发送方。
数据传输看似简单,其实非常智慧~
TCP和UDP服务的是程序,但程序和人是一样的,可以你来我往进行交流,也可以一股脑的倾诉。TCP就是彼此之间坦诚交流。消息有没有收到,收到的信息是否一致,都可以有及时的反馈。
优点:可靠。
缺点:传输速率慢。
适用场景:通信软件的账户登录、支付等相关功能,采用可靠的TCP。
UDP就是倾诉,我不管你有没有听进去,不管你有无反馈,我就要不停地说。
优点:传输速率快。
缺点:不可靠。
适用场景:QQ、微信等即时通信软件进行点对点通信,或者音视频通话时,通常采用传输快速的UDP。
TCP和UDP各有优缺点,就看你实际需求啦~
更多TCP干货,请戳三次握手,四次挥手,原来TCP这么有礼貌!
如何让UDP由不可靠传输转为可靠传输?
TCP为什么是三次握手,而不是两次或者四次?
为什么是四次挥手而不是三次?
请在评论区告诉文档君你的答案!
想第一时间收到我们的更新吗?
只需两步,为文档君加上“爱你一万年”星标⭐!
没有星标,你爱的文档君就要跟你失联啦~