《计算机网络:自顶向下方法》学习笔记——第一章:计算机网络和因特网

news2024/12/25 12:31:35

计网

第一章 计算机网络和因特网

1.1 什么是因特网

回答这个问题有两种方式 其一,我们能够描述因特网的具体构成,即构成因特网的基本硬件和软件组件;其二,我们能够根据为分布式应用提供服务的联网基础设施来描述因特网。

1.1.1 具体构成描述

因特网是一个世界范围的计算机网络,这意味着它互联了数以亿计的计算设备(不仅仅是计算机哦);这些设备包括但不限于传统PC、工作站以及所谓的服务器。现在有更多的设备加入到因特网中,比如便携式计算机、电视机、汽车、传感器等。

用因特网的术语来说,所有连入因特网的设备都叫做主机或者端系统

端系统通过通信链路分组交换机连接到一起。

  • 通信链路由不同的物理媒体组成,传播速度bit/sbps来计算

  • 分组:当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上头部字节,由此形成的信息包叫分组

    • 分组通过网络发送到接收端系统,在那里被装配成初始数据
  • 分组交换机从它的一条入通信链路接收到达的消息,并从它的一条出通信链路转发该条消息

    • 最著名的分组交换机:路由器链路层交换机
    • 路由器通常用作网络核心
    • 链路层交换机常用在接入网
  • 一个分组所经历的一系列的通信链路和分组交换机称为通过网络的路径(路由)

端系统通过因特网服务供应商(ISP)(类比移动联通电信等公司)接入因特网中

  • 每个ISP本身就是一个由多台分组交换机和通信链路(光纤等等)组成的网络,各ISP为端系统提供了不同类型的网络接入

ISP也为内容提供者提供因特网接入服务,将Web站点直接接人因特网。

  • 低层的ISP通过国家的、国际的高层ISP互联起来
  • 高层ISP是由通过高速光纤链路互联的高速路由器组成的。

端系统,分组交换机和其他网络部件都需要运行一系列的协议(详见1.1.3)

  • 因特网最重要的协议TCP(传输控制协议)/IP(网际协议)
  • IP协议定义了路由器和端系统之间交换的分组格式

在这里插入图片描述

1.1.2 服务描述

  • 分布式应用程序: 应用程序涉及在多个相互交换数据的端系统,故称他们分布式应用程序。
  • 与因特网相连的端系统都有一个套接字接口,该接口规定了运行在端系统上的程序请求在因特网基础设施向另一个端系统上特定的目的程序交付数据的方式
    • 因特网套接字接口是一个发送程序必须遵守的规则合集

1.1.3 什么是协议

为了完成一项工作,要求两个(或多个)通信实体运行相同的协议

报文的交换以及发送和接收这些报文时所采取的动作是定义 个协议的关键元素

协议 (protocol) 定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和或接收一条报文或其他事件所采取的动作

1.2 网络边缘

通常把与因特网相连的计算机和其他设备称为端系统,因为它们位于因特网的边缘,故而被称为端系统

端系统也称为主机( host ), 因为它们容纳(即运行)应用程序。

主机有时又被进一步划分为两类 :客户 (client) 和服务器 (server)

  • 客户通常是桌面PC,智能手机等(发起请求)
  • 服务器是更强大的机器,用于存储和发布Web页面,邮件等(处理请求)

1.2.1 接入网

接入网:是将端系统物理连接到其边缘路由器的网络

  • 边缘路由器:是端系统到任何其他远程端系统的路径上的第一台路由器

如下图圈出来的是边缘路由器

在这里插入图片描述

接入网的方式:

  1. 家庭接入:DSL、电缆、FTTH、拨号和卫星(图1-6)
  2. 企业接入:以太网和WiFi(图1-8)
  3. 广域无线接入:3G和LTE

1.2.2 物理媒体

  • 双绞线:短距离
  • 同轴电缆
  • 光纤:远距离,高宽带
  • 陆地无线电信道
  • 卫星无线电信道:同步卫星和近地轨道卫星

1.3 网络核心

网络核心:由互联端系统的分组交换机和链路构成的网状网络

通过网络链路和交换机移动数据有两种基本方法:电路交换分组交换

1.3.1 分组交换

  • 端系统之间彼此交换报文
  • 报文能够包含协议设计者需要的任何东西。报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据、JPEG图像或MP3音频文件。
    • 为了从源端系统向目的端系统发送一个报文,源将上报文划分为较小的数据块,称为分组
    • 在源和目的之间,每个分组都通过通信链路和分组交换机(packet switch)(交换机主要有两类:路由器和链路层交换机)传送。
    • 分组以等于该链路最大传输速率的速度传输通过通信链路。因此,如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。

