计算机网络 - 传输层

news2024/11/18 3:38:16

Transport-Layer Services

Transport layer, 传输层主要是完成进程(proces)到进程(process)之间的通讯的. 在传输层之下的IP协议, 提供的是best-effort的传输, 也就是对信息的正确性没有保证, 也就是IP的协议是unreliable的,

  1. TCP的协议是在IP协议至少提供可靠的数据传输. UDP没有提供
  2. 因为IP协议是主机到主机的, 所以Transport Layer的协议具有multiplexing以及demultiplexing的, 也就是多路复用与解复用

多路解复用的原理

TCP或者UDP将报文的数据部分交给正确的socket, 从而交给正确的进程. (主机联合使用ip地址和端口号将报文段发送给合适的套接字)

UDP

UDP比较简单, 基本上就是多路复用跟解复用, 再没有更多的功能了, 所以也可以理解成application跟IP层的通讯

为什么要有UDP

  • 不需要要链接
  • 简单
  • 没有拥塞控制, 所以可以尽快地发送报文

checksum

  • 每两个16bit的整数相加
  • 进位回滚获得checksum
  • 验证的时候, 所有的16的数据还有checksum相加, 如果为1, 则通过验证

可靠数据传输rdt的原理

rdt1.0

下层的通信完全可靠

那么发送方跟接收方都是可以等待上层调用就好了

在这里插入图片描述

rdt2.0

下层可能会出现比特差错, 就是checksum不对. 这时候需要发送ACK

  • 发送方发完之后需要等待ACK/NAK
  • 接收方需要发送ACK/NAK确认

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QMivhbqx-1684579685248)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f62405de-7b3c-45f0-a213-a7d6a4145eb5/Untitled.png)]

rdt2.1

如果ACK/NAK出错怎么办?

需要添加序号

发送方

有两个state: 0和1, 发送之后进入0 state的确认, 然后进入1 state等待调用, 如此重复

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VcgmT6tI-1684579685248)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3fea3cff-2c32-41d4-a31a-44d0cc6c5d66/Untitled.png)]

接收方

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bihkLj7X-1684579685249)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3fda6978-8504-496c-920b-d764d72988dd/Untitled.png)]

rdt2.2 无NAK协议

功能同rdt2.1, 但只使用ACK, 带编号的ack

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dq2r9Wrt-1684579685249)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/12572240-c1ea-4e62-91c5-ae92a172fcb0/Untitled.png)]

rdt3.0 具有比特差错和分组丢失

下层可能会丢失分组

那么就等待ACK一段时间, 超时重传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-McDom0d5-1684579685249)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/383df706-866e-499f-a0e7-0b4d32ccc41e/Untitled.png)]

rdt3.0的性能

可以工作, 但是在链路容量比较大的时候, 性能很差

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zkmAzBKh-1684579685250)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e07e2a89-239f-48f5-a600-22c2ca09b8b3/Untitled.png)]

Usender指的是利用率, 如果发一个等回复再发, 利用率就是取决于RTT

提高利用率可以使用流水线的发生方法

在这里插入图片描述

流水线协议

允许发送方在未得到对方确认的情况下一次发送多个分组

  • 必须增加序号的范围
  • 发送方/接收方需要有缓存区

两个通用的协议: GBN(Go back N - 退回N步)和SR(Select repeart - 选择重传)

滑动窗口(slide window)协议

其实就是缓存, 比如缓存容量是5个数据, 那么一次可以发5个数据到对方的缓存, 如果对方确认了, 那么滑动窗口移动1步, 发送方可以继续发送一个数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XUXGpfme-1684579685250)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/327490fb-4f90-4a3f-8707-3caa39c6291f/Untitled.png)]

这里有一点需要注意的就是滑动窗口向右移动需要最左边的数据确认才能移动, 如果3先确认了, 窗口还是不能移动的, 这样保证了左边的数据都是确认过的

GBN vs SR

GBN: 接收端的窗口尺寸=1, 也就是一旦一个分组没有发送成功, 如0,1,2,3,4, 如果1未成功的话,234都需要再发送. 因为如果接收方收到的分组是乱序的, 是直接丢弃掉的

SR: 接收窗口>1, 发送0,1,2,3,4,一旦1未成功,2,3,4,已发送,无需重发,选择性发送1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UfWqscuy-1684579685251)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/97a1f3d2-f3c2-43c4-ba30-7830250b55b0/Untitled.png)]

TCP

overview

  • 点对点通讯, 一个发送方, 一个接收方
  • 可靠有序的字节流
  • 管道化(流水线)
  • 双向数据流动
  • 面向连接 - 三次握手的链接
  • 流量控制

TCP往返演示(RTT)和超时

  1. 怎么评估RTT (round trip time)?

EstimatedRTT = (1- a)*EstimatedRTT + a * SampleRTT

推荐值: a = 0.125 R

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XZswkLJN-1684579685251)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f4e79649-6c5d-42db-a312-6d8704e5dd97/Untitled.png)]

这个EstimatedRTT 就是指数加权移动平均

  1. 怎么设置超时?

EstimtedRTT + 安全边界时间

