万字+图片解析计算机网络运输层

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 万字+图片解析计算机网络运输层

1. 运输层概述

(1)、前情回顾

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

在这里插入图片描述

(2)、为什么需要运输层?

  1. 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
  2. 如何运行在不同的主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称端到端协议,因为运输层的作用范围是端到端

在这里插入图片描述

(3)、运输层的相关说明

  1. 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道

在这里插入图片描述

  1. 根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP无连接的UDP

2. 运输层端口号、复用与分用

(1)、为什么需要端口号?

  1. 运行在计算机上的进程使用进程标识符PID来标志
  2. 因特网上的计算机并不是使用统一的操作系统,不同的操作系统又使用了不同格式的进程标识符
  3. 为了使运行不同操作系统的计算机的应用进程之间能够进行通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识

(2)、端口号简介

端口号使用16比特取值范围0~65535。端口号只有本地意义,即端口号只是为了标识本地计算机应用层中的各进程在因特网中,不同计算机中的相同端口号是没有任何联系的。

分类

  1. 数值端口号0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议
  2. 登记端口号1024~49151为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记。
  3. 短暂端口号49152~65535留给客户端进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后。这个端口号可供其他客户进程使用

(3)、发送方的复用

  • 多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)发送数据称为 复用

应用进程的应用报文向下传递,有的被UDP协议封装成UDP数据报,有的被TCP协议封装成TCP报文段,然后再往下传输,被IP协议封装成IP数据报进行运输。

在这里插入图片描述

(4)、接收方的分用

  • 多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)接收时叫做 分用

IP数据报被接收方接收进行IP分用,如果IP数据报的协议字段为17,则将IP数据报中的数据载荷部分的UDP数据报向上传递给运输层,如果IP数据报的协议字段为6,则将IP数据报中的数据载荷部分的UDP数据报向上传递给运输层

在这里插入图片描述

(5)、常见的协议

  1. UDPRIP:520,DNS:53,TFTP:69,SNMP:161,DHCP:67/68
  2. TCPSMTP:25,FTP:20/21,BGP:179,HTTP:80,HTTPS:443

在这里插入图片描述

3. TCP(传输控制协议)与UDP(用户数据报协议)的对比

  1. UDP支持一对一,一对多,多对一和多对多交互通信;TCP只能是一对一通信

在这里插入图片描述

  1. UDP是无连接的(即发送方随时都可以发送数据报),TCP是面向连接的(在发送数据报之前必须建立连接,发送完毕后必须释放连接)

在这里插入图片描述

  1. UDP是面向应用报文的,TCP是面向字节流的

在这里插入图片描述

  1. UDP向上提供无连接不可靠传输服务(如果数据报出现误码或丢失,不进行任何处理);TCP向上提供面向连接可靠传输服务(发送方发送什么,接收方就接受到什么)

在这里插入图片描述

  1. UDP首部开销小仅8字节,TCP首部最少20字节,最大60字节。

在这里插入图片描述

4. 流量控制

(1)、为什么需要流量控制?

一般来说,我们总是希望数据传输得更快一些。但是如果发送方发送得过快接收方就可能来不及接收,这就会造成数据的丢失

(2)、流量控制

流量控制就是让发送方得的发送速率不要太快要让接收方来得及接收

(3)、实现方式

利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制

  1. TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小
  2. TCP发送方收到接收方的零窗口通知后,应启动持续计时器。持续计时器超时后,向接收方发送零窗口探测报文。当之前发送方应尽接收过了来自接收方的零窗口报文,但是接收方再次发送相应的改变发送窗口的大小的通知,如果其丢失,则会造成死锁,所以零窗口探测报文是用来打破这种僵局的。如下图所示

在这里插入图片描述

(4)、进行流量控制的过程

如下图所示

在这里插入图片描述
说明

seq 表示的是该数据段的首字节序号ACK表示的是确认分组ack表示的是对相应的序号之前的数据进行累计确认rwnd表示的是接收方的接收窗口大小,显然上图进行了三次流量控制

5. 拥塞控制

(1)、为什么需要拥塞控制?

  1. 拥塞:在某段时间,如果网络中的某一资源的需求超过了该资源所能提供的可用部分,网络性能就会变坏。
  2. 如果出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降

在这里插入图片描述

(2)、前提摘要

