计算机组成原理 运输层

文章目录

  • 运输层
    • 运输层协议概述
      • 进程之间的通信
      • 运输层的两个主要协议
      • 运输层的端口
    • 用户数据报协议 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) 所确定。

可靠传输的工作原理

停止等待协议

  1. 无差错情况
    停止等待协议是最简单的无差错情况。

  2. 出现差错
    第一, 在发送完一个分组后,必须暂时保留已发送的分组的副本(在发生超时直传时使用)。只有在收到相应的确认后才能消除暂时保衍的分组副本。
    第二,分组和确认分组都必须进行编号。。这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认。
    第二,超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。

  3. 确认丢失和确认迟到
    在这里插入图片描述

  4. 信道利用率
    停止等待协议的优点是简单,但缺点是信追利用率太低.

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)就是让发送方的发送速率不要太快,要让接收方来得及接收。
在这里插入图片描述

![TCP 连接的一方收到零窗口通知,启动持续计时器(persisence timer),就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。

TCP 的传输效率

第一种机制是 TCP 维持一个变量,它等于最大报文段长度 MSS 心吓
只要缓存中存放的数据达到 MISS 字节时,就组装成一个 TCP 报文段发送出去。第二种机制是发送方的应用进程指明要求发送报文段,即 TCP 支持的推送(push)橾作。第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过
MSS) 发送出去。

TCP 的拥塞控制

拥塞控制的一般原理

若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫作拥塞(congestion) 。

拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。流量控制往往是指点对点通信量的控制。
在这里插入图片描述

TCP 的拥塞控制方法

TCP 进行拥塞控制的算法有四种,即慢开始(slow-start)、拥塞避免(congestion avoidance) 、快重传(fast retransmit)和快恢复(fast recovery)

  1. 慢开始和拥塞避免
    作基于窗口的拥塞控制。为此,发送方维持一个叫作拥塞窗
    cwnd (congestion winndow) 的状态变量。拥塞饼口的大小取决千网络的拥塞程度,并且是动态变化着的。发送方自己的发送窗口等于拥塞窗口。
    只要为在超时时间内收到确认消息就可以认为网络拥塞。
    慢开始算法的思路是这样的:当主机在已建立的 TCP 连接上开始发送数由小到大逐渐增大注入到网络中的数据字节,也就是说,由小到大逐渐增大拥塞窗口数值。
    为了防止拥塞窗口 cwnd 增长过大引起网络拥塞,还需要设置一个慢开始门限 ss hresh状态变量(可以把门限 ss hresh 的数值设置大些,

在这里插入图片描述

采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
在这里插入图片描述

在这里插入图片描述

接收方窗口又称为通知窗口(advertised ndow) 。因此,从接收方对发送方的流护控制的角度考虑,发送方的发送窗口一定不能超过对方给出的接收方窗口值 rwnd

主动队列管理AQM

网络层的策略对 TCP 拥塞控制影响最大的就是路由器的分组丢弃策略。在最简单的情况下,路由器的队列通常都按照“先进先出 “FIFO (First In First Out)的规则处理到来的分组。

应当在队列长度达到某个值得警惕的数值时(即当网络拥塞有了某些拥塞征兆时),就主动丢弃到达的分组。这样就提醒了发送方放慢发送的速率,因而有可能使网络拥塞的程度减轻,

TCP 的运输连接管理

TCP 的连接建立

三次握手
在这里插入图片描述

TCP 的连接释放

在这里插入图片描述

TCP 还设有个保活计时器keepalive timer) 。设想有这样的情况:
客户已启动与服务器建立CP 连核。但后来客户端的主机突然出故障。

TCP 的有限状态机

在这里插入图片描述

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

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

相关文章

TensorRT模型优化部署 (八)--模型剪枝Pruning

