第五章:TCP和UDP基本原理
TCP和UDP基本原理
- 一、TCP/IP传输层的作用
- 二、 端口
- 1.范围
- 2. 服务端
- 3. 客户端
- 4. 常见知名端口号
- 4.1 TCP 80 HTTP
- 4.2 TCP 20 21 FTP
- 4.3 TCP 23 TELNET
- 4.4 TCP 25 SMTP
- 4.5 UDP 53 DNS
- 4.6 TCP 443 HTTPS
- 三、 TCP原理
- 1. TCP头部封装格式
- 1.1 Source Port 源端口
- 1.2 Destination Port 目的端口
- 1.3 Seq 序列号
- 1.4 Acknowledgement 确认号
- 1.5 Data Offset 数据偏移
- 1.6 Reserved 保留位
- 1.7 Urg 紧急开关
- 1.8 Ack 确认位开关(重点)
- 1.9 Psh 直接提交缓存数据
- 1.10 Rst 复位开关(重点)
- 1.11 Syn 握手开关(重点)
- 1.12 Fin 结束开关(重点)
- 1.13 window 窗口尺寸
- 1.14 Checksum 校验序列
- 1.15 Urgent Pointer 紧急指针
- 1.16 Options 可选项
- 2. TCP可靠机制
- 2.1 确认机制
- 2.2 三次握手
- 2.3 四次挥手
- 2.4 RST结束连接
- 2.5 窗口机制
- 2.6 完整性校验
- 3. TCP特征
- 3.1 优点
- 3.2 缺点
- 4. TCP的适用场景
- 四、 UDP原理
- 1. UDP特征
- 1.1 优点
- 1.2 缺点
- 2. UDP的使用场景
- 五、 比较
一、TCP/IP传输层的作用
- 提供面向连接或无连接的服务
- 维护连接状态
- 对应用层数据进行分段和封装
- 实现多路复用
- 可靠的传输数据
- 执行流量控制
二、 端口
每个应用程序进出网络都需要经过一个唯一端口,
通过端口号来识别数据交由哪个应用程序处理
1.范围
1 - 65535
2. 服务端
固定端口号
3. 客户端
1024以上随机端口
4. 常见知名端口号
4.1 TCP 80 HTTP
超文本传输协议
4.2 TCP 20 21 FTP
文件传输协议
4.3 TCP 23 TELNET
远程登录
4.4 TCP 25 SMTP
简单邮件传输协议
4.5 UDP 53 DNS
域名解析协议
4.6 TCP 443 HTTPS
HTTP over SSL
三、 TCP原理
1. TCP头部封装格式
1.1 Source Port 源端口
1.2 Destination Port 目的端口
1.3 Seq 序列号
标识本机发送的数据报文编号
1.4 Acknowledgement 确认号
标识请求对方下次发送的数据报文编号
1.5 Data Offset 数据偏移
标识数据分段在完整数据中的位置
1.6 Reserved 保留位
1.7 Urg 紧急开关
1.8 Ack 确认位开关(重点)
1.9 Psh 直接提交缓存数据
1.10 Rst 复位开关(重点)
用于强行中断TCP连接
1.11 Syn 握手开关(重点)
1.12 Fin 结束开关(重点)
1.13 window 窗口尺寸
用来通知本机的接收能力
1.14 Checksum 校验序列
1.15 Urgent Pointer 紧急指针
1.16 Options 可选项
2. TCP可靠机制
2.1 确认机制
- Seq = 上一次ack
- Ack = 上一次的seq + length
- 如果没有接收到,或接收到的是不完整数据,会再次发送Ack请求对方重发
2.2 三次握手
- 第一次 SYN置位 A-B
- 第二次 SYN,ACK置位 B-A
- 第三次 ACK置位 A-B
2.3 四次挥手
- 第一次 FIN置位 A-B
- 第二次 ACK置位 B-A
- 第三次 FIN置位 B-A
- 第四次 ACK置位 A-B
2.4 RST结束连接
- 收到RST置位的包后,立即结束TCP连接
- 发出RST置位的包后,不必等待对方的确认,直接结束TCP连接
2.5 窗口机制
滑动窗口 通过通告对方本机接收能力,来实现流量控制
2.6 完整性校验
通过Checksum来检查数据完整性
3. TCP特征
3.1 优点
传输可靠性高
3.2 缺点
占用带宽高,传输延迟高
4. TCP的适用场景
对数据完整性要求高,但是对传输延迟要求低
四、 UDP原理

1. UDP特征
1.1 优点
占用带宽低,传输延迟低
1.2 缺点
没有任何可靠性机制
2. UDP的使用场景
对传输延迟要求高,但数据完整性要求低
五、 比较

