【计算机网络】传输层——多方面比较TCP和UDP的区别

说起传输层,大家不免会直接想到TCP和UDP。大家都知道TCP和UDP是有区别的,但是究竟区别有多大呢?和我一起从下面五个方面看看吧。

  1. TCP与UDP 传输的异同
  2. TCP和UDP 套接字编程流程图
  3. UDP和TCP 协议通讯过程
  4. TCP和UDP 协议段格式
  5. 基于TCP和UDP 的应用层协议

1.TCP与UDP传输的异同

相同:都是传输层协议,可以进行网络间全双工通信
不同:

TCP UDP
面向链接 无链接
可靠传输 不可靠传输
面向字节流 面向数据报
用于保证可靠性传输的情况,应用文件传输,重要状态更新等 用于对高速和实时性传输较高的通信领域,应用于早期QQ,广播等

TCP和UDP 之间各有优缺点,我们不能完全说TCP优于UDP,具体场景具体判断。

2. TCP和UDP套接字编程流程图

UDP

因为UDP是无连接的,所以在使用网络套接字进行编程时,客户端不用发起connect -建立连接请求,服务器也就无需listen -监听和accept -接收请求。
UDP的无连接,也就意味它必须使用sendto 和 recvfrom 指定获取数据的地方。

TCP

因为TCP是面向链接的,所以在使用网络套接字进行编程时,客户端必须主动发起connect -建立连接请求,而服务器要listen -监听和accept -接收请求。
由于TCP已经建立连接,所以可直接用send/write和recv/read获取数据即可。
在这里插入图片描述

3. UDP和TCP协议通讯过程

udp 通讯: 使用udp协议通讯无需连接,所以客户端只要知道服务器的IP+端口号就能直接进行发送数据,且不关心对方是否收到。使用UDP通信的过程类似寄信
tcp 通讯: 使用tcp协议通讯时,要经过三次握手建立连接,连接建立成功才能发送数据并关心结果,关闭连接时要经过四次挥手。使用TCP通信的过程类似打电话

具体过程,我在下篇博客中进行了详解,想了解的可以戳链接:面试官为啥总问TCP

4. TCP和UDP 的协议段格式

UDP 协议段格式

在这里插入图片描述

  • 16位UDP长度即整个数据报的最大长度=UDP首部+UDP数据
    因为UDP 是面向数据报的,所以此段可以保证UDP报文的独立性
    它必须一次接收应用层交付的数据,如果有需要应由应用层负责手动分包并发送
  • 如果校验和出错,就会被直接丢弃
  • UDP的缓冲区
    它没有真正意义上的发送缓冲区,调用sendto时内核会直接交付给下层处理
    它具有接收缓冲区,但由于写方是直接写入,所以读方必须以报文为单位读取数据
  • UDP的分包和分用
    通过定长首部进行有效载荷分离,根据目的端口号进行分用
    有效载荷大小 = UDP长度 - 首部长度 面向数据报所以有明显边界

TCP 协议段格式

在这里插入图片描述

  • 6位标志位 - - 在上图中,我们有6个标志位还没讲:

URG:表示紧急指针是否有效,与下面紧急指针配合,可以标识紧急数据
ACK:表示确认号是否有效,建立连接后传送的报文此字段必设置为1
PSH:提示接收端应用程序立即将TCP缓冲区内数据读走
RST:请求重新建立连接,称复位报文段
SYN:请求建立连接,称同步报文段
FIN:关闭连接,称结束报文段

  • TCP 的缓冲区
    它有由OS创建的发送缓冲区,使得写入的数据在合适的时机发送(保证效率)
    它有接收缓冲区,但由于不知道写方写入方式,所以可以以字节为单位的方式读取
  • TCP 的分包和分用
    通过定长报头进行有效载荷的分离,根据目的端口号进行数据分用。
    有效载荷的大小:不确定 面向字节流
  • TCP既能保证可靠性,又尽可能的提高了性能

具体原因:我在面试官为啥总问TCP中详细讲到了,这里就不赘述了。

5. 基于TCP 和UDP 的应用程序协议

基于UDP 的应用层协议

NES:网络文件系统
TFTP:简单文件传输协议
DHCP:动态主机配置协议
BOOTP:启动协议(无盘设备启动)
DNS:域名解析协议
其他使用UDP程序自定义的应用层协议

基于TCP 的应用层协议

HTTP:超文本传输协议,端口号80
HTTPS:超文本传输安全协议,端口号443
SSH:安全外壳协议
Telnet:远程终端协议
FTP:文件传输协议
SMTP:简单邮件传输协议
其他使用TCP程序自定义的应用层协议

博主关于TCP和UDP的理解都在上面啦,我认为比较着记忆会更深刻一点,你们觉得呢?
有问题及时留言,没问题记得关注博主哈

猜你喜欢

转载自blog.csdn.net/ly_6699/article/details/100061749