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. 校验和

  • 如果收到首部和数据的校验和 有差错,则丢弃此报文
    • 端对端的校验和 可以检测到数据在传输过程中的变化
相关推荐
FPGA小迷弟13 小时前
FPGA开发Vivado Block Design/Vitis/SDK/xlinx/开发教程,保姆级别,一看就会!
网络协议·tcp/ip·fpga开发·verilog·fpga
FPGA小迷弟14 小时前
基于FPGA实现智能网卡的概念,什么是智能网卡
网络协议·tcp/ip·fpga开发·verilog·fpga
深圳恒讯16 小时前
国外云服务器部署企业官网,怎样确定配置、IP 与后续扩容方案?
运维·服务器·tcp/ip
jaysee-sjc19 小时前
【苍穹外卖】Day10:定时任务与 WebSocket 实时提醒实战
java·开发语言·javascript·数据库·vue.js·websocket·网络协议
未来之窗软件服务20 小时前
诡异的网络IP/域名/ICMP通应用层失败骨干网分层拦截分析-东方仙盟
网络·tcp/ip·智能路由器·dns劫持·仙盟创梦ide·东方仙盟
幻智星科技21 小时前
我砍掉了FPGA里的ARM核项目反而提前交付了
arm开发·网络协议·fpga开发·硬件架构
cyf3121 小时前
半小时玩转RDMA:从零跑通高速网络通信
网络协议·rdma·高速通信·rocev2·wireshark抓包·ai 智算网络·入门实战
砺星Leetx1 天前
工业总线选型与对接实战:PROFINET、EtherCAT、EtherNet/IP、PROFIBUS、Modbus-TCP 与 CC-Link
网络·网络协议·tcp/ip·控制器·国产拧紧系统
科技小登1 天前
网站和游戏怎么选高防?DDoS防护、高防IP与高防CDN接入方案解析与边界评估
tcp/ip·ddos
treesforest2 天前
游戏账号安全风险分层方案:IP信号分层与人机复核实践
tcp/ip·安全·游戏·1024程序员节