1,存储转发传输

  • 多数分组交换机在链路的输入端使用存储转发传输,是指在交换机开始向输出链路传输该分组的第一个比特之前,必须接受到整个分组

在这里插入图片描述

如上图,报文1,2,3按次序发送到路由器再发送到目的地,但是当报文1到达路由器但报文2没到达路由器时输出链路上是不会有报文发送的。要等到路由器从输入链路上接受到报文1,2,3才会按次序发送到输出链路,从而发送到目的地

2,排队时延和分组丢失

  • 每台分组交换机和多个链路连接,对于每条相连的链路,该分组交换机具有一个输出缓存(也称输出队列),它用于存储路由器准备发往那条链路的分组
  • 如果该链路正在传输其他分组,那么该分组必须在输出缓存等待(由上一条可知,输出缓存是一种队列,是先进先出的性质,故后面进入队列的需要等待前面进入的先出去),这叫排队时延。这些时延是变化的,变化的程度取决于网络中的拥塞程度
  • 一个到达的分组可能发现输出缓存已经满了的情况,此时将出现分组丢包的情况,可以选择丢弃已满队列中随机一个包或者新到达的分组,主要和输出缓存大小和传输速率有关

3,转发表和路由选择协议

  • 每个端系统都有一个IP地址(每个设备的IP是唯一的)。当源主机向目的主机发送一个分组时,源在该分组的首部包含了目的主机的IP地址
  • 更特别的是,每台路由器有一个转发表(forwarding table),用于将目的地址(或目的地址的一部分)映射成为输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路。路由器则将分组导向该出链路。

那转发表如何设置的?

  • 因特网具有一些特殊的路由选择协议(routing protocol) ,用于自动地设置这些转发表。
    • 例如,一个路由选择协议可以决定从每台路由器到每个目的地的最短路径,并使用这些最短路径结果来配置路由器中的转发表。

1.3.2 电路交换

  • 电路交换:在这个发送者可以发送信息之前,电话网络必修要先在发送者和接受者之间建立一条连接。这是条真正的连接,在发送者和接受者之间的交换机都是维持着的。
  • 当网络把这个电路建立好之后,在这个网络中的链路的传输速率也是维持好的。所以发送者可以以稳定的速率传输数据给接收者

1,电路交换网络中的复用

  • 链路中的电路是通过频分复用FDM时分复用TDM来实现的
  • 对于FDM,链路的频谱由跨越链路创建的所有连接共享。在连接期间链路为每条连结专用一个频率。
    • 电话网络中,这个频宽通常是4kHz,该频段的宽度称为带宽
  • 对于TDM,时间被划分为固定的帧,每个帧又被划分为固定数量的时隙

2,分组交换与电路交换的对比

  • 分组交换的优点
  • 它提供了比电路交换更好的带宽共享
  • 它比电路交换更简单、更有效、实现成本更低
  • 分组交换的缺点
  • 分组交换不适合实时服务,因为端到端的时延是可变、不可预测的,这和整个网络的情况相关
  • 电路交换的优点
  • 提供了端对端传输数据的速率保证
  • 电路交换的缺点
  • 电路交换存在静默期,这是指专用电路空闲时,其占用的资源并没有得到充分的利用
  • 建立连接的过程比较复杂

总体上来说,分组交换的性能要好于电路交换的性能,但是不同类型的分组交换方式有不同的应用场景;比如一些对最低速率有着严格要求的应用,比如实时服务等,为了获得速率保证,牺牲网络的效率也是可以接受的。趋势向着分组交换发展

在这里插入图片描述

1.3.3 网络的网络

第三方公司能够创建一个因特网交换点 (Internet Exchange Point, IXP) , IXP是一个汇合点,多个ISP能够在这里一起对等

1.4 分组交换网中的时延、丢包和吞吐量

  • 因特网能够看成是一种运行在端系统上的分布式应用提供服务的基础设施
  • 计算机网络必定要要限制在端系统之间的吞吐量,故在端系统之间存在时延、丢包

1.4.1 分组交换网中的时延概述

一个分组在沿途每个节点承受不同类型的时延,这些时延中最为重要的是:结点处理时延排队时延传输时延传播时延。这些时延总体累加起来是结点总时延

时延的类型

  1. 处理时延

处理时延是因为节点需要解析分组的首部信息然后决定其出链路(索引转发表等操作)而产生的,通常在微秒或者更低数量级

  1. 排队时延(详细可见1.3.1中描述)

