计算机网络概述(下)

简介: 计算机网络概述(下)


性能:丢包、分组延时、吞吐量



分组丢失和延时是怎么发生的 ?


**在路由器缓冲区的分组队列 **


  • 分组到达链路的速率超过了链路输出的能力
  • 分组等待排到队头、被传输


1689396864685-58540b35-5412-4901-8ebf-c51ac2447316.png

只有排在对头的 ,或者说是有可用缓存区的才会被传输, 剩下的都会被丢弃。


四种分组延时


节点处理延时:

  • **检查 bit级差错 **
  • **检查分组首部和决定将分 组导向何处 **


1689397068715-1dff0d1d-c422-4e62-a8de-66f22e9ee465.png


  • dproc = 处理延时

 通常是微秒数量级或更少

  • dqueue = 排队延时

 取决于拥塞程度

  • dtrans = 传输延时

 = L/R, 对低速率的链路而言很大(如拨号),通常为微秒级 到毫秒级

  • **dprop = 传播延时 **

 几微秒到几百毫秒


排队延时


  • 在输出链路上等待传输的 时间
  • **依赖于路由器的拥塞程度 **

【R=链路带宽 (bps) 】【L=分组长度 (bits) 】【a=分组到达队列的平均 速率】

** 流量强度 = La/R**

1689397992789-8d62f122-cef7-4790-acf3-d070fc73b11c.png

  • ** La/R ~ 0: 平均排队延时很小 **
  • ** La/R -> 1: 延时变得很大 **
  • ** La/R > 1: 比特到达队列的速率超过了从该队 列输出的速率,平均排队延时将趋向无穷大! **


传输延时:


  •  R=链路带宽(bps)
  •  L=分组长度(bits)
  •  将分组发送到链路上的 时间= L/R
  •  存储转发延时

1689397163524-6f2aae25-cf86-45eb-8e70-524258a51332.png


传播延时


  •  d = 物理链路的长度
  •  s = 在媒体上的传播速度 (~2x108 m/sec)
  •  传播延时 = d/s


Internet的延时和路由


Internet的延时和路由是怎么样的?


**Traceroute 诊断程序: 提供从源端,经过路 由器,到目的的延时测量 **

**For all i: **


  • 沿着目的的路径,向每个路由器发送3个探测分组
  • 路由器 i 将向发送方返回一个分组
  • 发送方对发送和回复之间间隔计时

1689400691063-8159c877-8c6d-4392-8dab-1fcfddcb5f14.png


在linux下, 通过Traceroute [网址] :就可以看到往返延时


分组丢失


  •  **链路的队列缓冲区容量有限 **
  • ** 当分组到达一个满的队列时,该分组将会丢失 **
  •  丢失的分组可能会被前一个节点或源端系统重 传,或根本不重传

1689401342676-bb17e843-38f6-4920-ba3d-ef8ee2b1c287.png


吞吐量


吞吐量: 在源端和目标端之间传输的速率(数 据量/单位时间)(有效的吞吐量)

瞬间吞吐量: 在一个时间点的速率

平均吞吐量: 在一个长时间内平均值

1689401677998-8638c66a-efae-48b2-9b5a-ffabc63955d6.png


  • Rs < Rc 端到端平均吞吐是多少?

上下两个问题都是 : 取决于最小的那一方

瓶颈链路 : 端到端路径上,限制端到端吞吐的链路


  • Rs > Rc 端到端平均吞吐是多少?


吞吐量: 互联网场景


1689401888317-f3e15370-dc3a-4bd7-ab69-4ef39a86ef45.png


协议层次、服务模型



网络是一个非常复杂的系统


  • 网络功能繁杂:

数字信号的物理信 号承载、点到点、路由、rdt、进 程区分、应用等


  • 现在来看, 网络的许多构成元素设备:

主机、路由器、媒体链路、应用、协议、硬件、软件等等


作为一个工程师, ** 如何组织和实现这个复 杂的网络功能? **

采用分层的方式来实现这种复杂的网络功能。


分层实现这种复杂的网络功能


类似于军队中的分配任务。一级一级向下分配任务, 由单个的任务实现从而达到上层的任务实现


层次化方式实现复杂网络功能:


  • 将网络复杂的功能分层功能明确的层次,每一层实现了其中一个或一组 功能,功能中有其上层可以使用的功能:服务
  • **本层协议实体相互交互执行本层的协议动作,目的是实现本层功能, 通过层间的接口为上层提供更好的服务 **
  • 在实现本层协议的时候,直接利用了下层所提供的服务 来实现数据报文的传输
  • **本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+更下层所提供的服务 **


服务和服务访问点


 1. ** 服务( Service):**低层实体向上层实体提供它们之间的 通信的能力  

  • 服务用户(service user)
  • 服务提供者(service provider )

 2.  **原语(primitive):**上层使用下层服务的形式,高层使用 低层提供的服务,以及**低层向高层提供服务都是通过 服务访问原语来进行交互的**。