下面我们介绍的四种算法原理,假定如下条件

  1. 数据是单方向传送,而另一个方向只传送确认。
  2. 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定。
  3. 以最大报文段MSS的个数为讨论问题的单位,而不是以字节为单位。

(3)、慢开始、拥塞避免

慢开始、拥塞避免的过程说明

刚开始的时候cwnd设置为1ssthresh门限值设置为为16慢开始阶段,cwnd以乘以2的速度进行增长,当到达ssthresh门限值的时候,开始拥塞避免算法cwnd以1进行线性增长。当发现超时重传时,判断出现拥塞cwnd重新设置为1将ssthresh的值设置为发生拥塞时的cwnd的值的一半,重新开始慢开始算法。(数据自定

在这里插入图片描述

(5)、为什么需要快重传和快恢复算法?

有时候,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。这将导致发送方超时重传,并误认为网络发生了拥塞;发送方把拥塞窗口cwnd又设置为最小值1,并错误地启动慢开始算法,因而降低了传输效率

(4)、快重传

快重传:就是使发送方尽快进行重传,而不是等超时计时器超时再进行重传

  1. 要求接收方不要等待自己发送数据时才进行捎带确认,而是进行立即发送确认
  2. 即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
  3. 发送方一旦收到了3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时计时器超时再重传。

快重传的过程说明

发送方向接收方发送数据,发送数据M1、M2后都收到了接收方的确认,但是数据M3丢失,因此,发送方还会继续发送数据M4、M5、M6接收方会一直向发送方发送重复确认M2,发送方接收到三个重复确认后,对该报文段立即重传,而不是等到超时计时器超时。

在这里插入图片描述

(5)、快恢复

快恢复的过程说明

刚开始的时候cwnd设置为1ssthresh门限值设置为为16慢开始阶段,cwnd以乘以2的速度进行增长,当到达ssthresh门限值的时候,开始拥塞避免算法cwnd以1进行线性增长。当发现超时重传时,判断出现拥塞cwnd重新设置为1将ssthresh的值设置为发生拥塞时的cwnd的值的一半,重新开始慢开始算法、拥塞避免算法到cwnd为16,此时发送方收到3个重复确认,从而启动快重传、快恢复算法设置ssthresh为8,然后进行拥塞避免算法。(数据自定

在这里插入图片描述

6. 超时重传时间的选择

(1)、相关概念

  1. RTT:一个TCP数据报文段的往返传播时间
  2. 超时重传时间RTO不能小于RTT,不然会导致不必要的重传,使网络负荷增大

在这里插入图片描述

  1. 超时重传时间RTO不能远大于RTT,不然会使网络的空闲时间增大降低传输效率

在这里插入图片描述

(2)、超时重传时间的计算公式

这里的超时重传时间是加权平均值。因为单纯的几个不具有普遍性,会引起极端情况

在这里插入图片描述

(3)、超时重传后需要对超时重传时间进行更新吗?

  1. 因为发生了超时重传不能准确的计算相应的RTT,因为会被相应的重传报文段混淆

在这里插入图片描述

  1. 所以报文段每重传一次,就把重传时间RTO增大一些,典型的做法就是增大为旧值的两倍

在这里插入图片描述

7. TCP可靠传输的实现

(1)、实现方式

TCP基于以字节为单位的滑动窗口来实现可靠传输。

  1. 发送方在未收到接收方的确认时,可将发送窗口还未发送的数据全部发送出去
  2. 接收方只接收序号落入窗口内的数据,如果是未按序到达的数据,接收方会先将其存下来

(2)、实现过程说明

按序

刚开始的时候,发送方会收到接收方的一个确认报文段(rwnd = 20 , ack = 34)(表示接收窗口为20,期望收到的数据的序号为34),然后发送方向接收方发送数据,如果是按序到达的,接收方接收到之后,将相关数据从相应的接收缓存中删除,然后接收方的窗口向前移动并向发送方发送前面数据的累计确认分组发送方接收到后将窗口向前移动并将相关数据从发送缓存中删除

在这里插入图片描述

不按序

如果不是按序到达的,那么接收方的窗口保持不变,并向接收方发送未收到的数据的序号,当超过超时时间就会触发超时重传

在这里插入图片描述

(3)、特别说明

  1. 同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大
  2. 对于不按序到达的数据通常会将其先临时存放在接收窗口中,等待字节流中所缺失的字节收到后,再按序交付上层的应用进程。
  3. TCP要求接收方必须有累计确认和捎带确认机制,减少传输开销。
  4. TCP的通信是全双工通信。通信的每一方都在发送和接收报文段。

8. TCP的连接建立

(1)、TCP的连接建立要解决的三个问题

  1. 使TCP双方能够确知对方的存在
  2. 使TCP双方能够协商一些参数
  3. 使TCP双方能够对运输实体资源进行分配

(2)、建立过程说明

建立过程中,TCP客户机会首先发送给TCP服务器一个TCP连接请求报文(SYN = 1, seq = x),TCP服务器进程收到后发送一个TCP连接请求确认报文(SYN = 1,ACK = 1,seq = y,ack = x + 1)TCP客户端进程收到相应的报文后进入连接已建立状态,然后向TCP服务器进程发送一个TCP普通确认报文段,然后TCP服务器进程进入连接已建立状态

在这里插入图片描述

(3)、第三次的TCP请求的确认的确认是否多余?

不多余,这是为了防止已失效的连接请求报文段突然又传送到TCP服务器,因而导致错误

在这里插入图片描述

9. TCP的连接释放

(1)、 TCP客户进程向TCP服务器发送TCP连接释放报文

当TCP客户端进程要主动关闭连接时,TCP客户端进程就会向TCP服务器端发送一个TCP连接释放报文FIN = 1 ,ACK= 1,seq = u,ack = v)。此时TCP客户端进入终止等待状态

在这里插入图片描述

(2)、TCP服务器端进程向TCP客户端进程发送一个普通的TCP确认报文

然后TCP服务器端进程会向TCP客户端进程发送一个普通的TCP确认报文ACK = 1,seq = v,ack = u+ 1),且此时的TCP服务器端进入关闭等待状态,TCP客户端进程进入终止等待状态