排队时延是因为分组所对应的出链路前面有其他分组正在传输,所以分组需要该链路的缓冲队列里等待其他分组传输完毕而产生的;一般来说,排队时延是到达该队列的流量强度和性质的函数,通常可以达到毫秒级到微秒级。如果队列为空没有其他分组正在传输,则排队时延为0

  1. 传输时延

传输时延是将所有分组的比特推向链路所有需要的时间,实际的传输时延通常在毫秒到微秒数量级。用L表示分组的长度,用Rbps表示从路由器A到B的链路传输速率。传输时延是L/R

  1. 传播时延

传播时延是指比特进入链路后,从该链路的起点到下一个结点所用的时间;一旦分组中的最后一个比特到达路由器就意味着该分组的所有比特都已到达路由器;广域网中,传播时延一般是毫秒级的。传播时延是d/s。d是路由器A到B的距离。s是链路的传播速率。

  1. 传输时延和传播时延的对比
  • 传输时延是路由器将分组推出所需要的时间,它是分组长度和链路传输速率的函数,而与两台路由器之间的距离无关
  • 传播时延是一个比特从一台路由器向另一台路由器传播所需要的时间,它是两台路由器之间距离的函数,而与分组长度或链路传输速率无关

打个比方就是传输时延是火车过一个站点的时间,其大小只和火车长度和火车通过站点的时间有关。而传播时延则是火车经过两个地点的时间,其大小和距离和速度有关。

在这里插入图片描述

1.4.2 排队时延和丢包

**丢包:**到达的分组发现一个满的队列。由于没有地方存储这个分组,路由器将丢弃该分组,该分组将会丢失

排队时延和丢包与网络的状况结点的缓冲空间大小处理速度相关;如果分组到达的速度高于结点的处理速度,那么分组就会在缓冲队列里排队等待。当缓冲空间用完后,如果还有到的分组,那么该分组将被迫丢弃

为了描述网络状体,我们引入了流量强度这一概念:流量强度=分组到达的速度/结点的处理速度;流量工程里一个金科玉律就是:设计系统时流量强度不能大于1

流量强度持续大于1时,就将出现丢包现象

因此,一个结点的性能常常不仅根据时延来度量,而且根据分组丢失的概率来度量。正如我们将在后面各章中讨论的那样,丢失的分组可能基于端到端的原则重传,以确保所有的数据最终从源传送到了目的地。

1.4.3 端到端时延

在这里插入图片描述

1.4.4 计算机网络的吞吐量

计算机网络的吞吐量实际上是一个速度指标,它描述了比特经过某个节点的速度。对于某条路径上的结点来说,和该结点有关的速度有两个:接收数据的速度和发送数据的速度而该结点的吞吐量是这两个速度中较小的一个;对于某条路径来说,该路径的吞吐量则是所有节点的吞吐量的最小值;网络的吞吐量可以衡量网络的性能.

任何时间的瞬时吞吐量是主机B接受到该文件的速率(例如下载文件时显示多少m/s,就是一个瞬时吞吐量)

如果该文件由F比特组成,主机B接受到所有比特用去Ts,则文件的平均吞吐量为F/T bps

吞吐量可以近似为源和目的地之间路径的最小传输速率。最小传输速率的链路为瓶颈链路

1.5 协议层次及其服务模型

因特网是一个极为复杂的系统,该系统里存在着大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。但是它同时也是有着清晰结构的,就像我们前面在网络核心 一节介绍的,我们仍能构建它的结构模型

1.5.1 分层体系结构

为了给网络协议的设计提供一个结构,网络设计者以分层的方式组织协议以及实现这些协议的软硬件软件。每个协议属于这些层次之一,就像图1-22所示的航线体系结构中的每种功能属于某一层一样。我们再次关注某层向它的上一层提供的服务(service),即所谓一层的服务模型(service model)。每层通过在该层中执行某些动作或使用直接下层的服务来提供服务。

将各层的所有协议组合起来,称为协议栈。因特网的协议栈有5个层次组成**:物理层、链路层、网络成、运输层、应用层**

  1. 应用层

应用层是网络应用程序及它们的应用层协议存留的地方。

应用层协议分布在多个端系统,端系统中的应用程序使用该协议与另一个端系统中的应用程序通信。处于应用层的分组称为报文

  1. 运输层

传输层在应用程序端点之间传输应用层报文,因特网中有两个传输层协议:TCP和UDP。

  • TCP将长报文分成短报文,并提供确保传递、流量控制、拥塞控制机制。
  • UDP提供无连接服务,即不提供不必要服务的服务。没有可靠性、没有流量和拥塞控制。

处于传输层的分组称为报文段

  1. 网络层

网络层将称为数据报的网络层分组从一台主机移动到另一台主机。网络层协议包含著名的IP协议以及其他一些路由选择协议。

  1. 链路层