也就是**提供服务的形式 就是原语 **

服务访问者通过原语 来告诉 服务提供者 我需要你干什么 。

服务提供者也是通过原语来问服务访问者, 你要干嘛


 3.  **服务访问点 SAP (Services Access Point) :**上层 使用下层提供的服务通过层间的接口—地点:** (也就是 :下层的服务者区分上层服务访问者的信息)**

  • 例如: 邮箱
  • 地址(address): 下层的一个实体支撑着上层的多个实体, SAP有标志不同上层实体的作用
  • 可以有不同的实现、队列
  • 例子: 传输层的SAP:端口(port)


服务的类型


两种服务方式: 面向连接的服务和无连接的服务-方式


** 面向连接的服务( Connection-oriented Service) **

** 无连接的服务(Connectionless Service) **


面向连接的服务方式


用户在使用下层提供的服务之前, 需要进行握手, 来为后续的通信做出准备。 这就是面向连接的服务


  • 连接(Connection):两个通信实体为进行通信而建立的一 种结合
  • 面向连接的服务通信的过程:建立连接,通信,拆除连接
  • 面向连接的服务的例子:网络层的连接被成为虚电路
  • 适用范围:对于大的数据块要传输; 不适合小的零星报文
  • 特点:保序
  • 服务类型:


可靠的信息流 传送页面(可靠的获得,通过接收方的确认)

可靠的字节流 远程登录

不可靠的连接 数字化声音


无连接的服务方式


两个应用进程采用UDP的方式进行交互, 在其通信之前不需要握手。 直接进行信息交换。


  • 无连接服务:两个对等层实体在通信前不需要建 立一个连接,不预留资源;不需要通信双方都是 活跃;(例:寄信)
  • 特点:不可靠、可能重复、可能失序
  • IP分组,数据包;
  • 适用范围:适合传送零星数据;
  • 服务类型:

不可靠的数据报 电子方式的函件

有确认的数据报 挂号信

请求回答 信息查询

服务和协议


服务和协议的区别

  • 服务(Service):低层实体向上层实体提供它们之间的 通信的能力,是通过原语(primitive)来操作的,垂直 (上下层之间)
  • 协议(protocol) :对等层实体(peer entity)之间在相互 通信的过程中,需要遵循的规则的集合,水平 (同层之间)

★服务与协议的联系★★★

  • 本层协议的实现要靠下层提供的服务来实现
  • **本层实体通过协议为上层提供更高级的服务 **

数据单元(DU)

1689477628468-ebb3f5db-5a06-402d-a690-949c7f41f287.png


层次n向上层n+1 进行提供服务, 通过原语来区分上层服务。

上一层需要下层处理的数据或其他叫SDU (服务数据单元)


在传输上下层之间有一个层间接口Interface, 所以需要加上一些控制信息, 这些控制信息叫做** ICI (接口控制信息)**


ICI + SDU ==IDU (接口数据单元)


上层的控制信息+ 本层服加的一些控制信息 = (同步) 形成本层的PDU(协议数据单元)


1对多的关系:上层发送的一个(SDU)数据单元太大了,需要拆解成分组大小


每层交换的数据单元的称呼都是不一样的 ,但是表达的意思基本是一致的。 比如:


应用层:报文;传输层:报文段或段;网络层:分组或数据报;链路层:侦;物理层:字节、位


1689480660098-84d75a2d-7cef-4a26-a0e7-197a569d26ff.png

1689477672574-fee565bf-c2c3-41a3-b24a-01294ac92a9f.png


分层处理和实现复杂系统的好处


  • 概念化:结构清晰,便于标示网络组件,以及描述其 相互关系

分层参考模型

  • **结构化:模块化更易于维护和系统升级 **(分而治之思想)

改变某一层服务的实现不影响系统中的其他层次

对于其他层次而言是透明的

便于交流和讨论

  • 如改变登机程序并不影响系统的其它部分

改变2个秘书使用的通信方式不影响2个翻译的工作

改变2个翻译使用的语言也不影响上下2个层次的工作


分层思想被认为有害的地方?


分层到若干个子系统, 子系统之间的信息交换的效率是非常低的


总体好处 > 坏处


Internet中的协议栈★★★★★

1689478941705-05da34f1-7e5d-42cf-82a8-3174502be509.png


应用层: 网络应用


**在传输层提供的可靠的传输基础上 为人类用户或者其他应用进程提供网络应用服务 **


如何保证这些服务之间的可靠性呢 ,那么这里就用到了应用层的协议:


FTP, SMTP, HTTP,DNS


当然,应用层的协议有几千中, 以上仅是最重要的几个


传输层: 主机之间的数据传输


