当前位置: 首页 > news >正文

计算机网络之运输层

一、概述

物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信

但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程

如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务,运输层协议又称端到端协议

 

 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的运输连接管理就是使运输连接的建立和释放都能正常地进行

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

  • 客户端发起关闭请求,一去一回后进入半关闭状态【客户端不再发送数据,服务端可能还会发】
  • 服务器将自己剩余的数据发送完后也发送一个关闭请求,接着客户端给予回应后服务器关闭,客户机则要等到一段时间后完全关闭(防止发给服务器的确认报文丢失)

1.9首部格式

  • 源端口:占16比特,写入源端口号,用来标识发送该TCP报文段的应用进程

  • 目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程

  • 序号:占32比特,取值范围[ 0 , 2^{32} − 1 ] ,序号增加到最后一个后,下一个序号就又回到0。作用是指出本TCP报文段数据载荷的第一个字节的序号
  • 确认标志位ACK:取值为1时确认号字段才有效,为0时确认号字段无效

确认号:占32比特,取值范围 [ 0 , 2^{32} − 1 ],序号增加到最后一个后,下一个序号就又回到0。可理解为若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据

  • 数据偏移:占4比特,并以4字节为单位

        用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处。这个字段实际 上是指出TCP报文段的首部长度

首部固定长度为20字节,因此数据偏移字段的最小值(0101)_2

  • 保留字段:占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格式配置文件&#xff0c;在这里记录一下&#xff0c;方便以后查看。 需要引用的库&#xff1a; Microsoft.Extensions.Hosting 创建json格式文件&#xff1a;appsettings.json 在工程文件中包含json文件&#xff1a; <ItemGroup><Content In…...

vue 通过ref调用router-view子组件的方法

由于用的vue2.7版本&#xff0c;但用了vue3 setup的语法&#xff1b; 注意&#xff1a;是vue2的template结构&#xff0c;vue3的setup语法&#xff1b;非这种情况需要举一反三。 处理方案&#xff1a; 1、对router-view加上ref template修改 直接对router-view加上ref&#x…...

在全球碳市场中崭露头角的中碳CCNG

在全球气候治理的大背景下&#xff0c;中国碳中和发展集团有限公司&#xff08;简称中国碳中和&#xff09;正在成为全球碳交易市场的一个重要参与者。随着国际社会对碳排放的日益关注&#xff0c;中国碳中和凭借其在碳资产开发、咨询与管理等领域的深厚积累&#xff0c;正成为…...

uni-app - 弹出框

目录 1.基本介绍 2.原生uinapp 通过uni.showActionSheet实现 3.使用组件 Popup 弹出层 ③效果展示 1.基本介绍 弹出框让我们在需要时在屏幕底部弹出一个菜单&#xff0c;它通常用于在各种应用程序中进行选择操作。Uniapp为我们提供了基本的底部弹出框组件&#xff0c;但它也有…...

深度学习之基于Tensorflow卷积神经网络鸟类目标识别检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;在鸟类目标识…...

关闭EntityFramework日志输出SQL

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; EntityFramework日志输出SQL 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; EntityFramework日志输出SQL&#xff0c;造成发布后&#xff0c;无效日志太多&#xff0c;且容器化部…...

重新开启GPT Plus充值通道——基于前端开发者工具

chatGPT PLUS充值通道的关闭 由于chatGPT用户激增&#xff0c;近日&#xff0c;OpenAI的CEO Sam Altman宣布需要暂停新用户对ChatGPT Plus的订阅。在X上&#xff0c;他表达了对于确保用户体验的承诺&#xff0c;同时也提到了用户可以通过应用程序内的通知功能来了解服务恢复的…...

技术细分|推荐系统——推荐系统中的数据去偏方法

本篇的主要脉络同样依据中科大何向南教授、合工大汪萌教授联合在 TKDE 上的一篇综述文章展开&#xff1a;Bias and Debias in Recommender System: A Survey and Future Directions。 下面按照前导文章中介绍的数据偏差 Selection Bias、Conformity Bias、Exposure Bias、Posit…...

多功能回馈式交流电子负载的应用

