计算机网络之运输层
一、概述
物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信
但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务,运输层协议又称端到端协议

1.1端口号
为了使运行不同操作系统的计算机的应用进程之间能进行网络通信,必须使用统一的方法对TCP/IP体系的应用进程进行标识,即端口号。
逻辑端口的概念(端口):一个整数值(16位);0-65535
网络上中进程工作方式:C/S 对应的端口号码的分配也分为两大类
服务类(静态的预先指定的)
1-1013(默认系统熟知的服务)
1023-45191(需要申请注册的服务 QQ4000,8000都是它所使用的端口)
客户类(随机的由本地操作系统自己管控)
端口:相当于进程在网络中的地址
IP+PORT(端口号) 构成了网络中唯一的通信端点:我们称之为端到端的通信
(Socket) (Socket) Protocol
1.2复用与分用
发送方的复用
- 发送方的某些应用进程所发送的不同应用报文,在运输层使用UDP协议进行封装,这是UDP复用;若用TCP封装则称TCP复用
- 运输层使用端口号区分不同进程,不管使用何种协议封装的报文,在网络层都需要使用IP协议封装成IP数据报,这是IP复用,数据报中协议字段的值用来表名封装的是何种协议数据单元
接收方的分用
- 根据协议字段的值,将IP数据报封装的协议数据单元上交运输层的过程叫IP分用
- 同理,UDP根据端口号将数据交给应用进程叫做UDP分用;TCP根据端口号将数据交给应用进程叫做TCP分用
1.3运输层引入的协议
1,TCP协议(负责完成端到端的可靠传输)
2,UDP协议(负责完成端到端的数据传输)
用户数据报协议UDP
UDP是无连接的,随时可向目的主机发送报文,支持单播、多播和广播
UDP收到应用层报文后直接为报文添加UDP首部就进行发送,即面向应用报文
UDP数据报首部仅8字节

传输控制协议TCP
TCP时面向连接的。发送数据前需要"三报文握手"建立连接,数据传输结束后需要"四报文挥手"释放连接仅支持单播
TCP是面向字节流的。其将应用进程交付下来的数据块仅仅看作是一连串的字节流,
TCP将这些字节流编号并存储在缓冲中;接收方一边接收数据,一边将缓冲中的数据交给应用进程。接收方收到的字节流必须和发送方收到的字节流完全一致
不会出现传输差错(误码、丢失、乱序、重复)
TCP报文段首部最小20字节,最大60字节
1.4TCP协议流量控制
1)滑动窗口 发送窗口 接收窗口
2)超时计时器
3)流量控制方法 :接收端控制发送端
2)超时计时器
3)流量控制方法:接收端控制发送端
4)流量控制的实现过程:0窗口
5)TCP协议效率管理:糊涂窗口
流量控制
一般来说,我们希望数据传输能快一些,但如果发送方把数据发送得过快,接收方就可能来不及接收,这会造成数据的丢失
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收

