TCP协议和UDP协议大家应该都听说过。 TCP协议和UDP协议都工作在传输层,它们的目标都是在应用程序之间传输数据。 我们常用的网络通信,如浏览网页、查收邮件、电话通信等,都是使用这两种协议进行数据传输。
01.TCP和UDP的区别
这两个协议有什么区别? 它们是如何工作的? 跟着文档君往下看~
TCP协议和UDP协议的核心区别是什么? 看看下图你就知道了。
在直观感受了TCP协议和UDP协议的区别之后,我们来看看TCP协议是如何工作的?
02. TCP是如何工作的?
TCP通信的连接管理机制(可靠机制)总结如下:三次握手建立连接,四次握手断开连接。
TCP是面向连接的协议,所以每次请求都需要对方确认。 TCP客户端和TCP服务器在通信前需要完成三次握手,才能建立连接。
第一次握手
目的:这是一个请求建立连接的数据包。 客户端首先向服务器发送一个同步数据包。
数据包的TCP头内容:
第二次握手
目的:服务器收到客户端发送的第一个数据包后,判断为主动建立连接的数据包。 如果服务器同意连接,服务器将发送一个数据包作为响应。
数据包的TCP头内容:
第三次握手
目的:客户端收到服务器的确认后,向服务器发送一个数据包。
数据包的TCP头内容:
尖端
在客户端和服务端传输的TCP数据中,双方的序号seq和确认号ack的值是根据对方的seq和ack值计算出来的,保证了TCP数据传输的连续性. 一旦某一方发送的TCP数据丢失,就无法继续“握手”,从而保证了“三次握手”的顺利完成。
在采集结束时,有时,在数据传输完成后,TCP客户端和TCP服务器需要通过四个会话断开连接。 这个过程称为四次挥手。
第一波
目的:客户端向服务器发送连接释放请求包,停止发送数据。
在连接释放数据包的 TCP 头中:
第二波
目的:服务器收到连接释放报文后,向客户端发送确认报文。 因此,-to-方向的连接被释放,此时TCP连接处于半关闭状态。 半关闭是因为客户端不能再向服务器发送数据,半开放是因为服务器仍然可以向客户端发送数据并被其接收。
在服务端发送给客户端的确认报文的TCP头中:
第三波
目的:如果服务器已经停止向客户端发送数据,则释放连接并向客户端发送确认消息。
在确认消息的 TCP 标头中:
第四波
目的:客户端收到服务器的连接释放报文段后,向服务器发送确认报文。
在确认消息的 TCP 标头中:
了解完TCP,我们再了解一下UDP是怎么工作的~
03.UDP是如何工作的?
UDP协议是无连接的,即在发送数据之前不需要建立连接(没有TCP协议复杂的三次握手和四次握手过程)。 发送数据就是简单的封装数据包,然后从网卡发送出去。 包之间没有状态连接。 UDP协议基本上是IP协议和上层协议之间的接口。 UDP协议利用IP层提供的服务,将应用层获得的数据从一台主机的应用进程传送到另一台主机的应用进程。
举个栗子~
当传输层收到来自IP层的UDP数据包时,根据UDP数据包包头中的目的端口,将UDP数据包通过相应的端口传递给应用进程,如下图所示。
如上图,应用进程4和端口2,如果接收方UDP发现收到的报文中的目的端口号不正确(即没有该端口号对应的应用进程),报文就会被丢弃并由 ICMP“端口不可达”错误消息发送给发送方。
尖端
ICMP(, )是TCP/IP协议族的一个子协议,用于在IP主机和路由器之间传递控制消息。 控制消息是指网络本身的消息,如网络是否不可达、主机是否可达、路由是否可用等。
04.总结
数据传输看似简单,其实很智能~
TCP和UDP是为程序服务的,但是程序和人是一样的。 可以过来聊聊,也可以聊聊天。 TCP 就是关于彼此之间诚实的通信。 消息是否收到,收到的信息是否一致,可以及时反馈。
优点:可靠。
缺点:传输速度慢。
适用场景:通讯软件的账号登录、支付等相关功能,使用可靠的TCP。
UDP在说话,我不管你听不听,不管你有没有反馈,我都会一直说下去。
优点:传输速度快。
缺点:不可靠。
适用场景:QQ、微信等即时通讯软件进行点对点通讯,或者音视频通话,通常使用UDP,传输速度快。
TCP和UDP各有优缺点,就看你的实际需求了~
更多TCP干货请戳三向握手四次挥手,原来TCP这么客气!
05.测验
如何将UDP从不可靠传输变为可靠传输?
为什么TCP是三次握手而不是两次或四次?
为什么是四波而不是三波?
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。