当前位置: 首页 > news >正文

TCP 和 UDP

TCP(Transmission Control Protocol,传输控制协议)

是面向连接的协议,即在收发数据前,必须和对方建立可靠的连接,TCP的头部为20个字节。

UDP(User Datagram Protocol,用户数据报协议)

是一个面向无连接的协议,它以数据报(Datagram)的形式传输数据。在传输数据之前,源端和终端不需要建立连接,UDP的信息头部为8个字节,UDP使用 "尽最大努力交付" 的方式,导致了UDP不保证可靠交付。

区别

两种常用的传输层协议,在网络通信中有以下区别:

1. 连接性:

- TCP是面向连接的协议,通信双方在发送和接收数据之前需要先建立连接,并在连接的双方保持状态信息。

- UDP是面向无连接的协议,发送数据时不需要事先建立连接。每个数据包(称为数据报)都是独立的,相互之间没有依赖关系。

2. 数据传输方式:

- TCP提供面向字节流的传输方式,将数据分割成适当的大小并按顺序传输。数据以字节流的形式在网络上传输,保证数据的有序性。

- UDP以数据报(Datagram)的形式传输数据,每个数据报都有自己的标识和长度信息,可以独立地传输。每个数据报都是独立的,可能会被路由器拆分或重新组装。

3. 可靠性:

- TCP提供可靠的数据传输,通过序号、确认、重传、拥塞控制等机制来保证数据的完整性和有序性,但在网络拥塞时可能会产生延迟。

- UDP不提供数据的可靠传输,数据报可能会丢失或乱序。UDP适用于对实时性要求较高的应用,如音频、视频等,因为它能够更快速地传输数据。

4. 使用场景:

- TCP适用于需要可靠传输、数据顺序和错误校验的应用,如网页浏览、文件传输、电子邮件等。

- UDP适用于对实时性要求较高、数据传输速率高以及容忍少量数据丢失的应用,如视频流、语音通话、实时游戏等。

TCP可靠性机制

1. TCP是面向连接的协议,建立连接后发送和接收数据。UDP是无连接的协议,发送数据时不需要建立连接。

2. TCP提供可靠的数据传输,采用序列号、确认应答、重传和流量控制等机制来保证数据的完整性和顺序。UDP不提供可靠性保证,不进行序列号和重传,适用于实时性要求高的应用。

3. TCP使用滑动窗口协议进行流量控制,限制发送速率,防止数据丢失。TCP还有超时重传和拥塞控制机制来应对网络不稳定和拥塞。

4. UDP没有流量控制和拥塞控制机制,因此传输速度快,延迟较低,但无法保证可靠性。

TCP 报文

TCP 报文是 TCP 传输的的数据单元,也叫 报文段

1. 源端口号和目的端口号:用于标识发送方和接收方的应用进程。

2. 序列号:每个TCP报文段都有一个序列号,用于标识报文段中的数据在字节流中的位置。

3. 确认序列号:接收方发送给发送方的确认报文中包含的序列号,用于告知发送方已成功接收到的数据字节。

4. 标志位:TCP报文中的标志位用于控制连接的建立、维护和关闭,如SYN、ACK、FIN等。

5. 窗口大小:接收方通过通知发送方接收窗口大小来控制发送速率和缓存空间。

6. 校验和:用于检测报文在传输过程中是否发生了错误。

7. 首部长度:TCP首部的长度,用于提供从报文开始到数据开始位置之间的偏移量。

8. 选项:可选的TCP选项,用于提供一些额外的功能和参数设置。

9. 数据:TCP报文段中携带的数据部分。

UCP 报文

1. 源端口号和目的端口号:用于标识发送方和接收方的应用进程。

2. 长度:UDP报文的长度,包括报文头部和数据部分。

3. 校验和:用于检测报文在传输过程中是否发生了错误。

4. 数据:UDP报文中携带的数据部分。

http://www.lryc.cn/news/96627.html

相关文章:

  • springboot配置自定义数据源(Druid德鲁伊)的步骤。
  • K8S:容器日志收集与管理
  • Flutter系列文章-Flutter进阶
  • 【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式
  • rust学习-线程
  • 题目:2180.统计各位数字之和为偶数的整数个数
  • 3dsmax制作一个机器人
  • C++的类型转换运算符:reinterpret_cast
  • flask中的cookies介绍
  • adnroid 11. 0 Activity启动流程图解
  • 了解Unity编辑器之组件篇Physics(四)
  • “数字中华 点亮未来”中华线上客户节 盛大开幕
  • 中文分词入门:使用IK分词器进行文本分词(附Java代码示例)
  • CTFSHOW web 信息收集
  • 速锐得开发社区-新一代汽车网络通信技术CAN FD的特点归纳
  • Android adb shell 查看App内存(java堆内存/vss虚拟内存/详细的内存状况/内存快照hprof)和系统可用内存
  • java篇 类的进阶0x0A:万类之祖:Object 类
  • AVFoundation - 音频录制
  • Jmeter+MySQL链接+JDBC Connection配置元件+使用
  • 统一观测丨使用 Prometheus 监控 Cassandra 数据库最佳实践
  • Hive视图
  • node中使用jsonwebtoken实现身份认证
  • pyspark笔记:读取 处理csv文件
  • 多租户分缓存处理
  • RN输入框默认设置数字键盘
  • 计算机网络——应用层
  • 【C++】写一个函数实现系统时间与输入时间进行比较
  • uniapp 微信小程序 navigationBarBackgroundColor 标题栏颜色渐变
  • ffplay播放器剖析(7)----音视频暂停模块分析
  • ceph-mon运行原理分析