《计算机网络——自顶向下方法》精炼——3.1-3.4.1

news2024/11/19 7:25:05

“生命在于运动,学习在于不断尝试。”——亚里士多德

文章目录

  • 运输层概述与服务
    • 运输层功能
    • 运输层概述
      • IP协议
      • UDP和TCP协议
  • 多路复用与多路分解
  • UDP
    • UDP相较于TCP的优点
    • UDP报文段结构
    • 检验和
    • 可靠数据传输
      • 构造可靠数据传输协议

运输层概述与服务

运输层为应用层提供了逻辑通信。从应用进程的视角来看,它们把数据送入运输层并从运输层获取数据。注意,运输层本身并不具备通信功能,它依靠它下层的网络层提供的服务来进行数据传输。

运输层功能

  1. 封装运输层报文组。运输层将从应用层送来的应用报文切割成小块以方便网络层进行发送,然后为每个小块封装上必要的信息,产生多个运输层报文段
  2. 借助网络层传输数据。在第一章中介绍过,网络分为网络边缘和网络核心,应用层和运输层是网络边缘特有的。在运输数据时,运输层将报文段发送给同主机的网络层,由网络层通过调用它和它下面两层的服务进行传输数据。到了目的主机后,目的主机的网络层再将数据向上发送到运输层。
    请添加图片描述
  3. 运输层为不同主机的进程提供逻辑通信,而网络层为不同主机提供逻辑通信。
  • 网络层将一个主机产生的所有数据发送给另一个主机,实现主机与主机之间的通信。
  • 运输层通过多路复用与多路分解,将来自其他主机的某个应用进程的数据精确的发送给该主机的某个应用进程,实现进程与进程之间的通信。

运输层概述

IP协议

IP协议是因特网的网络层协议,提供尽力而为交付服务,即只传输数据而对可靠性等没有任何保证。每台主机都有一个IP地址。经过网络层封装的报文称作数据报。

UDP和TCP协议

UDP和TCP是运输层的两个主要协议。

  1. UDP:一个非常简单的协议,只提供最基本的服务,比如多路复用与分解,比如完整性检查等。
  2. TCP:面向连接的运输层协议。提供可靠数据传输,拥塞控制等额外服务。

多路复用与多路分解

运输层采用多路复用和多路分解机制来与应用层交换数据。
第二章中介绍,运输层和应用进程之间通过套接字联系。通俗来讲,运输层收集所有套接字传来的信息,汇总,并发送给网络层,这个过程称为多路复用;这个过程的逆过程称为多路分解。
为了准确标识一个报文段从哪来,要到哪去,运输层报文段需要包含源端口号字段目的端口号字段
在这里插入图片描述
在UDP和TCP协议中的多路复用和多路分解有些不同:

  1. 在UDP协议中,一个套接字用一个二元组标识:目的主机IP地址和目的端口号。上图中的源端口号字段用于目的主机为源主机发送响应报文。
  2. 在TCP协议中,由于除欢迎套接字外的其他套接字都是专属于一个源主机和一个目的主机使用的,因此一个套接字用一个四元组标识:源主机IP地址,源端口号,目的主机IP地址,目的端口号。每个报文根据其源端口号字段和目的端口号字段被分解到连接套接字。

在Web服务器中,通常会为很多客户的TCP连接创建相应的连接套接字,有两种方式进行创建:

  1. 服务器为每个连接生成一个新进程,每个进程有一个连接套接字。
  2. 服务器只有一个进程,但为每个连接套接字创造一个新线程(轻量级的子进程)。这种做法往往是高效的,因为线程间传输数据的速度比进程快很多。

UDP

UDP运输层协议只提供最低限度的运输层服务。

UDP相较于TCP的优点

  1. 应用进程可以更精细的预测何时发送数据。由于TCP的拥塞控制机制,会把一些数据暂时留在源主机,这样的话就会造成延迟,UDP则没有这个问题。实时应用一般需要这种功能。
  2. 不建立连接。UDP无需建立连接,这使它无需遭受建立连接的时延,也不需要在端系统中维护连接状态,这使它能支持更多的客户连接。
  3. 分组首部开销小。TCP首部占20字节,UDP首部占8字节。

由于TCP和UDP各有优点,因此有一部分想要实现可靠数据传输但又不想受制于TCP拥塞控制机制的应用会采用UDP而且在应用层实现需要的额外服务。

UDP报文段结构

在这里插入图片描述
UDP报文段中,源端口号和目的端口号上文已经提过。

  • 长度字段指明了报文段的长度
  • 检验和字段提供了最基本的报文差错检测

检验和

检验和是差错检测的常用手段之一。它将报文段内所有16比特字的和进行反码运算。例如:

  1. 报文段中有三个16比特字:0110011001100000、0101010101010101、1000111100001100.
  2. 将三个比特字相加得到结果:0100101011000010
  3. 对这个结果取反码运算:1011010100111101,这个16比特字会被放入检验和。