系列文章目录 第一章 TensorRT优化部署(一)–TensorRT和ONNX基础 第二章 TensorRT优化部署(二)–剖析ONNX架构 第三章 TensorRT优化部署(三)–ONNX注册算子 第四章 TensorRT模型优化部署(四&am…

Go-安装与基础语法

TOC 1. Go 安装与环境变量 1.1 下载 需要从Go语言的官方网站下载适合你操作系统的Go语言安装包。Go语言支持多种操作系统,包括Windows、Linux和Mac OS。 对于Windows用户,下载.msi文件,然后双击该文件,按照提示进行安装即可。…

python的装饰器详解

目录 一:介绍 二:在方法中使用 三:在类中使用 四:python自带的装饰器 一:介绍 Python的装饰器是一种高阶函数,它允许你在不改变函数内部逻辑的情况下,给函数添加额外的功能。装饰器本质上是…

【C++进阶】心心念念的红黑树,它来了!

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

Spring框架是如何解决Bean创建过程中的循环依赖问题的

引言 本文主要梳理了Spring框架Bean创建过程中应对循环依赖问题的相关源码。我在手写super-mini-webpackhttps://blog.csdn.net/q1424966670/article/details/135628531?spm1001.2014.3001.5502的时候也介绍过解决循环依赖的算法:Map记忆化搜索。可以猜测这段源码…

ACL【新华三与华为的区别】

【解释】acl简单点解释就是,一套根据需求而设置的规则 【背景】 192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段,要求使用基本 ACL 实现20_1 可以访问 20_6 的 TELNET 服务,但不能访问 FTP 服务 【操作步骤】 {易混点 }:1. …

机器学习周刊第六期:哈佛大学机器学习课、Chatbot Ul 2.0 、LangChain v0.1.0、Mixtral 8x7B

— date: 2024/01/08 — 吴恩达和Langchain合作开发了JavaScript 生成式 AI 短期课程:《使用 LangChain.js 构建 LLM 应用程序》 大家好,欢迎收看第六期机器学习周刊 本期介绍10个内容,涉及Python、机器学习、大模型等,目录如下&#xff…

Miracast手机高清投屏到电视(免费)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Miracast概述 Miracast是一种无线显示标准,它允许支持Miracast的设备之间通过Wi-Fi直接共享音频和视频内容,实现屏幕镜像或扩展显示。这意味着你可以…

C++常用类

1、QString 字符串类 QString 是Qt的字符串类,与C的std::string相比,不再使用ASCII编码。QString使用的Unicode编码。 QString 完全支持中文, 但是由于不同的技术可能会采用不同的编码。有时候也会遇到中文编码的一致性问题。 如果后续的学习…

PointMixer: MLP-Mixer for Point Cloud Understanding

Abstract MLP-Mixer 最近崭露头角,成为对抗CNNs和Transformer领域的新挑战者。尽管相比Transformer更为简单,但通道混合MLPs和令牌混合MLPs的概念在图像识别任务中取得了显著的性能。与图像不同,点云本质上是稀疏、无序和不规则的,这限制了直接将MLP-Mixer用于点云理解。为…

i18n多国语言Internationalization的实现

i18n 是"Internationalization”的缩写,这个术语来源于英文单词中首尾字母“”和“n”以及中间的字符数(共计18个字符) 当我们需要开发不同语言版本时,就可以使用i18n多国语言的一个操作处理,i18n主要实现那一方面的内容呢?…

项目压测优化实践思路

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…

日本樱岛火山喷发遥感卫星影像监测

日本樱岛火山喷发监测 当地时间2024年1月9日15时许,位于日本九州地区鹿儿岛县的樱岛南岳山顶火山口,开始喷发,火山烟雾从火山口上升至空中1200米左右。目前,日本气象厅将樱岛的火山警戒级别维持在3级,限制民众入山。 火…

HCS私有云简介

1、HCS简介和发展史 华为云产品:私有云和公有云,现在的私有云已经和公有云越来越像了FusionSphere是华为的一个品牌2016年,在5.0版本的时候,华为Openstack叫FusionSphere Openstack 5.0,底层用的是suse操作系统&#…

BitLocker 驱动器加密

BitLocker 简介 BitLocker 驱动器加密是一项由微软开发并集成在Windows操作系统中的数据保护功能,其主要作用是通过加密存储在硬盘驱动器上的数据来增强信息安全。具体来说: 数据安全:BitLocker可以对整个操作系统卷(包括系统分区…

开源图床Lychee本地如何部署并结合内网穿透工具实现远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

酒店订房小程序源码系统:帮您打造类似美团的酒店模式的小程序 带完整的安装部署教程

随着移动互联网的快速发展,小程序已经成为一种新型的应用形态,为各大行业提供了更加便捷的服务。其中,酒店预订小程序作为一种方便快捷的预订方式,备受用户青睐。小编给大家分享一款酒店订房小程序源码系统,旨在帮助您…

中霖教育:中级会计师报名条件是什么?

一、学历要求 报考中级会计师的考生需要具备大专及以上学历,如果不满足学历要求是无法报考的。 二、工作经验要求 报考中级会计师的考生需要具备一定的工作经验。根据规定,不同的学历对从业年限要求不同,主要有以下几种情况: …

多租户体系实现

文章目录 核心思路方案选择设计考量安全性扩展性通用性易用性 具体实现租户信息透传透传变量名命名规范应用内透传应用间透传 数据层租户隔离MySQL存储方案:多租户Mybatis插件Mybatis插件特点使用多租户Mybatis插件的优势参考文档 应用场景 经过工作中的一处场景启发…

机器学习周刊第五期:一个离谱的数据可视化Python库、可交互式动画学概率统计、机器学习最全文档、快速部署机器学习应用的开源项目、Redis 之父的最新文章

date: 2024/01/08 这个网站用可视化的方式讲解概率和统计基础知识,很多内容还是可交互的,非常生动形象。 大家好,欢迎收看第五期机器学习周刊 本期介绍7个内容,涉及Python、概率统计、机器学习、大模型等,目录如下: 一个离谱的Python库看见概率,看见统计2024机器学习最…