TCP 与 UDP

0.  tcp 与 udp 的 异同特性

TCP UDP
name 传输控制协议 用户数据报协议
面向连接

需要

  • 传输数据前建立连接
  • 传输完毕后断开连接
不需要
可靠的传输数据?

可靠

有确认机制(三次握手)

  • 有确认、窗口、重传、拥塞控制的机制

保证数据可靠传输

  • 保证数据无差错、不丢失、不重复、有序到达

不可靠

没有确认机制

  • 收到报文后,没有确认收到信息返回

可能会造成问题:

  • 数据丢失
  • 数据非顺序到达
传输的消息有状态

有状态

需要维持复杂的连接状态表

  • 记录消息是否被发送
  • 记录消息是否被接受

无状态

数据传输的形式 面向连续的字节流 面向独立的报文
协议首部开销 20~60 字节 8 字节
服务形式or范围 仅支持 点对点通信 支持  一对一、 一对多、 多对一、多对多通信
如何选择?

一般用于传输准确性要求高场景

  • 文件传输
  • 发送和接受邮件
  • 远程登录

一般用于即时通信

  • 语音
  • 视频
    • 比如看视频少了一两帧区别不大
  • 直播
传输效率

由于TCP 在传输 的时候 ,多了连接、确认、重传等机制

相比TCP传输速率低许多

1. Tcp

1.1 建立与断开连接

(1)tcp三次握手 —— 建立连接

(2)Tcp四次挥手——断开连接

1.2 传输的可靠性保证

        tcp是一种面向连接的、可靠的、基于字节流的传输协议,通过一系列机制来保证数据的可靠传输,主要包括:

1. 超时重传

  • 通过在每个数据包上标记一个序列号,并等待接收方的确认应答
    • 如果一定时间内未收到应答,在设定的超时时间过后,再次发送

2. 流量控制

  • 防止接受过多的数据,导致接收方无法处理
    • 连接的双方都有固定大小的缓冲空间
    • 接受方通过tcp窗口来告知发送方   还有多少缓存空间
    • 使用到了流量控制协议,即 tcp通过滑动窗口来实现
      • 提示发送方控制发送的数据量

3. 拥塞控制

  • 防止发送过多的数据,导致网络拥塞
    • 通过检测网络的拥塞状态(拥塞控制算法)来动态调整发送频率

4. 校验和

  • 如果收到首部和数据的校验和 有差错,则丢弃此报文
    • 端对端的校验和   可以检测到数据在传输过程中的变化

相关推荐

  1. TCPUDP的区别

    2024-05-25 19:36:11       45 阅读
  2. TCPUDP】day4

    2024-05-25 19:36:11       34 阅读
  3. Spring Integration接收TCPUDP请求

    2024-05-25 19:36:11       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-25 19:36:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-25 19:36:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-25 19:36:11       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-25 19:36:11       20 阅读

热门阅读

  1. python 庆余年2收视率数据分析与可视化

    2024-05-25 19:36:11       9 阅读
  2. amis中 InputTable Combo InputKV/InputKVS 区别

    2024-05-25 19:36:11       11 阅读
  3. jupyter notebook 实现联邦学习模型

    2024-05-25 19:36:11       11 阅读
  4. android上用QT实现绘制曲线及双指放大缩小

    2024-05-25 19:36:11       10 阅读
  5. 接口作为返回类型与类作为返回类型一样吗?

    2024-05-25 19:36:11       11 阅读
  6. 微信小程序自定义头部

    2024-05-25 19:36:11       9 阅读
  7. Git 使用手册

    2024-05-25 19:36:11       10 阅读
  8. npm 上传包

    2024-05-25 19:36:11       9 阅读