**在网络层提供的端到端通信基础上,细分为进程 到 进程,将不可靠的通信变成可靠地通信 **


**如何做到进程之间的区分 ? **


需要用到端口的机制


**因为网络层传输的服务是不可靠的, 传输层如何保证这些服务之间的可靠性呢 ,那么这里就用到了传输协议—–TCP, UDP **


网络层: 为数据报从源到目的选择路由


链路层传输的是相邻两点之间 , 而我们需要的可不是相邻 ,而是全球范围内的通讯。


1689479506812-20d31878-c485-442b-addf-82e10ef33fb2.png

网络的核心就是**源主机 和 目标主机之间的端对端的网络传输。 **

同时这也是网络层要做的事。


网络层 在链路层相邻两点传输的基础上, 传输以分组为单位的端对端的数据传输。


所以就需要


  • 主机主机之间的通信,端到端通信,不可靠
  • **IP, 路由协议 **

所以网络层最重要的两个就是转发、路由


链路层: 相邻网络节点间的数据传输


两个网卡之间 通过一段链路 传输数据,然后连起来

链路层: 传输以 帧 为单位的数据 (在相邻两点之间 )

在物理层提供的服务的基础上在相邻两点之间传输以 帧 为单位的数据


  • 2个相邻2点的通信,点到点通信,可靠或不可靠
  • **点对对协议PPP, 802.11(wifi), Ethernet **


物理层: **线路上传送bit **


**在线路上传送bit (组合而成为帧) **


将所有的信息转换为物理信号, 承载在媒体之上。然后在端与端之间进行传输


除了互联网(Internet)的五层参考模型之外的其他模型 : ISO/OSI 参考模型

1689480242834-5b31b30f-3791-4c01-984a-e1c6f3a7668b.png


表示层:

** 允许应用解释传输的 **数据, e.g., 加密,压缩,机 器相关的表示转换


会话层:

** 数据交换的同步,检 查点,恢复 **


互联网协议栈是没有上述的两层

虽然没有, 但是他们干的事情,在互联网协议栈中也是有的, 应用层自己去做。


封装和解封装


1689480476579-5321ec03-c87c-4ca6-8faf-26e72a89f5aa.png


各层次的协议数据单元


  • **应用层:报文(message) **
  • 传输层:报文段(segment):TCP段,UDP数据报
  • 网络层:分组packet(如果无连接方式:数据报 datagram
  • **数据链路层:帧(frame) **
  • **物理层:位(bit) **


历史

目录
相关文章
|
1月前
|
机器学习/深度学习 存储 自然语言处理
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
|
1月前
|
机器学习/深度学习 PyTorch API
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)
|
3月前
|
存储 网络协议 安全
|
3月前
|
数据采集 移动开发 Python
六:《智慧的网络爬虫》— 正则表达式概述
【8月更文挑战第7天】本文介绍了正则表达式的基本概念、用途,如表单验证和爬虫,以及Python中re模块的使用,包括match(),match()函数、元字符、预定义字符集、重复匹配、位置匹配、非贪婪模式和re模块的常用方法如compile(),search(),findall(),split(),sub()等。
71 1
六:《智慧的网络爬虫》— 正则表达式概述
|
2月前
|
Linux 调度 Docker
容器网络概述
【9月更文挑战第9天】容器技术利用如命名空间(namespace)和控制组(cgroup)等技术创建隔离环境,实现资源限制与独立运行。命名空间避免命名冲突,cgroup则能对CPU、内存等资源进行限制。容器状态可通过镜像保存并标准化,确保在任何环境中都能复现相同状态。
|
3月前
|
存储 NoSQL MongoDB
八:《智慧的网络爬虫》— MongoDB概述
【8月更文挑战第14天】本篇文章简单介绍了MongoDB的下载和安装以;其基本的操作语法,并附上每个语法的代码示例,为后续的爬虫学习打下基础
44 0
八:《智慧的网络爬虫》— MongoDB概述
|
3月前
|
SQL 数据采集 关系型数据库
七:《智慧的网络爬虫》— MySQL概述
【8月更文挑战第11天】本篇文章详细的介绍了MySQL数据库的安装与使用;并讲述了MySQL的基本操作及其应用语法
50 0
七:《智慧的网络爬虫》— MySQL概述
|
3月前
|
Linux 调度 Docker
容器网络概述
【8月更文挑战第7天】容器就是 Container,而 Container 的另一个意思是集装箱。其实容器的思想就是要变成软件交付的集装箱。集装箱的特点,一是打包,二是标准。
|
3月前
|
存储 运维 监控
|
5月前
|
数据采集 前端开发 开发者
《智慧的网络爬虫》— CSS概述
CSS主要作用是定义网页的样式。如网页元素的位置、大小、颜色等,也是前端及爬虫入门必须要学习的内容
46 7
《智慧的网络爬虫》—  CSS概述