网络层通过源和目的地之间的一系列路由器来 路由(注意这是动词) 数据报。为了将分组从一个结点移动到路径上的下一个结点,网络层必须依靠该链路层的服务。

将链路层分组称为帧frame。链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素。该层协议与链路层相关。

  1. 物理层

物理层的任务是将每个帧中的一个个比特从一个节点移动到下一个节点。该层协议与链路相关,并进一步与链路的实际传输媒体相关,例如双绞铜线、单模光纤等。

OSI模型

在因特网协议栈出现以前,OSI模型是ISO组织研发的计算机网络结构模型。OSI的模型一共有7层,从下到上依次为:物理层,链路层,网络层,传输层,会话层,表示层,应用层。相比因特网体系结构,OSI多了两层。

1.5.2 封装

一个分组,在不同的层次有不同的称谓,是因为它们经过每一层的时候就被该层封装上了属于该层的相关信息,也就是前面提到的必要信息;于是,每一分层的分组有两种类型的字段:首部字段和有效负载;其中有效负载即为来自上一层的分组数据,而首部字段就是该层加上的必要信息;分组不断被封装以实现各层协议规定的相关功能

1664197048868

示层**,应用层。相比因特网体系结构,OSI多了两层。

1.5.2 封装

一个分组,在不同的层次有不同的称谓,是因为它们经过每一层的时候就被该层封装上了属于该层的相关信息,也就是前面提到的必要信息;于是,每一分层的分组有两种类型的字段:首部字段和有效负载;其中有效负载即为来自上一层的分组数据,而首部字段就是该层加上的必要信息;分组不断被封装以实现各层协议规定的相关功能

在这里插入图片描述

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

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

相关文章

加油站ai视觉识别系统 yolov7

加油站ai视觉识别系统通过yolov7网络模型深度学习,加油站ai视觉识别算法对现场画面中人员打电话抽烟等违规行为,还有现场出现明火烟雾等危险状态。除此之外,模型算法还可以对卸油时灭火器未正确摆放、人员离岗不在现场、卸油过程静电释放时间…

20230304学习笔记

1、Mybatis #{}和${}的区别是什么 a、#{}是预编辑处理、是占位符,${}是字符串拼接符。 b、#{}替换为?号,用PreparedStatement来赋值,${}直接替换变量的值,用Statement赋值。 c、#{}在DBMS中、自动加入单引号&#…

XSS-labs靶场1-13关解法答案

目录 XSS-labs克隆/下载地址: 第一关 解法 第二关 解法 第三关 解法 第四关 解法 第五关 解法 第六关 解法 第七关 解法 第八关 解法 第九关 解法 第十关 解法 第十一关 解法 第十二关 解法 第十三关 解法 从XSS payload 中关于浏览器解码的一些总结 XSS-labs克隆/下载地…

javaDoc生成方式

javaDoc生成方式 命令行生成 在cmd控制台窗口上找到需要生成文件的路径,然后执行命令。 # javadoc -encoding UTF-8 -charset UTF-8 文件名 javadoc -encoding UTF-8 -charset UTF-8 Doc.java这样就生成完成了。 测试Doc.java文件 package com.jiang.base;/***…

grid了解

结构 <div class"grid"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div>&l…

css中重难点整理

一、vertical-align 在学习vertical-align的时候&#xff0c;可能会很困惑。即使网上有一大推文章讲veitical-align,感觉看完好像懂了&#xff0c;等自己布局的时候用到vertical-align的时候好像对它又很陌生。这就是我在布局的时候遇到的问题。 本来vertical-align就很不好理…

LeetCode分类刷题-----贪心算法

