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报文中携带的数据部分。
相关文章:
TCP 和 UDP
TCP(Transmission Control Protocol,传输控制协议) 是面向连接的协议,即在收发数据前,必须和对方建立可靠的连接,TCP的头部为20个字节。 UDP(User Datagram Protocol,用户数据报协…...
springboot配置自定义数据源(Druid德鲁伊)的步骤。
今天和大家分享下在Springboot中配置自定义数据源Druid的两种方法及步骤。 方法一: 1.在pom.xml配置依赖(注释里面的内容) 2.配置自己的数据源设置,我是在yaml文件中配置的,顺便提醒一下,在配置yaml文件的时候缩进问题一定要注意…...
K8S:容器日志收集与管理
Kubernetes 里面对容器日志的处理方式,都叫作 cluster-level-logging,即:这个日志处理系统,与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计当然是为了保证,无论是容器挂了、Pod 被删除,甚至节点…...
Flutter系列文章-Flutter进阶
在前两篇文章中,我们已经了解了Flutter的基础知识,包括Flutter的设计理念、框架结构、Widget系统、基础Widgets以及布局。在本文中,我们将进一步探讨Flutter的高级主题,包括处理用户交互、创建动画、访问网络数据等等。为了更好地…...
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式
文章目录 1. 右值引用和移动语义1.1 左值引用和右值引用1.2 左值引用和右值引用的比较1.3右值引用的使用场景和意义1.4 左值引用和右值引用的深入使用场景分析1.5 完美转发1.5.1 万能引用1.5.2 完美转发 2. 新的类功能2.1 默认成员函数2.2 类成员变量初始化2.3 强制生成默认函数…...
rust学习-线程
Rust 标准库只提供了 1:1 线程模型 Rust 是较为底层的语言,如果愿意牺牲性能来换取抽象,以获得对线程运行更精细的控制及更低的上下文切换成本,使用实现了 M:N 线程模型的 crate 示例 use std::thread; use std::time::Duration;fn main() …...
题目:2180.统计各位数字之和为偶数的整数个数
题目来源: leetcode题目,网址:2180. 统计各位数字之和为偶数的整数个数 - 力扣(LeetCode) 解题思路: 暴力遍历即可。 解题代码: class Solution {public int countEven(int num) {int re…...
3dsmax制作一个机器人
文章目录 建模身子:眼睛:头饰:肩膀手臂腿调整细节 渲染导出objMarmoset Toolbag 3.08渲染给眼睛添加材质,设置为自发光添加背景灯光 建模 身子: 眼睛: 头饰: 肩膀 手臂 腿 调整细节 渲染 导出…...
C++的类型转换运算符:reinterpret_cast
C的类型转换运算符:reinterpret_cast reinterpret_cast 是 C 中与 C 风格类型转换最接近的类型转换运算符。它让程序员能够将一种对象类型转换为另一种,不管它们是否相关;也就是说,它使用如下所示的语法强制重新解释类型…...
flask中的cookies介绍
flask中的cookies介绍 “Cookie” 在 web 开发中是一种非常重要的技术,用于在客户端(即用户的浏览器)存储信息,以便在多个页面和多个访问会话之间保持状态。Cookies 通常用于记住用户的登录信息,跟踪用户在站点上的浏…...
adnroid 11. 0 Activity启动流程图解
从Launcher到ActivityTaskManager 从ActivityTaskManagerService 到 ApplicationThread 从ApplicationThread到onCreate...
了解Unity编辑器之组件篇Physics(四)
Physics:用于处理物理仿真和碰撞检测。它提供了一组功能强大的工具和算法,用于模拟真实世界中的物理行为,使游戏或应用程序更加真实和可信。 主要用途包括: 碰撞检测:Unity Physics 提供了高效的碰撞检测算法&#x…...
“数字中华 点亮未来”中华线上客户节 盛大开幕
2023年是中华保险数字化转型落地之年,峥嵘37载,中华保险在数字化转型上已经涌现了一批彰显辨识度、具有影响力的应用成果。7月15日,中华保险围绕数字化转型之路开展以“数字中华 点亮未来”为主题的37周年线上客户节活动,倾力打造…...
中文分词入门:使用IK分词器进行文本分词(附Java代码示例)
1. 介绍 中文分词是将连续的中文文本切分成一个个独立的词语的过程,是中文文本处理的基础。IK分词器是一个高效准确的中文分词工具,采用了"正向最大匹配"算法,并提供了丰富的功能和可定制选项。 2. IK分词器的特点 细粒度和颗粒…...
CTFSHOW web 信息收集
web入门的刷题 web1 教我们多看看源代码 web2 抓包 web3 抓包 web4 robots.txt robots.txt web5 phps源代码泄露 phps 就是php的源代码 用户无法访问 php 只可以通过phps来访问 web6 源代码备份 web7 git web8 svn web9 swp /index.php.swp web10 cookie web11 查域名…...
速锐得开发社区-新一代汽车网络通信技术CAN FD的特点归纳
随着汽车工业的快速发展,汽车逐渐走向智能化,功能也越来越丰富,例如特斯拉、比亚迪、理想汽车为代表,在车载导航、驻车雷达、胎压监测、倒车影像、无钥匙启动、定速巡航、自动泊车、高级辅助驾驶系统、自动驾驶、域控制器、智能网…...
Android adb shell 查看App内存(java堆内存/vss虚拟内存/详细的内存状况/内存快照hprof)和系统可用内存
1.adb shell 获取app 进程的pid adb shell "ps|grep com.xxx包名"根据某个渠道包,去查询对应的pid,如下所示: 2.通过adb shell 查看设备的java dalvik 堆内存的最大值 执行命令行: adb shell getprop dalvik.vm.h…...
java篇 类的进阶0x0A:万类之祖:Object 类
文章目录 万类之祖:Object 类hashCode() 与 equals()hashCode() 方法equals() 方法 vs. equals()String 的 equals() 为什么要重写 hashCode 和 equals 方法重写(覆盖)前 hashCode() 和 equals() 的作用什么情况下需要重写(覆盖&a…...
AVFoundation - 音频录制
文章目录 需要调用到麦克风方法,别忘记添加 Privacy - Microphone Usage Description @interface AudioRecorder ()<AVAudioRecorderDelegate>@property (strong, nonatomic) AVAudioRecorder *recorder;@end@implementation AudioRecorder- (void...
Jmeter+MySQL链接+JDBC Connection配置元件+使用
参考大大的博客学习:怎么用JMeter操作MySQL数据库?看完秒懂!_jmeter mysql_程序员馨馨的博客-CSDN博客 注:里面所有没打码的都是假数据,麻烦大家自行修改正确的信息。 一、背景 需要取数据库中的值,作为…...
避坑指南:用微PE工具箱制作万能启动盘时容易忽略的5个细节(附服务器专用插件包)
避坑指南:用微PE工具箱制作万能启动盘时容易忽略的5个细节(附服务器专用插件包) 运维工程师们常说:"PE启动盘是服务器救急的瑞士军刀。"但当这把"军刀"在关键时刻掉链子时,往往是因为制作过程中那…...
Lychee Rerank MM效果展示:工业零件图+技术参数Query在BOM库中的高精度召回重排
Lychee Rerank MM效果展示:工业零件图技术参数Query在BOM库中的高精度召回重排 1. 多模态重排序的技术突破 在工业制造和供应链管理领域,物料清单(BOM)库中存储着成千上万的零件信息和相关技术文档。传统的文本检索系统在面对&q…...
2024丨时间序列预测(Time Series Prediction)前沿技术解析与论文精要
1. 2024年时间序列预测技术全景图 时间序列预测就像给数据装上"时光望远镜",让我们能够窥见未来的趋势和变化。从股票价格到天气变化,从设备故障预警到疫情传播预测,这项技术正在深刻改变各行各业的决策方式。2024年,这…...
从“冷肿瘤”到“热肿瘤”:CAF亚型如何影响免疫治疗疗效?给临床医生的解读
解码CAF亚型:如何通过肿瘤微环境优化免疫治疗策略 在肿瘤免疫治疗的时代,我们常常困惑于为什么某些患者对PD-1/PD-L1抑制剂反应良好,而另一些则完全无响应。越来越多的证据表明,肿瘤微环境(TME)中的癌症相关成纤维细胞(CAF)亚型可…...
小米手机解锁全攻略:从申请到完成的详细步骤
1. 申请解锁前的准备工作 第一次接触小米手机解锁的朋友可能会觉得流程复杂,其实只要按照步骤操作并不难。在开始之前,我们需要做好几项准备工作。首先确认你的小米账号已经实名认证,这是解锁的必要条件。我遇到过不少朋友因为账号没实名导致…...
OpenClaw+Qwen3-4B成本对比:自建模型vs商业API实测
OpenClawQwen3-4B成本对比:自建模型vs商业API实测 1. 为什么需要做这个对比 去年夏天,当我第一次用OpenClaw自动化处理周报时,发现一个惊人的现象:仅仅生成三份周报就消耗了价值5美元的API额度。这让我开始思考——对于个人开发…...
SecGPT-14B接口加密:保障OpenClaw安全任务通信隐私
SecGPT-14B接口加密:保障OpenClaw安全任务通信隐私 1. 为什么需要加密OpenClaw与SecGPT-14B的通信 去年我在调试一个自动化财务报告生成流程时,突然发现OpenClaw传输的报表片段竟然被公司内网监控系统捕获。虽然只是测试数据,但这个意外让我…...
SDN南向接口协议深度解析:从OpenFlow到P4的演进与实战选型
1. SDN南向接口协议的技术演进之路 第一次接触SDN南向接口时,我被各种协议搞得晕头转向。直到在数据中心网络改造项目中踩过几次坑才明白,不同协议就像不同型号的螺丝刀——OpenFlow是精密钟表螺丝刀,OVSDB是家用多功能螺丝刀,NET…...
Logisim实战:MIPS32控制器增量设计与微命令生成
1. 从零理解MIPS32控制器设计 第一次接触CPU控制器设计时,我盯着那些密密麻麻的信号线完全摸不着头脑。直到在Logisim上亲手搭建了第一个MIPS32译码器,才真正明白控制器就像乐队的指挥——它不直接演奏乐器(运算器),但…...
OpenClaw跨平台控制:千问3.5-35B-A3B-FP8任务手机端触发方案
OpenClaw跨平台控制:千问3.5-35B-A3B-FP8任务手机端触发方案 1. 为什么需要移动端触发自动化任务? 上周三凌晨两点,我被手机闹铃惊醒——服务器监控报警显示生产环境出现异常。当我手忙脚乱打开电脑准备排查时,突然想到…...
