计算机组成原理 运输层
文章目录
- 运输层
- 运输层协议概述
- 进程之间的通信
- 运输层的两个主要协议
- 运输层的端口
- 用户数据报协议 UDP
- UDP 概述
- UDP 的首部格式
- 传输控制协议 TCP 概述
- TCP 最主要的特点
- TCP 的连接
- 可靠传输的工作原理
- 停止等待协议
- 连续 ARQ协议
- TCP 报文段的首部格式
- TCP 可靠传输的实现
- 以字节为单位的滑动窗口
- 超时重传时间的选择
- 选择确认 SACK
- TCP的流量控制
- 利用滑动窗口实现流量控制
- TCP 的传输效率
- TCP 的拥塞控制
- 拥塞控制的一般原理
- TCP 的拥塞控制方法
- 主动队列管理AQM
- TCP 的运输连接管理
- TCP 的连接建立
- TCP 的连接释放
- TCP 的有限状态机
运输层
运输层协议概述
进程之间的通信
运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
网络层为主机之间的通信提供服务,而运输层则在网络层的基础上,为应用进程之间的通信提供服务。
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接的UDP 协议时,这种逻辑通信信道仍然是一条不可靠信道。
运输层的两个主要协议
(1) 用户数据报协议 UDP (User Datagram Protocol)
(2) 传输控制协议 TCP (Transmjssion Control Protocol)
运输层的端口
每一个端口用一个称为端口号(port number) 的正整数来标志。主机的操作系统提供了接口机制,使得进程能够通过这种机制找到所要找的端口。
这种在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的地点。
(I) 服务器端使用的端口号 这里又分为两类,最重要的一类叫作熟知端口号(wellknown port number)或全球通用端口号.
另一类叫作登记端口号,数值为 1024~49151 。这类端口号是为没有熟知端口号的应用程序使用的。要使用这类端口号必须存 IANA 按照规定的手续登记,以防止重复。
(2) 客户端使用的端口号 数值为 49152~65535 。由于这类端口号仅在客户进程运行时才动态选择,因此又叫作短暂端口号°。这类端口号就是临时端口号,留给客户进程选择临时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就被系统收回,以便给其他客户进程使用。
用户数据报协议 UDP
UDP 概述
(1) UDP 是无连接的,因此减少了开销和发送数据之前的时延。
(2) UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
(3) UDP 是面向报文的。发送方的 UDP 对应川程序交下来的报文,在添加首部后就向下交付 IP 层。
(4) UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。
(5) UDP 支持一对一、一对多、多对一和多对多的交互通信。
(6) UDP 的首部开销小,只有8个字节,比 TCP 20 个字节的首部要短。
复用示意图
UDP 的首部格式
UDP 用户数据报首部中检验和的计算方法有些特殊。在计箕检验和时,要在 UDP 用户数据报之前增加 12 个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是 UDP 用户数据报真正的首部。只是在计算检验和时,临时添加在 UDP 用户数据报前面,得到一个临时UDP 用户数据报。检验和就是按照这个临时的 UDP 用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。
传输控制协议 TCP 概述
TCP 最主要的特点
(I) TCP 是面向连接的运输层协议。这就是说,应用程序在使用TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。
(2) TCP 连接只能有两个端点。
(3) TCP 提供可靠交付的服务。通过过 TCP 连接传送的数据,无差错、不丢失、不重复,井且按序到达。
(4) TCP 提供全双工通信。
(5) 面向字节流。 TCP 中的“流”(stream)指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程子和 TCP 的交互是一次几个数据块(大小不等),但TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
TCP 的连接
TCP 连接的端点叫作套接字(socket)或插口
套接字 socket = (IP 地址:端号)
每一条 TCP 连接唯一地被通信两端的两个端点(即套接字对 socket pair) 所确定。
可靠传输的工作原理
停止等待协议
-
无差错情况
停止等待协议是最简单的无差错情况。
-
出现差错
第一, 在发送完一个分组后,必须暂时保留已发送的分组的副本(在发生超时直传时使用)。只有在收到相应的确认后才能消除暂时保衍的分组副本。
第二,分组和确认分组都必须进行编号。。这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认。
第二,超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。 -
确认丢失和确认迟到
-
信道利用率
停止等待协议的优点是简单,但缺点是信追利用率太低.
U=Td/Td+RTT+Ta
连续 ARQ协议
示发送方维待的发送接口,它的意义是:位于发送窗口内的5个分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
TCP 报文段的首部格式
TCP 报文段首部的前 20 个字节是固定的,后面有 4n字节是。因此 TCP 首部的最小长度是 20 字节。
首部固定部分各字段的意义如下:
(1) 源端口和目的端口 各占2个字节,
(2) 序号 4字节。TCP向字节流的。在一个 TCP 连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段们则指的是本报文段所发送的数据的第一个字节的序号。
(3) 确认号 4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
(4) 数据偏移 4位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。。这个字段实际上是指出 TCP 报文段的首部长度.
(5) 保留 6位,保留为今后使用,但目前应设为0下面打6个控制位,用来说明木报文段的性质它们的,意义见下面的(6)~(11)
(6) 紧急 URG (URGent) URG = 1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当干高优先级的据),而不要按原来的排队顺序传送。
URG 时,发送应用进桯就告诉发送方的 TCP 有紧急数据婓传送。于是发送方TCP 就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与首部中紧急指针(Urgent Pointer)字段配合使用。
(7) 确认 ACK (ACKnowledgment) TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置为
(8) *推送 PSH (PuSH)*当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后守即就能够收到对方的响应。
(9) 复位 RST (ReSeT) 表明 TCP 连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
(10) 同步 SYN (SYNchronization) 在连接建立时用来同步序号。表明这是一个连接诸求报文段。
(11) 终止 FIN (FINish) 用来释放一个连接。
(12) 窗口 2字节。窗口值是[0, 2^16- l] 之间的整数。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。接收方的缓存容量单位字节。
(13) 检验和 2字节。检验和字段检验的范围包括首部和数据这两部分。和 UDP用户数据报一样,在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
(14) 紧急指针 2字节。它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。
(15) 选项 长度可变,最长可达 40 字节。
TCP 可靠传输的实现
以字节为单位的滑动窗口
第一,缓存空间和序号空间都是有限的,并且都是循环使用的
第二,由于缓存或窗口中实际的字节数可能很大
发送缓存用来暂时存放:
(1)发送应用程序传送给发送方 TCP 准备发送的数据;
(2) TCP 已发送出但尚未收到确认的数据。
接收缓存用来暂时存放:
(1)按序到达的、但尚未被接收应用程序读取的数据;
(2)未按序到达的数据。
超时重传时间的选择
TCP 采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间 RTT TCP 保留了 RTT 的一个加权平均往返时间 RTTs
新的 RTTs = (1- a) (旧的 RTTs) + a*新的 RTT 样本)
选择确认 SACK
描述边界,防止重传,只传输未被确认的
TCP的流量控制
利用滑动窗口实现流量控制
流量控制(flowcontrol)就是让发送方的发送速率不要太快,要让接收方来得及接收。