贪心算法贪心455.分发饼干376.摆动序列53.最大子序和122.买卖股票的最佳时机||55.跳跃游戏45.跳跃游戏||1005.K次取反后最大化的数组和134.加油站135.分发糖果860.柠檬水找零406.根据身高重建队列452.用最少数量的箭引爆气球![在这里插入图片描述](https://img-blog.csdnimg.cn…

[算法和数据结构]--回溯算法之DFS初识

回溯算法——DFSDFS介绍(Depth First Search)DFS经典题目1. 员工的重要性2. 图像渲染3.被围绕的区域4.岛屿数量5. 电话号码的字母组合6.数字组合7. 活字印刷8. N皇后DFS介绍(Depth First Search) 回溯法&#xff08;back tracking&#xff09;&#xff08;探索与回溯法&#x…

嵌入式和Python(二):python初识及其基本使用规则

目录 一&#xff0c;python基本特点 二&#xff0c;python使用说明 ● 两种编程方式 ① 交互式编程 ② 脚本式编程 ● python中文编码 ● python行和缩进 ● python引号 ● python空行 ● python等待用户输入 ① 没有转换变量类型 ② 转换变量类型 ● python变…

[Pytorch]DataSet和DataLoader逐句详解

将自己的数据集引入Pytorch是搭建属于自己的神经网络的重要一步&#xff0c;这里我设计了一个简单的实验&#xff0c;结合这个实验代码&#xff0c;我将逐句教会大家如何将数据引入DataLoader。 这里以目标检测为例&#xff0c;一个batch中包含图片文件、先验框的框体坐标、目标…

【C语言进阶:指针的进阶】你真分得清sizeof和strlen?

本章重点内容&#xff1a; 字符指针指针数组数组指针数组传参和指针传参函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组面试题的解析这篇博客 FLASH 将带大家一起来练习一些容易让人凌乱的题目&#xff0c;通过这些题目来进一步加深和巩固对数组&#xff0c;指…

基于注解@Transactional事务基本用法

关于概念性的放在最下面,熟读几遍 在使用时候也没多关注,总是加个Transactional 初识下 一般查询 Transactional(propagation Propagation.SUPPORTS) 增删改 Transactional(propagation Propagation.REQUIRED) 当然不能这么马虎 Spring中关于事务的传播 一个个测试,事…

计算机网络第八版——第一章课后题答案(超详细)

第一章 该答案为博主在网络上整理&#xff0c;排版不易&#xff0c;希望大家多多点赞支持。后续将会持续更新&#xff08;可以给博主点个关注~ 【1-01】计算机网络可以向用户提供哪些服务&#xff1f; 解答&#xff1a;这道题没有现成的标准答案&#xff0c;因为可以从不同的…

操作系统——15.FCFS、SJF、HRRN调度算法

这节我们来看一下进程调度的FCFS、SJF、HRRN调度算法 目录 1.概述 2.先来先服务算法&#xff08;FCFS&#xff0c;First Come First Serve&#xff09; 3.短作业优先算法&#xff08;SJF&#xff0c;Shortest Job First&#xff09; 4.高响应比优先算法&#xff08;HRRN&…

Jackson CVE-2018-5968 反序列化漏洞

0x00 前言 同CVE-2017-15095一样&#xff0c;是CVE-2017-7525黑名单绕过的漏洞&#xff0c;主要还是看一下绕过的调用链利用方式。 可以先看&#xff1a; Jackson 反序列化漏洞原理 或者直接看总结也可以&#xff1a; Jackson总结 影响版本&#xff1a;至2.8.11和2.9.x至…

【数据结构】AVL平衡二叉树底层原理以及二叉树的演进之多叉树

1.AVL平衡二叉树底层原理 背景 二叉查找树左右子树极度不平衡&#xff0c;退化成为链表时候&#xff0c;相当于全表扫描&#xff0c;时间复杂度就变为了O(n) 插入速度没影响&#xff0c;但是查询速度变慢&#xff0c;比单链表都慢&#xff0c;每次都要判断左右子树是否为空 需…

java Spring JdbcTemplate配合mysql实现数据批量修改

其实这个操作和批量添加挺像的 调的同一个方法 首先 我们看数据库结构 这是我本地的 mysql 里面有一个test数据库 里面有一张user_list表 然后创建一个java项目 然后 引入对应的JAR包 在src下创建 dao 目录 在下面创建一个接口 叫 BookDao 参考代码如下 package dao;impo…

进程控制~

进程控制 &#xff08;创建、终止&#xff0c;等待&#xff0c;程序替换&#xff09; 进程创建&#xff1a; pid_t fork();父子进程&#xff0c;数据独有&#xff0c;代码共享&#xff0c;各有各的地址 pit_t vfork();父进程阻塞&#xff0c;直到子进程exit退出或者程序替换之…

电力系统稳定性的定义与分类

1电力系统稳定性的定义与分类 IEEE给出电力系统稳定性定义&#xff1a;电力系统稳定性是指电力系统这样的一种能力—对于给定的初始运行状态&#xff0c;经历物理扰动后&#xff0c;系统能够重新获得运行平衡点的状态&#xff0c;同时绝大多数系统变量有界&#xff0c;因此整个…

自己写一个简单的IOC

什么是SpringIOC&#xff1f; 答&#xff1a;IOC即控制反转&#xff0c;就是我们不在手动的去new一个对象&#xff0c;而是将创建对象的权力交给Spring去管理&#xff0c;我们想要一个User类型的对象&#xff0c;就只需要定义一个User类型的变量user1&#xff0c;然后让Spring去…