在这里插入图片描述

此时TCP客户端进程到TCP服务器端的进程的连接已经关闭,而TCP服务器端到TCP客户端进程的连接还未关闭。所以此时TCP服务器端进程还可以给TCP客户端进程进行数据传输。

(3)、TCP服务器端进程向TCP客户端进程发送TCP连接释放报文

当TCP服务器端的进程数据传输完毕后,TCP服务器端进程会向TCP客户端进程发送TCP连接释放报文FIN = 1,ACK = 1,seq = w,ack = u + 1),且此时TCP服务器端进程进入最后确认状态

在这里插入图片描述
(4)、TCP客户端进程向TCP服务器端进程发送普通的TCP连接释放确认报文

TCP客户端进程收到TCP服务器端进程发送而来的TCP连接释放报文后,TCP客户端进程会向TCP服务器端进程发送一个普通的TCP连接释放确认报文。且此时从TCP服务器端进程到TCP客户端进程的连接关闭。TCP服务器端进程进入关闭状态,而TCP客户端进程进入时间等待状态。经过2MSL后进入关闭状态

在这里插入图片描述

(5)、TCP客户端进程有必要进入时间等待状态吗?可以直接进入关闭状态吗?

答案是必须进入时间等待状态。因为如果在TCP客户端进程发送完毕TCP连接释放确认报文后,该报文丢失,那么TCP服务器端进程就会一直重新发送相关的TCP连接释放报文,而如果是直接进入关闭状态的话,那么TCP无法进入关闭状态而导致资源的浪费

在这里插入图片描述
(6)、保活计时器

会出现的现象:TCP客户端出现故障,那么TCP服务器端该如何发现?

  1. TCP服务器进程每收到一次TCP客户进程的数据,就重新设置并启动保活计时器
  2. 如果保活计时器定时周期内未收到TCP客户端进程发来的数据,则当其到时后,TCP服务器进程就向TCP客户端进程发送一个探测报文段,以后每隔75秒钟发送一次。如果一连发送10个探测报文仍无TCP客户端进程的响应,TCP服务器端进程就认为TCP客户端进程所在主机出现了故障,就关闭这个连接。

10. TCP首部格式

在这里插入图片描述

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

序号: 占32比特,取值范围[0,2^32-1],序号增加到最后一个后,下一个序号就又回到0。指出本TCP报文段数据载荷的第一个字节的序号

确认号: 占32比特,取值范围[0,2^32-1],确认号增加到最后一个后,下一个确认号就又回到0。指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据