DevRTT = (1-b)*DevRTT + b*|SampleRTT-EstimatedRTT|
推荐值: b=0.25

imeoutInterval = EstimatedRTT + 4*DevRTT

可靠数据传输

rdt

  • 管道化的报文段 (缓存)
  • 累积确认(像GBN)
  • 单个重传定时器(像GBN)

重传

  • 超时
  • 重复确认 (收到了ACK之后之后又收到了3个相同的ACK)

快速重传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qjAF6Z2u-1684579685251)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5102257c-c83d-436e-a7e7-bb0e4ad01caf/Untitled.png)]

快速重传是避免超时周期过长

流量控制

通过接收方在发送方的TCP段头部的rwnd字段通告空闲buffer大小告诉发送方发送的速率

链接管理

三次握手

  • 前面两次的握手有SYNbit, 第三次就不需要了
  • Sequence number client跟server是不一样的
  • Client再个server发送ack的时候, ack的number是y+1, 也就是用了server上一次发过来的sequence number + 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XPOzIst1-1684579685252)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24e451eb-26a1-4619-b9d2-cda0867c2818/Untitled.png)]

关闭链接

  • Client跟server发送关闭链接
  • Serverack ack client的关闭请求之后就会主动关闭
  • Client再发出关闭链接之后, timeout关闭链接, 就是client需要等待timeout才能关闭链接

在这里插入图片描述

拥塞控制

太多的数据需要网络传输,超过了网络的处理能力

拥塞的表现

  • 分组丢失 (路由器缓冲区溢出)
  • 分组经历比较长的延迟(在路由器的队列中排队)

拥塞控制的方法

端到端的控制 - TCP采用

网络辅助

拥塞感知

  1. 超时: 拥塞
  2. 3次重复ACK: 轻微拥塞

维持一个拥塞窗口的值: CongWin, 发送端限制已发送但未确认的数据量的上限

LastByteSent-LastByteAcked ≤ CongWin

速率控制方法

超时: CongWin降为1MSS,进入SS阶段然后再倍增到CongWin/2(每个RTT),从而进入CA阶段

超过3个重复ACK: CongWin降为CongWin/2, CA阶段

否则(正常收到Ack,没有发送以上情况):CongWin跃跃欲试↑

  • SS阶段:加倍增加(每个RTT) • CA阶段:线性增加(每个RTT)
  • CA阶段:线性增加(每个RTT)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FAZJgOnH-1684579685252)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4b69b924-e7d5-4f09-9424-d34005faf60c/Untitled.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c7fH6JVJ-1684579685253)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/981cb2c1-6f36-4338-aeae-7c0a1ca12196/Untitled.png)]

TCP的公平性

如果K个TCP会话分享一个链路带宽为R的瓶颈, 每个会话的有效带宽为R/K

如果2个竞争的TCP会话

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywNgOTPc-1684579685253)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5e7d297f-eb11-4018-8f8e-d733cf5a5448/Untitled.png)]

总结

传输层是process to process的链接, 其中TCP能够保证数据的可靠性, 实现这种可靠性需要ACK, 编号, 超时重发的机制, 而流水线协议, GBN或者是SR提高的通道的利用率. TCP同样也支持流量控制以及拥塞控制, 其中拥塞控制是端到端的控制, 通过检测重传以及重复的ACK控制流量, 方法包括了SS(slow start)以及CA(congestion avodidance)实现的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/548371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Word批量更改图片环绕方式与=尺寸大小

前提:一份Word文档里面有100张图片,有大有小,需要将100张图片更改为统一大小,宽度与高度均为5厘米,同时环绕方式也需要改成四周型。 默认Word图片的默认环绕方式为嵌入型,需要统一更改为四周型,…

多元时间序列 | RBF径向基神经网络多变量时间序列预测(Matlab完整程序)

多元时间序列 | RBF径向基神经网络多变量时间序列预测(Matlab完整程序) 目录 多元时间序列 | RBF径向基神经网络多变量时间序列预测(Matlab完整程序)预测结果评价指标基本介绍程序设计参考资料预测结果 评价指标 训练集数据的R2为:0.99805 测试集数据的R2为:0.98351 训练…

二叉树最大宽度_深度优先方式_20230520

二叉树最大宽度_深度优先方式_20230520 前言 给定一颗二叉树,求解其最大宽度。定义每层宽度为该层最左和最右之间的长度,也即左右两个端点之间的所跨越的长度,两个端点直接可能会包含一些延伸到本层的空节点,这些空节点的长度由…

【小沐学NLP】Python实现聊天机器人(OpenAI,模型概述笔记)

🍺NLP开发系列相关文章编写如下🍺:1🎈【小沐学NLP】Python实现词云图🎈2🎈【小沐学NLP】Python实现图片文字识别🎈3🎈【小沐学NLP】Python实现中文、英文分词🎈4&#x1…

Springcloud1----->Hystrix

目录 雪崩问题服务降级原理实践order降级处理user降级处理 服务熔断原理实践 hystrix,英文意思是豪猪,全是是刺,一种保护机制,即熔断器。 主页:https://github.com/Netflix/Hystrix/ 雪崩问题 在微服务中,…

