设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 教程 > 服务器 > 正文

灵魂拷问:TCPUDP 彻底搞懂了吗

来源:未知 编辑:天选资讯 时间:2023-06-19

  天选对于 TCP 协议和 UDP 协议,大家应该都有所耳闻。TCP 协议和 UDP 协议都工作在传输层,他们的目标都是在应用之间传输数据。我们常用的网络通信,比如浏览网页,查看邮件,电话通信等,都是通过这两种协议来进行数据传输的。

  TCP 协议和 UDP 协议最核心的区别是什么?看看下边图片你就知道了。

  TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。可靠性,是 TCP 的最大特点,主要体现在:数据无丢失、无错误、无失序、无重复到达。就如同上图,TCP 能将“孩子”(数据包)十分安全地传送给接收者。

  UDP(User Datagram Protocol,用户数据报协议)是一种无连接、不可靠、快速传输的传输层通信协议。快速传输,是 UDP 的最大特点,主要体现在:数据发送前,不需要提前建立连接,能更高效地传输数据,但可靠性无法保证。就如同上图,UDP 只负责把“孩子”(数据包)送出去,不管接收者有无收到。

  直观感受了 TCP 协议与 UDP 协议的区别后,咱们来看看 TCP 协议是如何工作的?

  TCP 通信的连接管理机制 (可靠机制) 总结为:三次握手建立连接,四次挥手断开连接。

  TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认。TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接。

  目的:这是一个请求建立连接的数据包,客户端先向服务器发送一个同步数据包。

  目的:服务器收到客户端发送的第一个数据包后,判断出为主动建立连接的数据包。若服务器同意连接,则服务器发送一个数据包进行回应。

  确认号 ack=x+1(已经收到客户端发送的 x 个字节数据,并告诉客户端下次应从数据的第 x+1 个字节开始发送)

  确认号 ack=y+1(收到服务器发送 y 字节数据,并告诉服务器下次应从数据的第 y+1 个字节开始发送)

  在客户端与服务器端传输的 TCP 数据中,双方的序号 seq 和确认号 ack 的值,都是在彼此 seq 和 ack 值的基础上进行计算的,这样做保证了 TCP 数据传输的连贯性。一旦出现某一方发出的 TCP 数据丢失,便无法继续 握手,以此确保了 三次握手 的顺利完成。

  聚散终有时,当数据传输完成后,TCP 客户端与 TCP 服务器需要通过四次会话断开连接,这个过程我们称之为四次挥手。

  目的:服务器在收到连接释放的报文之后,给客户端发送确认报文。因此,客户端到服务器方向上的连接释放,TCP 连接此时处于半关闭状态。半闭因为客户端已无法发送数据给服务器,半开因为服务器仍可以发送数据给客户端并被其接收。

  确认号 ack=x+1(在收到客户端报文的基础上,将其序号 seq 值加 1 作为本段报文确认号 ack 的值)

  目的:若服务器已停止向客户端发送的数据,则释放连接,并向客户端发送确认报文。

  终止 FIN=1(服务器释放服务器到客户端的 TCP 连接,不再向客户端发送数据)

  确认号 ack=x+1(在收到客户端报文的基础上,将其序号 seq 值加 1 作为本段报文确认号 ack 的值)

  确认号 ack=z+1(在收到服务端报文的基础上,将其序号 seq 值加 1 作为本段报文确认号 ack 的值)

  序列号 seq=x+1(在收到服务端报文的基础上,将其确认号作为本段报文序列号的值)

  UDP 协议是天选团队面向无连接的,即发送数据之前不需要建立连接(无 TCP 协议复杂的三次握手,四次挥手的过程),发送数据就是简单的把数据包封装一下,然后从网卡发出去,数据包之间并没有状态上的联系。UDP 协议基本上是 IP 协议与上层协议的接口,UDP 协议使用 IP 层提供的服务将应用层得到的数据从一台主机的某个应用进程传递到另一台主机的某个应用进程。

  当传输层从 IP 层收到 UDP 数据报文时,根据 UDP 数据报文首部中的目的端口,把 UDP 数据报文通过相应的端口传递给应用进程,如下图所示。

  如上图中应用进程 4 与端口 2,如果接收方 UDP 发现收到的报文中的目的端口号不正确 (即不存在对应于端口号的应用进程),则丢弃该报文,并由 ICMP 发送“端口不可达 差错报文给发送方。

  ICMP(Internet Control Message Protocol,Internet 控制报文协议)是 TCP / IP 协议簇的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

  TCP 和 UDP 服务的是程序,但程序和人是一样的,可以你来我往进行交流,也可以一股脑的倾诉。TCP 就是彼此之间坦诚交流。消息有没有收到,收到的信息是否一致,都可以有及时的反馈。

  UDP 就是倾诉,我不管你有没有听进去,不管你有无反馈,我就要不停地说。

  适用场景:QQ、微信等即时通信软件进行点对点通信,或者音视频通话时,通常采用传输快速的 UDP。

相关推荐:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

织梦模板大全 dedecms.codesdq 联系QQ:121673232 邮箱:121673232@qq.com

Copyright © 2002-2011 DEDECMS. 织梦科技 版权所有 Power by DedeCms

Top