UDP提供差错检测的原因是,相比于在网络核心的每一条链路上实现差错检测,只在端系统上实现这一功能是高效的(别忘记运输层只在端系统上部署),这也被称为端到端原则
注意,即使UDP能发现差错,但它并不能实现差错恢复。

可靠数据传输

可靠数据传输服务使用运输层中的可靠数据传输协议实现。这个协议使得从应用进程角度来看,运输层能提供一条可靠的“通道”来传输数据。协议通过调用数个函数来实现:
在这里插入图片描述

  1. rdt_send():可靠数据传输函数。
  2. udt_send():网络层提供的不可靠数据传输函数。
  3. rdt_rcv():可靠数据接收函数。
  4. deliver_data():应用层接收运输层数据的函数。

构造可靠数据传输协议

我们使用**有限状态机(FSM)**来表述协议的功能。FSM是一种抽象结构,它只会在有限的几个状态间切换,且从一个状态切换到另一个状态需要一些特定的条件。

  1. rdt1.0:信道完全可靠的可靠数据传输传输协议。
    底层信道可靠的情况下,协议只需要把信息送入信道并接受信息就可以了。如下图所示:
    在这里插入图片描述
    图中的两个FSM都只有一个状态,因此一直保持这个状态。横线上是状态的名称及开始传入的参数,横线下是这个状态实际采取的动作。
  • make_pkt:以应用进程传入的数据data作为参数,将data打包成packet(分组)
  • udt_send:直接将packet送入信道而不作其他处理。
  • extract:将packet中的data取出来
  • deliver_data:将data送入应用层
  1. rdt2.0:可能具有比特差错的信道的可靠数据传输协议。
    在这种情况下,信道只会造成比特差错,而不会有其他问题。也就是说,只需要解决比特差错的问题就可以。
    接收方通过发送给发送方肯定确认(ACK)来告知对方报文正确接收或通过否定确认(NAK)来告知对方报文出现问题。加入这种机制的协议称为自动重传请求(ABQ)协议
    在ABQ协议中,一般要有三个功能:
  • 接收方需要知道这条报文出了差错。这需要差错检测功能,UDP中的检验和字段就是这个目的。
  • 知道出了差错后,接收方要告知发送方这条报文有错。这需要接收方反馈功能,也就是上文讲的ACK和NAK。
  • 发送方知道报文有错后,需要重新传一份同样的报文。这需要重传功能。

rdt2.0的RSM如下:
在这里插入图片描述

  • 发送方中:
    从虚线箭头开始,发送方通过和1.0一样的步骤发送报文,然后进入等待回应的状态。在等待回应时,如果发送方接收到回应(rdt_rcv函数)且回应是NAK(isNAK函数),那么再次发送一份同样的报文(udt_send函数)并保持当前状态;如果回应是ACK(isACK函数),那么切换到等待上层调用状态。
  • 接收方中:
    从虚线箭头开始,如果接收方收到了报文(rdt_rcv函数)但报文损坏了(corrupt函数),那么将NAK报文打包并发送给接收方;如果报文未损坏(notcorrupt函数),那么接收数据并打包一个ACK报文发送出去。
    请添加图片描述
    我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!

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

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

相关文章

2022年宜昌市网络搭建与应用竞赛样题(二)