selenium自动化测试报告_selenium自动化测试断言

一、元素操作方法 方法: 1、.send_keys() # 输入方法 2、.click() # 点击方法 3、.clear() # 清空方法 复制 注意:在输入方法之前一定要清空操作!! # 导包 from time import sleep from selenium import webdriver# 实例化浏览器 driver webdriver…

这才是自动化测试,资深测试构建持续交付体系(高质量)持续集成...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试-自动化测…

OptimizePI仿真流程

OptimizePI软件介绍 OptimizePI是用于针对PI设计进行优化的一个设计流程,可以针对PDN的设计进行仿真计算,主要功能包括以下几个: PDN前仿真分析PDN后仿真分析PDN阻抗检查去耦电容的回路电感分析芯片的电源管脚的电感分析去耦电容最佳位置评…

一文参透AB斗篷的前世今生

做FP独立站的应该都对cloak斗篷不陌生,cloak已经成为出海营销行业的必备工具之一。尽管使用cloak并不能保证一定有效,但不使用cloak却也是不可行的。今天本文将详细讲解cloak系统的“前世今生”,以便让大家更好地了解cloak系统并能挑选到最适…

【中间件】通过 docker-compose 快速部署 Zookeeper 保姆级教程

文章目录 一、概述二、前期准备1)部署 docker2)部署 docker-compose 三、创建网络四、Zookeeper 编排部署1)下载 Zookeeper2)配置3)启动脚本 bootstrap.sh4)构建镜像 Dockerfile5)编排 docker-c…

如何使用ChatGpt来学习和提问【对话ChatGPT】?

ChatGPT的不断发展和进步,我们需要工作中很多时候会用到ChatGPT,那么如何使用ChatGPT来解决我们工作中的问题呢? Q1如何向ChatGPT提问,从而更快解决我们的问题? ChatGPT:以下是向ChatGPT提问的一些提示&a…

CISSP和Security+的区别和学习建议

当谈到网络安全认证时,经常有朋友问我CISSP 与 Security认证。两者都是业内比较认可,对实际工作有所帮助的认证,但是哪一个适合自己呢,区别又是什么呢? 在深入研究细节之前,让我们先简要了解一下 CISSP 与 …

深度学习之自编码器实现——实现图像去噪

大家好,我是带我去滑雪! 自编码器是一种无监督学习的神经网络,是一种数据压缩算法,主要用于数据降维和特征提取。它的基本思想是将输入数据经过一个编码器映射到隐藏层,再通过一个解码器映射到输出层,使得输…

数字宁夏“1244+N”行动进行时,实在智能以AI为宁夏全区县数字化转型加“数”度

建设数字中国是数字时代推进中国式现代化的重要引擎,是构筑国家竞争新优势的有力支撑。现如今,政府部门发展数字经济已然成为新科技浪潮下的战略选择。可以预见,在数字化浪潮的推动下,中国经济将迎来新的高峰。 近日,宁…

English Learning - L3 作业打卡 Lesson2 Day13 2023.5.17 周三

English Learning - L3 作业打卡 Lesson2 Day13 2023.5.17 周三 引言🍉句1: A blacklist is illegal now.成分划分弱读爆破语调 🍉句2: But at one time, some businesses refused to employ people who were on a blacklist for belonging to unpopular…

【正点原子STM32连载】 第十一章 STM32时钟配置 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十一…

log4net在Asp.net MVC4中的使用

1、安装log4net插件 新建Asp.net MVC4项目&#xff0c;并在Nuget控制台输入命令&#xff0c;或者直接搜索log4net在线安装&#xff0c;安装log4net >Install-Package log4net -Version 2.0.15 2、配置web.config文件 <?xml version"1.0" encoding"ut…

小试牛刀:应用深度强化学习优化文本摘要思路及在裁判文书摘要上的实践效果

一、引言 近期&#xff0c;随着大模型的出现&#xff0c;强化学习再一次的引起了本人的兴趣&#xff0c;本文将应用深度强化学习来优化文本摘要模型&#xff0c;使生成的摘要更加的流畅。在此之前&#xff0c;大家都采用了很多种方式训练摘要系统&#xff0c;例如&#xff1a;…

MySQL的主从实战

MySQL的主从实战 1、Mysql主从的必要性 访问量不断增减&#xff0c;Mysql服务器的压力增大&#xff1b;就需要对Mysql进行优化与改造&#xff1b; 实现Mysql的高可用MySQL的主从复制搭建 主从搭建的目的就是实现数据库冗余备份同步主服务器和Slave服务器&#xff0c;一旦Mas…

Vivado综合属性系列之七 DONT TOUCH

目录 一、前言 二、DONT TOUCH ​ ​2.1 属性说明 ​ ​2.2 属性用法 ​ ​2.3 工程代码 ​ ​2.4 参考资料 一、前言 ​ ​设计中经常会遇到一些信号&#xff0c;模块等被综合工具优化&#xff0c;而实际这些部分确是我们所需要的&#xff0c;针对这种情况&a…