确认标志位ACK: 取值为1时确认号字段才有效;取值为0时确认号字段无效。TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1

数据偏移: 占4比特,并以4字节为单位。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。这个字段实际上是指出了TCP报文段的首部长度

窗口: 占16比特,以字节为单位。指出发送本报文段的一方的接收窗

同步标志位SYN: 在TCP连接建立时用来同步序号。终止标志位FIN: 用来释放TCP连接。复位标志位RST: 用来复位TCP连接。

推送标志位PSH: 接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。

校验和: 占16比特,检查范围包括TCP报文段的首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。

紧急指针: 占16比特,以字节为单位,用来指明紧急数据的长度。

填充: 由于选项的长度可变,因此使用填充来 确保报文段首部能被4整除,(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
12天前
|
安全 虚拟化
在数字化时代,网络项目的重要性日益凸显。本文从前期准备、方案内容和注意事项三个方面,详细解析了如何撰写一个优质高效的网络项目实施方案,帮助企业和用户实现更好的体验和竞争力
在数字化时代,网络项目的重要性日益凸显。本文从前期准备、方案内容和注意事项三个方面,详细解析了如何撰写一个优质高效的网络项目实施方案,帮助企业和用户实现更好的体验和竞争力。通过具体案例,展示了方案的制定和实施过程,强调了目标明确、技术先进、计划周密、风险可控和预算合理的重要性。
32 5
|
13天前
|
SQL 安全 网络安全
网络安全的护城河:漏洞防御与加密技术的深度解析
【10月更文挑战第37天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业资产的坚固堡垒。本文将深入探讨网络安全的两大核心要素——安全漏洞和加密技术,以及如何通过提升安全意识来强化这道防线。文章旨在揭示网络攻防战的复杂性,并引导读者构建更为稳固的安全体系。
30 1
|
22天前
|
SQL 安全 测试技术
网络安全的盾牌与剑——漏洞防御与加密技术解析
【10月更文挑战第28天】 在数字时代的浪潮中,网络空间安全成为我们不可忽视的战场。本文将深入探讨网络安全的核心问题,包括常见的网络安全漏洞、先进的加密技术以及提升个人和组织的安全意识。通过实际案例分析和代码示例,我们将揭示黑客如何利用漏洞进行攻击,展示如何使用加密技术保护数据,并强调培养网络安全意识的重要性。让我们一同揭开网络安全的神秘面纱,为打造更加坚固的数字防线做好准备。
39 3
|
9天前
|
安全 算法 网络安全
网络安全的盾牌与剑:漏洞防御与加密技术解析
【10月更文挑战第42天】在数字时代的海洋中,网络安全是守护数据宝藏的坚固盾牌和锋利之剑。本文将揭示网络安全的两大支柱——漏洞防御和加密技术,通过深入浅出的方式,带你了解如何发现并堵塞安全漏洞,以及如何使用加密技术保护信息不被窃取。我们将一起探索网络安全的奥秘,让你成为信息时代的智者和守护者。
21 6
|
9天前
|
存储 SQL 安全
网络安全的屏障与钥匙:漏洞防御与加密技术解析
【10月更文挑战第42天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业数据不被侵犯的关键防线。本文将深入探讨网络安全中的两大核心议题——漏洞防御和加密技术。我们将从网络漏洞的识别开始,逐步揭示如何通过有效的安全策略和技术手段来防范潜在的网络攻击。随后,文章将转向加密技术的奥秘,解读其在数据传输和存储过程中保护信息安全的作用机制。最后,强调提升个人和企业的安全意识,是构建坚固网络安全屏障的重要一环。
|
11天前
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
12天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
46 3
|
30天前
|
存储 安全 网络安全
网络安全的屏障与钥匙:漏洞防御与加密技术深度解析
【10月更文挑战第20天】在数字世界的迷宫中,网络安全是守护我们数据宝藏的坚固盾牌和锋利钥匙。本篇文章将带您穿梭于网络的缝隙之间,揭示那些潜藏的脆弱点—网络安全漏洞,同时探索如何通过现代加密技术加固我们的数字堡垒。从基本概念到实战策略,我们将一同揭开网络安全的神秘面纱,提升您的安全意识,保护个人信息不受侵犯。
51 25
|
12天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
38 2
|
26天前
|
边缘计算 自动驾驶 5G

推荐镜像

更多
下一篇
无影云桌面