网络搭建与应用竞赛样题(二) 技能要求 (总分1000分) 竞赛说明 一、竞赛内容分布 “网络搭建与应用”竞赛共分三个部分,其中: 第一部分:网络搭建及安全部署项目(500分&#xff0…

传统工厂布局数字化的核心因素——智能工厂

近年来很多鼓励企业数字化转型的政策陆续出台,在一定程度上帮助企业减轻数字化转型的成本压力。但是企业数字化转型依然面临着诸多的问题与挑战。主要还是因为大部分企业,特别是制造型企业,数字化进程还在探索阶段,资金、人才、技…

接口自动化测试详解——持续集成流程中不可或缺的一环

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 接口自动化测试 Jenkins持续集成 总结 摘要: 在软件开发中,自动化测试已经成为了…

过滤器、拦截器、aop -> ‘三兄弟‘

目录 一、熟悉 三兄弟的区别 过滤器和拦截器的区别 使用场景 二、使用 filter Interceptor aop 一、熟悉 三个词都很熟悉,在某些课程或者博客中总被提到,但平时基本不怎么写; 三者在家族中的关系可以看下下边这张图,可以很…

52.现有移动端开源框架及其特点—PocketFlow-2

PocketFlow 性能 通过引入超参数优化组件,不仅避免了高门槛、繁琐的人工调参工作,同时也使得 PocketFlow 在各个压缩算法上全面超过了人工调参的效果。以图像分类任务为例,在 CIFAR-10 和 ImageNet 等数据集上,PocketFlow 对 ResNet 和 MobileNet 等多种 CNN 网络结构进行…

LT8471IFE#PBF-ASEMI代理亚德诺LT8471IFE#PBF原厂芯片

编辑-Z LT8471IFE#PBF参数描述: 型号:LT8471IFE#PBF 输入电压:2.6-50V 静态电流:2.2 mA 停机时的静态电流:0.01μA 正反馈电压:789 mV 反馈引脚偏置电流:30 nA 开关频率范围&#xff1a…

产品经理该怎么催进度?

这算是一个项目管理相关的问题,很多公司会把产品经理与项目经理的工作职能划分并没有这么清晰,而且项目是否能够按时上线,在整个项目推进过程中也是至关重要的。如果是公司的自研产品,项目没办法定期交付,挨老板一顿骂…

Barotrauma潜渊症私人服务器架设教程

准备工具: 服务器一台(Ubuntu系统) 家用电脑一台(有网就行) 准备阶段 通过SSH登入服务器。 服务端需要下载三个软件。 窗口管理工具 Screen 。用于将服务器挂在后台中运行。 SteamCMD 。用于下载潜渊症服务器。 …

【YOLO 系列】YOLO v4-v5先验知识

文章目录 输入端Mosaic数据增强Self-Adversarial TrainingCmBN 主干网络Mish激活函数DropBlock 正则化CSPNetFocus结构 NeckPANet 输出目标损失函数IoU LossGIoU LossDIoU LossCIoU Loss总结 DIOU_nms 参考 YOLO v4和v5版本在v3版本的基础上,组合了多种先进算法提升…

OLAP分析型数据库clickhouse的选型、安装与试用

一、背景: 目前,在做项目时,遇到使用oracle数据库进行大表查询分析时,查询比较慢,而且随着表数据逐渐积累,数据量过亿(按月估计)。架构师针对几个关键要点(非实时数据、核心场景查询分析、对事务要求低、数…

谷粒商城二十四springCloud之Sleuth+Zipkin 服务链路追踪

为什么用 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。 主要体现在,一个请求可能需要调…

进程同步及经典问题

目录 1、基本概念 1.1两种形式的制约关系 1.2临界资源 1.3临界区 1.4同步机制应遵循的规则 2、硬件同步机制 3、信号量机制(重要) 3.1整型信号量 3.2记录型信号量 3.3AND型信号量 3.4信号量集 4、信号量的应用 4.1利用信号量实现进程互斥 4.2利用信号量实现前趋关系 …

【Spring】初识MyBatis (一)

MyBatis概述 MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,并使用简单的XML或注解进行配置和原始映射,用以将接口和Java的POJO(Plain Old Ja…

Qt libqrencode二维码——QtWidgets

前言 之前写过二维码的程序,但是在U盘上,没带,又重新找的网上资料写的。 网上二维码的生成,大多用到是第三方库libqrencode,这也一样: 效果图 本来是个动图的,都被和谐了,所以换成截图&…

2023年必学的一款测试工具,10 分钟上手

近两年有一款 UI 测试工具非常火爆,名字叫 cypress, 官方号称超越 selenium, 是面向下一代的测试工具。 那 cypress 到底要不要学呢?学起来容易吗?我们一起来看一下。 资料传送门:《软件测试全套基础/进阶/转行资料》 安装 cy…

【计算机视觉】最强 Zero-Shot 视觉应用:Grounding DINO + Segment Anything + Stable Diffusion

文章目录 一、前言二、功能介绍2.1 功能一2.2 功能二2.3 其他有趣的功能 三、总结 一、前言 用 Midjourney 花一个小时做的项目 logo 图: 解释一下 logo 的含义:一只坐在地上的马赛克风格的熊。 坐在地面上是因为 ground 有地面的含义,然后分…

数据流传输适配器系列产品设计资料保存:220-基于光纤的数据流传输适配器系列产品

220-基于光纤的数据流传输适配器系列产品 一、产品概述 光纤传输适配器为公司主力产品,主要包括10Gbps传输,40Gbps传输和100Gbps光纤传输,适配CameraLink(双base或者1路Full)、HDMI、HD-SDI;多路AD&#x…

TikTok数据报告要怎么看?

TikTok数据报告是一种分析和汇总TikTok平台上数据的报告,包含TikTok平台上的用户数据、视频数据、广告数据等。TK卖家每年可以通过分析TK数据报告来更好地了解受众和市场趋势,从而制定更加精准的营销策略和提升销售业绩。TikTok数据报告也可以帮助商家更…

分布式锁Redission对于(不可重入、不可重试、超时释放、主从一致性)四个问题的应对

文章目录 1 Redission介绍2 Redission快速入门3 Redission可重入锁原理4 Redission锁重试和WatchDog机制5 Redission锁的MutiLock原理 基于setnx实现的分布式锁存在下面的问题: 重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&…

JavaScript 特性 this与“bind“和“call“,“apply“的理解

本文的目的是帮助JavaScript初学者更好地理解"bind"方法,并帮助那些对"this"的理解不太清楚的人更好地理解"bind"方法和"this"之间的关系。特别是对于那些对"this"的理解不太清楚的人是有所帮助的。在深入学习&q…