利用滑动窗口实现流量控制
- 发送方和接收方窗口保持一致,发送方窗口随着接收方窗口变化而变化(通过确认报文告知发送方)
- 发送方发送完窗口内数据后需要等到确认报文才会滑动窗口并继续发送,若窗口内的某个值很久没有收到回答报文,则超时重传报文
若接收方窗口调为0后,一段时间之后又调为200,此时向发送方传递确认报文,可此时报文丢失,则会造成发送方窗口始终为0,接收方以为发送方收到了确认报文而开始等待数据,造成死锁,如何解决?
当发送方窗口大小为
0时,其隔一段时间就会发送一个1字节大小的零窗口探测报文,看看此时接收窗口大小是否进行调整零窗口探测报文也有超时重传机制
1.5TCP的拥塞控制
1)拥塞控制的概念:拥塞就是拥堵了(网络拥堵了),拥堵的原因?数据包太多了,导致网络吞吐量下降,网络时延增加;网络时延增加又进而加剧了网络数据包增多
2)拥塞控制的手段方法
(1)核心方法:减少数据包数量
(2)具体实现:就根据不同情况,采用不同方法来减少数据包数量
(3)拥塞的主要表现就是时延的增加,为此,就围绕时延增加来进行数据包数量的调整
(4)数据包投放数量是由各主机的发送窗口大小决定的
(5)TCP又引入一个拥塞窗口的概念;拥塞发生时应该控制发送窗口的数量
结论:发送窗口的大小:min(拥塞窗口,接收窗口)
(6)拥塞窗口:拥塞发生时,能够发送数据包的个数
(7)拥塞控制算法:慢开始 拥塞避免 快重传 快恢复
1)慢开始:设置门限值;门限值内,试探着向网络投入数据包,避免拥塞
2)拥塞避免:拥塞发生时,能够发送数据包的个数
3)快重传:当数据包未按序到达,导致重复确认增多,则立即重传该数据包,门限降为重复确认时拥塞窗口的一半,拥塞窗口同时调小
4)快恢复:发生超时时,立即急速的减少投入网络的数据包
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况叫做拥塞
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降
1.6超时重传时间(RTO)选择
正常情况下,超时重传时间应该设为略大于往返时间。但是由于各区域的速率可能不一致,因此将超时重传时间设置为一个固定值是行不通的
往返时间测量问题
针对出现超时重传时无法测准往返时间RTT的问题,有以下解决方法
在计算加权平均往返时间RTTs时,只要报文段重传了,就不采用其往返时间TT样本。也就是出现重传时,不重新计算RTTs,进而超时重传时间RTO也不会重新计算。
此方法的漏洞如下:如果报文段时延突然增大很多,并且之后很长一段时间都会保持这种时延。因此在原来得出的重传时间内,不会收到确认报文段,于是重传,造成死锁
修正方法:报文段每重传一次,就把超时重传时间RTO增大一些,典型的做法是将RTO的值取为旧RTO的2倍
1.7可靠传输
可靠性保障可以放在体系结构中的任何一层(数据链路层,网络层)实现,但现代网络系统面向的是主机(独立自主的计算力)系统,可以将可靠性保障交由主机来完成,进而减轻通信子网的负担,使得通信子网专注于数据包的高效传输
1.停止等待协议(ARQ自动请求重传协议)
A给B发送数据,B需要给一个确认,
否认应答:A再发,

2.后退N帧重传(Go Back N ARQ)(接收窗口固定唯一,而TCP接收窗口不确定)
(1)发送窗口:没有得到确认的情况下,发送端可以连续发送分组的个数
(2)接收窗口:接收数据的个数以及包含能接受数据的序号


(3)工作协议
(4)窗口大小与序号关系


3.选择重传协议
目的提高发送速率,不在采用发送一个数据帧就停下来等待确认的模式,而是可以连续发送多个数据帧后才停下来等待的模式
接收端:引入一个接收窗口的概念(即应当接收的数据帧及数据帧序号);这类协议接收窗口大小为1
其中:连续发送多少个数据帧的个数称为 发送窗口
(1)发送窗口
(2)接收窗口
(3)工作过程
(4)窗口大小与序号关系
1.8运输连接管理
TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行

SYN为1的报文段不能携带数据,但会消耗一个序列号seqACK=1代表这是普通确认报文段,ack=x+1表示这是对报文段序列号seq=x的确认

