【计算机网络】运输层

概述运输层服务

运输层协议为运行在不同主机上的应用程序提供了逻辑通信功能。
运输层协议是在端系统中而不是在路由器中实现的。

  • 运输层和网络层的关系:
    网络层提供主机之间的逻辑通信,而运输层为**运行在不同主机上的应用程序(进程)**提供逻辑通信。
    运输层协议只工作在端系统中!
  1. 因特网运输层概述:
    因特网为应用层提供了两种截然不同的运输层协议:UDP和TCP
  • UDP(用户数据报协议:
    提供不可靠,无连接的服务。
  • TCP(传输控制协议):
    提供可靠,面向连接的服务。
  • 多路复用和多路分解:
    简单来说,将由网络层提供的主机到主机交付服务延伸到为运行在主机上的应用程序提供进程到进程的交付服务就是运输层的多路复用和多路分解。
    将运输层报文段中的数据交付到正确的套接字的工作称为多路分解
    从源主机中接收来自不同进程的数据块,并将报文段传递到网络层,所有这些工作被称为多路复用

无连接运输:UDP

  • DUP报文结构:
    UDP报文结构

  • DUP检验和:
    UDP检验和提供了差错检测功能,发送方的UDP对报文段zh给的所有16比特子的和进行反码运算,求和是遇到的任何溢出都被回卷。
    虽然UDP提供了差错检测,但它对差错回复无能为力!

可靠数据传输原理:

  • rdt1.0:
    rdt1只考虑最简单的情况,即认为底层信道是完全可靠的,发送方发送,接收方接收就完事了
  • rdt2.0:
    底层信道更为实际的模型是分组中的比特可能受损。rdt2.0使用了肯定确认(ACK)和否定确认(NAK),使用了这种机制之后,发送方能够得知那些报文被正确接收,那些没有被正确接收,因此需要重传,基于这样的可可奥数据传输协议称为自动重传请求协议(ARQ)。
    注意在rdt2.0中,当发送方处于等待接收方的ACK或者NAK确认报文的时候,不能从上层获得更多的数据,由于这种行为,rdt2.0被称为停等协议。
  • rdt3.0:
    rdt3.0对报文段上附加了序号,并且在发送方发送数据时,启动了一个定时器,如果定时器超时,则将重传该报文,注意这里由于使用了序号,所以发送方知道它因该发送那个报文段,这就解决了冗余数据分组的问题。由于rdt3.0的序号是0和1交替的,因此rdt3.0有时被称为比特交替协议。
  • 流水线可靠数据传输协议:
    这种协议呢,实际上就是在发送方的排队序列中,可以一次性发送不止一个分组(但这个分组是固定的),当接收到该分段所有的确认报文后,窗口向后移动,发送未发送的分组。
  • 回退N步(GBN)协议:
    回退N步协议也常被称为滑动窗口协议
    就是说,在一个窗口内,接收方必须按序接收分组,如果说,本来应该接收n分组,但是n+1分组到达,接收方则丢弃n+1分组(实际上可能缓存),在发送方回退,从n分组开始重新发送,这就是回退N步协议。
  • 选择重传:
    选择重传优化了回退N步协议,即接收方缺少哪个,发送方就发送哪个,那是怎么实现的呢?
    发送方在每个报文发送时都启动一个定时器,在接收方,按序应该接收n,但是收到了n+1,那么接收方就缓存这个分组,直到n分组在发送方的定时器到时,发送方重新发送n分组,接收方接收到n+1之前的所有分组之后,才向上传输。

面向连接的传输:TCP

MSS:最大报文段长度,注意到MSS是指在报文段里应用层数据的最大长度,而不是只包括首部的TCP报文段的最大长度。
MTU:最大链路层帧长度

  • TCP报文结构:
    TCP报文结构

    • 源端口号和目的端口号用于多路复用/多路分解
    • 序号和确认号:用于可靠传输
    • 首部长度(数据偏移):TCP首部长度,由于选项字段的原因,TCP首部长度可变
    • 选项
    • 标志字段:ACK用于指示确认,RST,SYN,FIN用于连接建立和拆除,PSH只是接收方应将数据交给上层,URG用来指示报文段里存在着被发送端的上层实体指示为“紧急”的数据。
  • 序号和确认号

  • 往返时间估计与超时:
    往返时间估计是实时的,并且与上一个时间相关联,但是当前的更能反应链路中的拥塞情况,所以当前的占更大的权重。

  • 可靠数据传输:
    超时时间加倍:就是说在传输过程中,发送端不是要等待接收端的确认报文嘛,如果说其中有个确认报文没有收到,这可能是因为链路中拥塞而导致的,如果说发送端很快的又发送了一个报文,那将会加重链路上的负担,所以,当没有收到确认报文的时候,发送端重新发送报文,并且将超时时间间隔设置为之前的双倍。

  • 流量控制:
    在TCP连接的两端,都会存在缓存,在接收端,接收到的报文首先存放到缓存中,应用程序按需从缓存中拿数据,而这个速度可快可慢,如果说应用程序从缓存中拿数据的速度很慢,而发送端发送数据的速度很快,那么导致接收端缓存溢出,导致丢弃报文。
    解决:在进行数据传输和发送确认报文的时候,接收端会告知发送端缓存情况,发送端根据这个缓存情况来发送报文。
    那么如果说,接收端的缓存满了,发送端收到这个消息,那么发送端就会停止发送,那何时开始继续发送?实际上,当接收端告知发送端缓存已满时,发送端还会发送一字节的报文,以用来确认缓存区清零,并且开始发送报文。

  • TCP连接管理:
    TCP三次握手

我们来看客户端想要和服务器建立TCP连接的情况:

  1. 首先,客户端发送一个SYS字段设置为1,并且随机序号(x)的SYS报文
  2. 服务器收到该报文后,为该连接分配内存,并且也设置一个序号,然后也设置SYS字段为1,的ACK报文,注意这里ACK序号为x+1,告诉客户端已经收到序号为x的数据
  3. 客户端发送一个确认报文,ACK字段为1,seq = y+1
    由于收到连接请求报文的时候,服务器会分配缓存,这就为攻击者提供了便利,攻击者发送很多请求连接报文,而服务器一直保持这种半连接状态,服务器上的内存总会被分配完的,那么如何有效的避免这种攻击呢?就是服务器生成一个SYS cookie,这个cookie由源地址IP和端口号生成。

TCP拥塞控制

首先,我们来讨论三个问题:

  1. 一个TCP如何限制它向其连接发送流量?
  2. TCP如何知道链路上发生了拥塞?
  3. 如果发生了拥塞,TCP如何降低发送速率?

我们来逐个解决这三个问题:

  1. TCP如何限制它向其连接发送流量?
    发送方的TCP拥塞控制机制追踪一个额外的变量:即拥塞窗口,还记得我们之前讲到过的窗口吗?在一个发送方中,未被确认的数据量不会超过cwnd和rwnd中的最小值,以此限制了发送量。
  2. TCP如何知道其链路上出现了拥塞?
    当出现拥塞的时候,在沿着这条路径上的一台(或多台)路由器的缓存就会溢出,引起一个数据报被丢弃,丢弃的数据报会引起发送方的丢包事件(要么超时要么收到三个冗余ACK,发送方就认为在发送方到接收方的路径上出现了拥塞指示。
  3. 如果发生了拥塞,TCP如何降低其发送速率?
    TCP使用下列指导性的原则回答这个问题:
    • 一个丢失的报文段表意味着拥塞
    • 一个确认报文段指示该网络正在向接收方交付发送方的报文段
    • 带宽检测
  • TCP拥塞控制算法:
    1. 慢启动
      当一条TCP开始连接时,cwnd的只通常初始置为一个MSS的较小值,在慢启动状态,cwnd的值以一个较小的MSS开始并且每当传输的报文段首次被确认,就增加一个MSS,那么慢启动状态何时停止?第一种情况就是:如果存在一个由超时指示的丢包事件(即拥塞),TCP发送方将cwnd设置为1并重新开始慢启动过程。它还将第二个状态变量ssthresh(“慢启动阈值”的速记)设置为cwnd/2,即当检测到拥塞时,将ssthresh置为拥塞窗口值的一半。第二种方式是直接与ssthresh的值相关联,即当cwnd==ssthresh时,慢启动过程结束并且TCP转移到拥塞避免模式。第三种结束慢启动的方式是,如果检测到3个冗余ACK这时TCPzhi’xing’yi’zh给快速重传并进入快速恢复状态。
    2. 拥塞避免
    3. 快速恢复

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

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

相关文章

python爬虫利用代理IP分析大数据

目录 前言 一、什么是代理IP? 二、为什么需要使用代理IP? 1.突破访问限制 2.提高访问速度 3.保护隐私 三、代理IP的分类 1.高匿代理IP 2.普通代理IP 3.透明代理IP 四、如何获取代理IP? 1.免费代理IP网站 2.付费代理IP服务商 五…

前端基础之CSS

目录 一、CSS介绍 CSS语法 CSS注释 CSS的几种引入方式 二、CSS选择器 基本选择器 组合选择器 属性选择器 分组和嵌套选择器 伪类选择器 伪元素选择器 选择器的优先级 三、CSS属性相关 宽和高 字体属性 文字属性 背景属性 边框 border-radius display属性 …

常见接口测试面试题

1、按你的理解,软件接口是什么? 答: 就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。 2、HTTP和HTTPS协议区别? 答: https协议需要到CA(Certificate Authority,证书…

物联网整体框架有哪些层面?

物联网是当前非常火热的话题,各个行业对物联网的关注和投入力度也很大,一些互联网巨头都在紧锣密鼓的布局物联网产业,抢占市场先机。 物联网的整体构架大致可以分为以下四个层面: 1.感知识别层 感知层是物联网整体架构的基础&…

HTML标题、段落、文本格式化

HTML标题&#xff1a; 在HTML文档中&#xff0c;标题是很重要的。标题是通过<h1> - <h6标签进行定义的&#xff0c;<h1> 定义最大的标题&#xff1b;<h6>定义最小的标题。 <hr> 标签在HTML页面中用于创建水平线&#xff0c;hr元素可用于分隔内容。…

【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

一、Nginx导言 1、引言 Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;也可以充当负载均衡器、HTTP 缓存和安全防护设备。它的特点是内存占用小、稳定性高、并发性强、易于扩展&#xff0c;因此在互联网领域得到了广泛的使用。 总结出以下三点: 负载均衡&#x…

CN考研真题知识点二轮归纳(4)

持续更新&#xff0c;上期目录&#xff1a; CN考研真题知识点二轮归纳&#xff08;4&#xff09;https://blog.csdn.net/jsl123x/article/details/134135134?spm1001.2014.3001.5501 1.既可以扩展网段又是二层的设备 网段一般指一个计算机网络中使用同一物理层设备&#xff…

小程序如何设置自动使用物流账号发货

小程序支持自动使用物流账号发货并生成运单号。商家需要与物流公司合作&#xff0c;获取物流账号&#xff0c;支持快递物流和同城外卖配送平台。具体方法请参考公众号之前发布的文章&#xff0c;例如可以搜索“快递账号”。 导入物流账号后&#xff0c;在小程序管理员后台->…

出海营销必看:如何避免邮件被识别为垃圾邮件

对于现在的商业环境来说&#xff0c;邮件通信已经成为企业与客户、合作伙伴以及员工之间沟通和交流的重要方式。然而&#xff0c;尽管企业发送的邮件通常都是正常的、合规的&#xff0c;有时候却会被系统错误地标记为营销邮件。这个情况给企业带来了很多困扰。 如果企业的邮件…

如何使用内网穿透远程访问Linux SVN服务?

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

使用vue3+vite+elctron构建小项目介绍Electron进程间通信

进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。 由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责&#xff0c;因此 IPC 是执行许多常见任务的唯一方法&#xff0c;例如从 UI 调用原生 API 或从原生菜单触发 Web 内容的更改。 在 …

input 调起键盘 ,键盘距离输入框底部太近

input 调起键盘 &#xff0c;键盘距离输入框底部太近 解决方法 cursorSpacing‘20’ 单位是 ‘px’ <input cursorSpacing20 type"text" v-model"replyMain" />距离底部距离 20px &#xff0c;输入框距离键盘距离是20px

centos7 配置搭建 wordpress 博客

环境配置 系统:centos7 CPU:2核 内存:4G 硬盘:40G 一、登录云服务器器 1.单击实例--实例名称 2. 选择安全组页签,单击安全组操作列的管理规则, 3.在入方向添加需要放行的端口。本教程中,在安全组入方向放行SSH默认22端口、Apache默认80端口 4.登录服务器 5.更改主…

oracle如果不适用toad或者plsql工具如何获取索引建表语句

select dbms_lob.substr(dbms_metadata.get_ddl(INDEX,INDEX_NAME,DIXON))||; from dba_indexes where ownerDIXON这个语句可以获取dixon用户的所有索引创建语句&#xff0c;sql脚本形式呈现 点开一个语句查看 如果不使用dbms_lob.substr这个函数最后得到是一个clob selec…

USART HMI串口屏+单片机通讯上手体验

USART HMI串口屏单片机通讯上手体验 &#x1f516;本文采用淘晶驰4.3寸IPS串口屏实物验证&#xff0c;HMI串口屏经简单配置即可快速实现&#xff0c;串口通讯效果。串口屏上手简单&#xff0c;有独立的开发套件&#xff0c;容易上手&#xff0c;驱动显示和功能代码独立。本文仅…

2021上半年下午网络工程师试题

2021上半年下午网络工程师试题 试题一(共20分) 阅读以下说明&#xff0c;回答问题1至问题4&#xff0c;将解答填入答题纸对应的解答栏内。 【说明】 某企业网络拓扑图如图1-1所示。该网络可以实现的网络功能有: 1.汇聚层交换机A与交换机B采用VRRP技术组网&#xff1b; 2.…

PerfectPixel 插件,前端页面显示优化工具

1.简介 PerfectPixel 插件是一款适用于 Chrome 浏览器的网页前端页面显示优化工具&#xff0c;该插件能够帮助开发人员和标记设计人员在开发时将设计图直接加载至网页中&#xff0c;与已成型的网页进行重叠对比&#xff0c;以规范网页像素精度 作为一款可以优化前端页面显示的…

VSCode 设置平滑光标

1.点击左下角的设置按钮&#xff0c;再点击设置 2.点击文本编辑器&#xff0c;点击光标&#xff0c;勾选控制是否启用平滑插入动画。 3.随便打开一个文件&#xff0c;上下左右移动光标时&#xff0c;会发现非常的流畅。 原创作者&#xff1a;吴小糖 创作时间&#xff1a;2023…

[PHP]帮管客CRM客户管理系统 v5.1.0

帮管客CRM客户管理系统基于先进的CRM营销理念设计&#xff0c;集客户档案、销售记录、业务往来于一身&#xff0c;以凝聚客户关系、提升资源价值为核心&#xff0c;将潜在客户变为现实客户、从而提升销售量、提高用户的满意度&#xff0c;并增加企业竞争力。帮管客CRM是适用于中…

基于transformer的解码decode目标检测框架(修改DETR源码)

提示:transformer结构的目标检测解码器,包含loss计算,附有源码 文章目录 前言一、main函数代码解读1、整体结构认识2、main函数代码解读3、源码链接二、decode模块代码解读1、decoded的TransformerDec模块代码解读2、decoded的TransformerDecoder模块代码解读3、decoded的De…