相关文章:
第五章:TCP和UDP基本原理
TCP和UDP基本原理 一、TCP/IP传输层的作用二、 端口1.范围2. 服务端3. 客户端4. 常见知名端口号4.1 TCP 80 HTTP4.2 TCP 20 21 FTP4.3 TCP 23 TELNET4.4 TCP 25 SMTP4.5 UDP 53 DNS4.6 TCP 443 HTTPS 三、 TCP原理1. TCP头部封装格式1.1 Source Port 源端口1.2 Destination Por…...
算法:动态规划的入门理解
文章目录 算法原理题目解析第n个泰波那契数列三步问题使用最小花费爬楼梯 从本篇开始总结的是动态规划的一些内容,动态规划是算法中非常重要的一个版块,因此也是学习算法中的一个重点,在学习动态规划前应当要把动态规划的基础知识学习一下 算…...
最新版nacos 2.2.3服务注册与发现版本依赖问题
最新版nacos的注册服务时配置文件写的是对的,但就是在nacos web页面无法看见服务,此时你需要注意你的依赖是否正确 spring: application:name: orderservicecloud:nacos:discovery:server-addr: 122.51.115.127:8848父工程依赖:现在最新的s…...
2023年中国合同能源管理行业研究报告
第一章 行业概况 1.1 定义及分类 合同能源管理 (Energy Performance Contracting, EPC) 是当前能源行业中一个重要的概念,它构建了一个桥梁,将节能服务公司 (Energy Management Company, EMCo) 与用能单位紧密联系在一起。通过特定的契约形式ÿ…...
php以半小时为单位,输出指定的时间范围
//可预订小时范围$hour [];for ($i$startHour*3600;$i<$endHour*3600;$i1800){//以半小时为单位输出$startHourItem date(H:i,strtotime(date(Y-m-d))$i);//小时开始$endHourItem date(H:i,strtotime(date(Y-m-d))$i1800);//当前时间再加半小时$hourItemStr $startHourI…...
Electron应用的 asar 打包 解压
前言: .asar文件是一种归档文件格式,通常用于封装Electron应用程序的资源。Electron是一个使得开发者能够使用Web技术构建跨平台桌面应用程序的框架。为了提高性能和简化部署,Electron应用程序的资源通常会被打包到一个.asar文件中。 安装 as…...
蓝桥等考Python组别十七级003
第一部分:选择题 1、Python L17 (15分) 运行下面程序,输出的结果是( )。 def func(x, y): return (x + y) // 3 print(func(7, 5)) 2468正确答案:B 2、Python L17 (15</...
Redis概述和与SpringBoot的整合
Redis是一种高性能的键值对存储数据库,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合等。Redis具有快速、可靠、灵活和可扩展等特点,也被广泛应用于缓存、队列和排行榜等场景。 SpringBoot是一种基于Spring框架的快速开发脚手…...
Python 中的 round() 函数:实现精确的数值舍入操作
round(x, n) 函数用于对数值 x 进行舍入操作,并指定保留的小数位数为 n。它的工作原理如下: 如果 x 的小数位数小于等于 n,则直接返回 x 本身。例如,round(3.1415, 2) 将返回 3.14。 如果 x 的小数位数大于 n,则按照四…...
在springboot中如何开启Bean数据校验
①:添加JSR303规范坐标与Hibernate校验框架对应坐标 <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId> </dependency><dependency><groupId>org.hibernate.validator<…...
【C语言好题系列三】
文章目录 学习导航一. 选择题二. 编程题(力扣/牛客网)三. 总结 学习导航 一. 选择题 如下程序的运行结果是(D) char c[5]{a, b, \0, c, \0}; printf("%s", c);A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab 答案解析: 正…...
ElasticSearch搜索引擎:常用的存储mapping配置项 与 doc_values详细介绍
一、ES的数据存储结构: ES底层使用 Lucene 存储数据,Lucene 的索引包含以下部分: A Lucene index is made of several components: an inverted index, a bkd tree, a column store (doc values), a document store (stored fields) and te…...
[Spring]事务的传播机制
一、背景 Mysql在修改完数据后,默认会自动触发事务Commit提交。 而在我们服务的一个方法里,需要多次修改Mysql记录。 为了保证原子性,我们需要将Mysql设为手动提交,多次修改后再commit提交。 二、Spring事务 1、编程式事务管理…...
linux下,如何查看一个文件的哈希值md5以及sha264
在linux终端中,可能存在多个相似的文件,而哈希值可以唯一确定一个文件。文件的哈希值计算可以有以下两种方式,MD5和SHA256,现将两种方式罗列如下: 1、MD5 命令:$ md5sum FileName 一个文件的 MD5 是固定的…...
Java类加载过程
一、前言 我们都知道计算机的底层逻辑都是0和1的编码,当然除了现在所研究的量子计算除外。那么我们在计算机所做的一切操作,底层原理是不是都可以翻译到0和1呢。如果刨根问底的话,可以这么说,当然0和1的表示也属于逻辑门电路电的…...
人脸活体检测技术的应用,有效避免人脸识别容易被攻击的缺陷
随着软件算法和物理终端的进步,人脸识别现在越来越被广泛运用到生活的方方面面,已经成为了重要的身份验证手段,但同时也存在着自身的缺陷,目前常规人脸识别技术可以精准识别目标人像特征,并迅速返回比对结果࿰…...
大数据发展史
一、hadoop发展史 hadoop创始人Doug Cutting,主要为了实现Google类似全文搜索功能,该功能是基于Lucene框架进行优化升级,索引引擎; 2001年底Lucence成为Apache基金会的一个子项目,当时为了解决存储海量数据困难,检索海量速度慢,可以说Google是hadoop的思想之源; GFS…...
有关范数的学习笔记
向量的【范数】:模长的推广,柯西不等式_哔哩哔哩_bilibili 模长 范数 这里UP主给了说明 点赞 范数理解(0范数,1范数,2范数)_一阶范数-CSDN博客 出租车/曼哈顿范数 det()行列式 正定矩阵(Posit…...
如何通过MES系统提高生产计划效率?
导 读 ( 文/ 1730 ) 在现代制造业中,通过制造执行系统(MES)系统来提高生产计划效率是至关重要的。本文将介绍如何通过MES系统来优化生产计划,包括实时数据分析、智能排程和协同协作。通过这些关键方法,企业可以提高生产…...
持续提升信息安全运维保障服务能力,天玑科技助力企业快速实现数字化转型
近年来,以互联网、云计算、大数据、物联网为代表的新一代信息技术快速发展。给人们的生产生活方式带来方便的同时,也给信息系统的安全带来了严峻的挑战。我国信息化和信息安全保障工作的不断深入推进,以应急处理、风险评估、灾难恢复、系统测…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