- 客户端发起关闭请求,一去一回后进入半关闭状态【客户端不再发送数据,服务端可能还会发】
- 服务器将自己剩余的数据发送完后也发送一个关闭请求,接着客户端给予回应后服务器关闭,客户机则要等到一段时间后完全关闭(防止发给服务器的确认报文丢失)
1.9首部格式
源端口:占
16比特,写入源端口号,用来标识发送该TCP报文段的应用进程目的端口:占
16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程
- 序号:占32比特,取值范围[ 0 ,
− 1 ] ,序号增加到最后一个后,下一个序号就又回到0。作用是指出本TCP报文段数据载荷的第一个字节的序号
- 确认标志位ACK:取值为1时确认号字段才有效,为0时确认号字段无效
确认号:占
32比特,取值范围 [ 0 ,− 1 ],序号增加到最后一个后,下一个序号就又回到
0。可理解为若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据
- 数据偏移:占4比特,并以4字节为单位
用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处。这个字段实际 上是指出TCP报文段的首部长度
首部固定长度为20字节,因此数据偏移字段的最小值
保留字段:占6比特,保留为今后使用,但是目前应置为
0窗口:占16比特,以字节为单位。指出发送本报文段一方的接收窗口
窗口值作为接收方让发送方设置其发送窗口的依据,这是以接收方的接收能力来控制发送方的发送能力,称为流量控制
检验和:占16比特,检测范围包括TCP报文段的首部和数据载荷两部分
在计算校验和时,要在
TCP报文段的前面加上12字节的伪首部同步标志位SYN:在
TCP连接建立时用来同步序号终止标志位FIN:用来释放
TCP连接
紧急标志位URG:取值为1时紧急指针字段有效;取值为
0时紧急指针字段无效。紧急指针:占
16比特,以字节为单位,用来指明紧急数据的长度
选项:增加选项可以增加
TCP的功能
- 最大报文段长度MSS选项:
TCP报文段数据载荷部分的最大长度- 窗口扩大选项:为了扩大窗口(提高吞吐率)
- 时间戳选项:
- 用来计算往返时间
RTT- 用于处理序号超范围的情况,又称为防止序号绕回
PAWS- 选择确认选项:实现选择确认功能
填充:由于选项长度可变,因此使用填充来保证报文段首部能被4整除
相关文章:
计算机网络之运输层
一、概述 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务…...
2023软件应用类下载系统平台源码/手机软件应用、新闻资讯下载站/软件库网站源码
源码简介: 这个是最新软件应用类平台源码、手机应用下载系统源码、软件应用市场下载站源码、新闻资讯软件下载。2023软件应用类平台源码/手机软件应用、新闻资讯下载站,它是软件库网站源码。 最新软件应用类平台源码 手机应用下载系统源码 软件应用市场…...
SkyWalking配置报警推送到企业微信
1、先在企业微信群里创建一个机器人,复制webhook的地址: 2、找到SkyWalking部署位置的alarm-settings.yml文件 编辑,在最后面加上此段配置 !!!一定格式要对,不然一直报警报不出来按照网上指导…...
educoder中Hive -- 索引和动态分区调整
第1关:Hive -- 索引 ---创建mydb数据库 create database if not exists mydb; ---使用mydb数据库 use mydb; ---------- Begin ---------- ---创建staff表 create table staff( id int, name string, sex string) row format delimited fields terminated by , stored…...
http与https有什么区别,https攻击要如何防护
我们在浏览网站时,在网址的前面经常会看到http// 或者https//的显示。同样是http,加了s与不加s是有什么区别,加了s又有哪些用处。 http,中文叫做超文本传输协议。它是一种用于分布式、协作式和超媒体信息系统的应用层协议。是基于…...
nginx+keepalived
一、简介 很久没有配置keepalived了,最近业务医院需要配置前置机做转发,并且配置keepalived. 因为医院的生产环境和外界是完全隔离的,所以需要做前置机做网络请求转发 二、服务器列表 角色IP备注nginx keepalived master192.168.1.22ngin…...
Re51:读论文 Language Models as Knowledge Bases?
诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Language Models as Knowledge Bases? ArXiv网址:https://arxiv.org/abs/1909.01066 官方GitHub项目:https://github.com/facebookresearch/LAMA 本文是2019年…...
.NET 使用配置文件
我简单测试了一下json格式配置文件,在这里记录一下,方便以后查看。 需要引用的库: Microsoft.Extensions.Hosting 创建json格式文件:appsettings.json 在工程文件中包含json文件: <ItemGroup><Content In…...
vue 通过ref调用router-view子组件的方法
由于用的vue2.7版本,但用了vue3 setup的语法; 注意:是vue2的template结构,vue3的setup语法;非这种情况需要举一反三。 处理方案: 1、对router-view加上ref template修改 直接对router-view加上ref&#x…...
在全球碳市场中崭露头角的中碳CCNG
在全球气候治理的大背景下,中国碳中和发展集团有限公司(简称中国碳中和)正在成为全球碳交易市场的一个重要参与者。随着国际社会对碳排放的日益关注,中国碳中和凭借其在碳资产开发、咨询与管理等领域的深厚积累,正成为…...
uni-app - 弹出框
目录 1.基本介绍 2.原生uinapp 通过uni.showActionSheet实现 3.使用组件 Popup 弹出层 ③效果展示 1.基本介绍 弹出框让我们在需要时在屏幕底部弹出一个菜单,它通常用于在各种应用程序中进行选择操作。Uniapp为我们提供了基本的底部弹出框组件,但它也有…...
深度学习之基于Tensorflow卷积神经网络鸟类目标识别检测系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络(Convolutional Neural Networks,CNN)在鸟类目标识…...
关闭EntityFramework日志输出SQL
项目场景: 提示:这里简述项目相关背景: EntityFramework日志输出SQL 问题描述 提示:这里描述项目中遇到的问题: EntityFramework日志输出SQL,造成发布后,无效日志太多,且容器化部…...
重新开启GPT Plus充值通道——基于前端开发者工具
chatGPT PLUS充值通道的关闭 由于chatGPT用户激增,近日,OpenAI的CEO Sam Altman宣布需要暂停新用户对ChatGPT Plus的订阅。在X上,他表达了对于确保用户体验的承诺,同时也提到了用户可以通过应用程序内的通知功能来了解服务恢复的…...
技术细分|推荐系统——推荐系统中的数据去偏方法
本篇的主要脉络同样依据中科大何向南教授、合工大汪萌教授联合在 TKDE 上的一篇综述文章展开:Bias and Debias in Recommender System: A Survey and Future Directions。 下面按照前导文章中介绍的数据偏差 Selection Bias、Conformity Bias、Exposure Bias、Posit…...
多功能回馈式交流电子负载的应用
多功能回馈式交流电子负载是用于模拟和测试电源、电池等电子设备的负载工具。它具有多种应用,可以用于测试和评估各种类型的电源,包括直流电源和交流电源。它可以模拟各种负载条件,如恒定电流、恒定电压和恒定功率,以验证电源的性…...
AIGC专题报告:生成式人工智能用例汇编
今天分享的是AIGC系列深度研究报告:《AIGC专题报告:生成式人工智能用例汇编》。 (报告出品方:德勤) 报告共计:16页 生成式人工智能(AI)的兴起 生成式AI给人类文明创造了无限的可…...
php xml数据转数组两种方式
目录 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 方法二、使用PHP内置的DOMDocument类来将XML数据转换为数组的方法 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 $xmlData <root><name>John Doe</name>&l…...
wagtail-安装配置
系列文章目录 文章目录 系列文章目录安装虚拟环境安装wagtail查看安装后的包 创建wagtail项目安装依赖迁移创建超级用户运行项目 安装虚拟环境 https://blog.csdn.net/gsl371/article/details/117917857 安装wagtail (wagenv) C:\djproject\wagprj>pip list Package V…...
基于Android校园交流uniAPP+vue 微信小程序v7e1
本系统结合现今XX校园交流APP的功能模块以及设计方式进行分析,使用Android平台和Ssm框架进行开发设计,具体研究内容如下: (1) 系统管理员主要对用户管理、类型管理、娱乐天地管理、投诉举报管理、学习平台、我的收藏管理、系统管理等功能进…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...