多功能回馈式交流电子负载是用于模拟和测试电源、电池等电子设备的负载工具。它具有多种应用&#xff0c;可以用于测试和评估各种类型的电源&#xff0c;包括直流电源和交流电源。它可以模拟各种负载条件&#xff0c;如恒定电流、恒定电压和恒定功率&#xff0c;以验证电源的性…...

AIGC专题报告:生成式人工智能用例汇编

今天分享的是AIGC系列深度研究报告&#xff1a;《AIGC专题报告&#xff1a;生成式人工智能用例汇编》。 &#xff08;报告出品方&#xff1a;德勤&#xff09; 报告共计&#xff1a;16页 生成式人工智能&#xff08;AI&#xff09;的兴起 生成式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的功能模块以及设计方式进行分析&#xff0c;使用Android平台和Ssm框架进行开发设计&#xff0c;具体研究内容如下&#xff1a; (1) 系统管理员主要对用户管理、类型管理、娱乐天地管理、投诉举报管理、学习平台、我的收藏管理、系统管理等功能进…...

终极解放双手:MAA明日方舟自动化助手完整指南

终极解放双手&#xff1a;MAA明日方舟自动化助手完整指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.com…...

第33篇:超参数调优实战——用网格搜索与随机搜索为模型“精调”(项目实战)

文章目录项目背景技术选型架构设计核心实现第一步&#xff1a;封装训练评估过程第二步&#xff1a;定义搜索空间并执行搜索踩坑记录效果对比项目背景 在之前的实战中&#xff0c;我们搭建了一个基础的图像分类模型&#xff0c;用的是经典的ResNet架构和CIFAR-10数据集。模型跑…...

终极指南:用BthPS3驱动让PS3控制器在Windows上重获新生

终极指南&#xff1a;用BthPS3驱动让PS3控制器在Windows上重获新生 【免费下载链接】BthPS3 Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals 项目地址: https://gitcode.com/gh_mirrors/bt/BthPS3 还记得那些年&#xff0c;你满怀期待…...

阿里云社招一面:数据库中有 1000 万数据的时候怎么分页查询?

今天给大家分享一道阿里云社招面试中的经典问题——如何处理千万级数据的分页查询。这不仅是高频面试题&#xff0c;更是实际业务中必须解决的性能难题。下面我会从基础实现到阿里级优化方案&#xff0c;逐步拆解这个问题的技术要点。 1. 基础方案&#xff1a;LIMIT OFFSET的致…...

终极免费Switch模拟器Ryujinx:在PC上畅玩任天堂游戏的完整实战指南

终极免费Switch模拟器Ryujinx&#xff1a;在PC上畅玩任天堂游戏的完整实战指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 你是否曾梦想在电脑上体验《塞尔达传说&#xff1a;旷野…...

掌握LCU API:重构你的英雄联盟游戏体验

掌握LCU API&#xff1a;重构你的英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾在英雄联盟对局中因为手动操作繁琐…...

WorkshopDL:跨平台玩家的Steam创意工坊下载解决方案

WorkshopDL&#xff1a;跨平台玩家的Steam创意工坊下载解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了游戏&#xff0c;却无法享…...

CefFlashBrowser:3步解决Flash内容无法访问的终极方案

CefFlashBrowser&#xff1a;3步解决Flash内容无法访问的终极方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 你是否曾经遇到过这样的尴尬时刻——想重温儿时的经典Flash游戏&#xf…...

Mistral Vibe:基于CLI的智能编码助手,赋能自然语言编程与项目感知

1. 项目概述&#xff1a;Mistral Vibe&#xff0c;一个能“听懂”你项目的命令行伙伴 如果你和我一样&#xff0c;每天大部分时间都泡在终端里&#xff0c;和代码、配置文件、版本控制系统打交道&#xff0c;那你肯定也幻想过&#xff1a;要是能直接用自然语言告诉电脑“帮我重…...

League-Toolkit深度解析:LCU API驱动的英雄联盟客户端增强工具实战指南

League-Toolkit深度解析&#xff1a;LCU API驱动的英雄联盟客户端增强工具实战指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在英雄联盟…...