计算机组成原理 运输层
文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…...

shp文件与数据库(创建shp文件)
前言 前面把shp文件中的内容读取到数据库,接下来就把数据库中的表变成shp文件。 正文 简单的创建一个shp文件 暂时不读取数据库的表,先随机创建一个shp文件。既然是随机的,这就需要使用到faker这个第三方库,代码如下。 impor…...

106、Text-Image Conditioned Diffusion for Consistent Text-to-3D Generation
简介 很多工作在扩散先验中注入跨视图一致性,但仍然缺乏细粒度的视图一致性。论文提出的文本到3d的方法有效地减轻了漂浮物(由于密度过大)和完全空白空间(由于密度不足)的产生。 实现过程 简单而言,论文工作是 DreamfusionZero123。 使用两种不同的分数…...
MAC通过终端,使用python3建立本地Web服务
实现局域网Web服务,很简单几句命令,一起看看。 1. 我相信你已经有 brew(Homebrew 包管理器) 了对么? 如果没有可以执行这个方法 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. 安…...

闲鱼宝库亮相!闲鱼商品详情关键词搜索电商API接口助你畅享无尽好货!
随着互联网的快速发展,电商平台的崛起已经改变了人们的购物习惯。而在众多电商平台中,闲鱼作为一款社区二手交易平台,一直备受用户喜爱。如今,闲鱼宝库正式亮相,为用户带来了更加全面、详细的商品详情关键词搜索电商AP…...

后台生成随机验证码验证登录
web get请求获取图片 <div class"p2"><img id"imgId" src"/get/code"><a href"#">看不清,换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…...
常见的HTTP接口超时问题出现原因及解决办法
HTTP接口超时问题是指在HTTP请求发送到服务器后,由于等待服务器响应的时间超过了预设的超时时间,导致请求被中断。以下是可能导致HTTP接口超时问题的原因和解决方法: 网络延迟或不稳定:网络延迟或不稳定可能导致请求在传输过程中…...
Pandas实战100例 | 案例 54: 日期时间运算
案例 54: 日期时间运算 知识点讲解 当处理带有 datetime 类型数据的 DataFrame 时,Pandas 提供了多种方法来提取和计算日期时间组件。这包括提取年份、月份、日期、星期几以及小时等。 提取日期时间组件: 使用 .dt 访问器,可以从 datetime 类型的列中…...

SDL2 连续帧图像显示
QT使用SDL多窗口显示视频(linux,ubuntu)_linux qt sdl-CSDN博客 QT使用SDL播放YUV视频 - C - QT C 使用SDL显示RGB图像数据_c sdl-CSDN博客 SDL库入门:掌握跨平台游戏开发和多媒体编程_sdl开发-CSDN博客 SDL教程零基础入门 简单…...

回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)
回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制) 目录 回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SSA…...

使用composer构建软件包时文件(夹)权限设置
在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整,以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…...

【C#】面向对象的三大特性,还记得吗,简单代码举例回顾
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…...
235.【2023年华为OD机试真题(C卷)】机器人搬砖(二分查找-JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…...
git hooks
介绍 当我们在执行git管理仓库代码时,想规范下每个用户的commit内容?想检查下提交的代码规范?想检查下PR是否通过,那么这个时候就需要用到git hooks,git hooks可以在我们进行git操作的关键时机插入我们想要执行的“脚…...

法规更新美国玩具标准ASTM F963-17有更新,最新标准为ASTM F963-23
美国材料试验协会 (ASTM)在10月13日发布了新的玩具安全标准:ASTM F963-23,ASTM F963-17美国联邦法规16 CFR 1250还在使用当中,出口美国的玩具的厂商要引起重视。 ASTM F963-17是什么标准? ASTM F963-17是美国玩具检测标准&#…...

【grpc】利用protobuf实现java或kotlin调用python脚本,含实现过程和全部代码
前言 在一些特殊场景中,我们可能需要使用java或者其他任意语言调用python脚本或sdk等。本文的需求衍生也不例外于此,python端有sdk,但只能在python中调用,于是就有了本文章。 常见的调用方式如jython、python提供http rest接口、…...

Linux网络 ----- 网络文件共享服务之FTP服务
引言 FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一。是目前Internet上使用最广泛的文件传送协议 一、FTP概述 FTP(File TransferProtocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实…...

如何避免知识付费小程序平台的陷阱?搭建平台的最佳实践
随着知识经济的兴起,知识付费已经成为一种趋势。越来越多的人开始将自己的知识和技能进行变现,而知识付费小程序平台则成为了一个重要的渠道。然而,市面上的知识付费小程序平台琳琅满目,其中不乏一些不良平台,让老实人…...
第89讲:MySQL数据库迁移方面需要考虑的因素以及XBK企业级备份参数
文章目录 MySQL数据库迁移方面需要考虑的因素1.MySQL数据库迁移方面要考虑的因素2.MySQL5.6升级到5.7版本的方法3.MySQL迁移到其他数据库的方法4.为什么要从XBK备份中还原某张表的数据5.从XBK备份中还原某张表的数据6.XtrBackup企业级备份参数 MySQL数据库迁移方面需要考虑的因…...

Python爬虫经典实战项目——电商数据爬取!
电商数据采集爬虫背景 在如今这个网购风云从不间歇的时代,购物狂欢持续不断,一年一度的“6.18年中大促”、“11.11购物节”等等成为了网购电商平台的盛宴。在买买买的同时,“如何省钱?”成为了大家最关心的问题。 比价、返利、优…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...