计网笔记(1)- 计算机网络和因特网

2023-10-30

本章主要内容

  • 构成网络的基本硬件和软件。我们将从网络的边缘开始,介绍网络中运行的端系统和网络应用。接下来探究网络的核心,介绍传输数据的链路和交换机。最后是连接端系统和网络核心的接入网和物理媒体
  • 网络中数据的时延、丢包、吞吐量
  • 计算机联网时的一些关键体系结构原则。如协议分层和服务模型
  • 计网的历史

在本书中,为了讨论计算机网络及其协议的主要载体(因为因特网用的人多)我们使用一种特定的计算机网络即公共因特网



1. 什么是因特网

角度1:因特网的具体构成

因特网是一个世界范围的计算机网络,是一个连接了遍及全世界数十亿(计算)设备的网络

  • 这些(计算)设备多数是传统的桌面PC、Linux 工作站以及所谓的服务器(它们用于存储和传输Web页面和电子邮件报文等信息)。然而,越来越多的非传统的因特网“物品”(如便携机、智能手机、平板电脑、电视、游戏机、温度调节装置、家用安全系统、家用电器、手表、眼镜、汽车、运输控制系统等)正在与因特网相连

所有这些设备都称为主机(host)或端系统(end system) 

端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起

  • 有许多类型的通信链路,它们由不同类型的物理媒体组成。这些物理媒体包括同轴电缆、铜线、光纤和无线电频谱。不同的链路能够以不同的速率传输数据,链路的传输速率(transmission rate)以比特/秒(bit/s或bps)度量

当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络的术语来说称为分组(packet)。这些分组通过网络发送到目的端系统,在那里被装配成初始数据。

分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。在当今的因特网中,两种最著名的类型是路由器(router)和链路层交换机(link-layer switch)

从发送端系统到接收端系统,一个分组所经历的一系列通信链路和分组交换机称为通过该网络的路径(mute或path)

一个工厂需要将大量货物搬运到数千公里以外的某个目的地仓库。在工厂中,货物要分开并装上卡车车队。然后,每辆卡车独立地通过高速公路、公路和立交桥组成的网络向仓库运送货物。在目的地仓库,卸下这些货物,并且与一起装载的同一批货物的其余部分堆放在一起。

在许多方面,分组类似于卡车,通信链路类似于高速公路和公路,分组交换机类似于交叉口,而端系统类似于工厂和仓库。

端系统想接入因特网,需要通过因特网服务提供商(Internet Service Provider, ISP),包括如本地电缆或电话公司那样的住宅区ISP、公司ISP、大学ISP,在机场、旅馆、咖啡店和其他公共场所提供WiFi接入的ISP,以及为智能手机和其他设备提供移动接入的蜂窝数据ISP。

  • 每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络
  • 各ISP为端系统提供了各种不同类型的网络接入,包括如线缆调制解调器或DSL那样的住宅宽带接入、高速局域网接入和移动无线接入
  • ISP也为内容提供者提供网络接入服务,将Web站点和视频服务器直接连入因特网。
  • 因特网就是将端系统彼此互联,因此为端系统提供接入的ISP也必须互联。
    • 较低层的ISP通过国家的、国际的较高层ISP (如Level 3 Communica­tions .AT&T、Sprint和NTT)互联起来。
    • 较高层ISP是由通过高速光纤链路互联的高速路由器组成的。
    • 无论是较高层还是较低层ISP网络,它们每个都是独立管理的,运行着IP协议,遵从一定的命名和地址规则。

端系统、分组交换机和其他因特网部件都要运行一系列协议(protocol),这些协议控制因特网中信息的接收和发送。TCP (Transmission Control Protocol,传输控制协议)和IP(Internet Protocol,网际协议)是因特网中两个最为重要的协议。因特网的主要协议统称为TCP/IP

角度2:因特网作为应用的基础设施为应用程序提供服务

因特网应用,除了诸如电子邮件和Web冲浪等传统应用外,还包括移动智能手机和平板电脑应用程序,其中包括即时讯息、与实时道路流量信息的映射、来自云的音乐流、电影和电视流、在线社交
网络、视频会议、多人游戏以及基于位置的推荐系统。

  • 因为这些应用程序涉及多个相互交换数据的端系统,故它们被称为分布式应用程序(distributed applicalion)

此时我们碰到一个核心问题,这个问题导致了这种描述因特网的角度,即将因特网描述为应用程序的平台。“运行在一个端系统上的应用程序怎样才能指令因特网向运行在另一个端系统上的软件发送数据呢?”

答案是:与因特网相连的端系统提供了一个套接字接口( socket interface),该接口规定了运行在一个端系统上的程序请求因特网基础设施向运行在另一个端系统上的特定目的地程序交付数据的方式。即套接字接口是一套发送程序必须遵循的规则集合,遵循这个规则集合,应用程序就能指令因特网向运行在另一个端系统上的软件发送数据。

假定Alice使用邮政服务向Bob发一封信。

邮政服务要求Alice:将信放入一个信封中;在信封的中间写上Bob的全名、地址和邮政编码;封上信封;在信封的右上角贴上邮票;最后将该信封丢进一个邮局的邮政服务信箱中。

该邮政服务有自己的“邮政服务接口”或一套规则,这是Alice必须遵循的,这样邮政服务才能将她的信件交付给Bob。

同理,因特网也有一个发送数据的程序必须遵循的套接字接口,使因特网向接收数据的程序交付数据。

综上,我们给出了因特网的两种描述方法:一种是根据它的硬件和软件组件来描述,另一种是根据基础设施向分布式应用程序提供的服务来描述。

因特网中另一个重要的术语:协议

既然我们已经对因特网是什么有了一点印象,那么下面进一步理解计算机网络中另一个重要的时髦术语:协议(protocol) 。什么是协议?协议是用来干什么的?

为了理解计算机网络协议,我们先拿某些人类活动进行类比,因为我们人类无时无刻不在执行协议

考虑当你想要向某人询问时间时将要怎样做。

人类协议(至少说是好的行为方式)要求:一方首先进行问候,以开始与另一个人的通信。接下来有三种可能:

  • 可能1:此人用一个热情的“你好”进行响应,隐含着一种指示,表明能够继续向那人询问时间了。
  • 可能2:例如“不要烦我!”,或“我不会说英语”,或某些不合时宜的回答,也许表明了一个勉强的或不能进行的通信。在此情况下,按照人类协议,发话者就不能继续了。
  • 可能3:有时,问的问题根本得不到任何回答,在此情况下,发话者通常会放弃向这个人询问时间。

注意到,在我们人类协议中,有我们发送的特定报文,也有我们根据接收到的应答报文或其他事件采取的动作

显然,报文和根据报文采取的动作,在一个人类协议中起到了核心作用。如果人们使用不同的协议(例如,如果一个人讲礼貌,而另一人不讲礼貌,或一个人明白时间的概念,而另一人却不理解),这些协议就不能交互,因而不能完成有用的工作

在网络中这个道理同样成立。即为了完成一项工作,要求两个(或多个)通信实体运行相同的协议

在因特网中,涉及两个或多个远程通信实体的所有活动都受协议的制约。例如,在两台物理上连接的计算机中,硬件实现的协议控制了在两块网络接口卡间的“线上”的比特流;在端系统中,拥塞控制协议控制了在发送方和接收方之间传输的分组发送的速率;路由器中的协议决定了分组从源到目的地的路径。在因特网中协议运行无处不在。

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

因特网(更一般地说是计算机网络)广泛地使用了协议。不同的协议用于完成不同的通信任务。掌握计算机网络领域知识的过程就是理解网络协议的构成、原理和工作方式的过程

2. 网络边缘

在上一节中,我们给出了因特网和网络协议的总体概述。现在我们将更深入一些来探究计算机网络(特别是因特网)的部件。在本节中,我们从网络边缘开始,观察一下我们更为熟悉的部件,即我们日常使用的计算机、智能手机和其他设备

回想前一节中计算机网络的术语,通常把与因特网相连的计算机和其他设备称为端系统。因为它们位于因特网的边缘,故而被称为端系统

端系统也称为主机(host),因为它们容纳(即运行)应用程序,如Web浏览器程序、Web服务器程序、电子邮件客户程序或电子邮件服务器程序等。(本书通篇交替使用主机和端系统这两个术语,即主机=端系统)

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

  • 客户通常是桌面PC、移动PC和智能手机等
  • 服务器通常是更为强大的机器,用于存储和发布Web页面、流视频、中继电子邮件等。
  • 今天,大部分提供搜索结果、电子邮件、Web页面和视频的服务器都属于大型数据中心(data center)。例如,谷歌公司(Google)拥有50 ~ 100个数据中心,其中15个大型数据中心每个都有10万台以上的服务器。

接入网

了解了位于网络边缘的端系统后,我们来考虑接入网,就是将端系统物理连接到其边缘路由器的网络。

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

以下是使用接入网的几种环境(家庭、公司和广域移动无线)下的几种类型接入链路:

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

我们简要概述一下一些常在因特网中使用的传输媒体。

当一个比特从源到目的地传输时,它经过一系列“发射器-接收器”对。每个发射器-接收器对,通过跨越一种物理媒体 (physical medium) 传播电磁波或光脉冲来发送该比特。该物理媒体可具有多种形状和形式,并且对沿途的每个发射器-接收器对而言不必具有相同的类型。

物理媒体的例子包括双绞铜线、同轴电缆、多模光纤缆、陆地无线电频谱和卫星无线电频谱。物理媒体分成两种类型:导引型媒体(guided media)和非导引型媒体 (unguided media)

对于导引型媒体, 电波沿着固体媒体前行,如光缆、双绞铜线或同轴电缆;对于非导引型媒体,电波在空气或外层空间中传播,例如在无线局域网或数字卫星频道中。

3. 网络核心

在考察了因特网边缘后,我们现在更深入地研究网络核心,即由因特网端系统的分组交换机和链路构成的网状网络,关于计算机网络中的交换和选路。

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

分组交换

在各种网络应用中,端系统彼此交换报文(message)

  • 报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据、JPEG图像或MP3音频文件。

为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。在源和目的地之间,每个分组都通过通信链路和分组交换机(packet switch )传送

  • 分组交换机主要有两类:路由器(router)和链路层交换机(link-layer switch)。

分组以等于该链路最大传输速率的速度传输通过通信链路。因此,如果某源端系统或分组交换机经过一条链路发送一个 L 比特的分组,链路的传输速率为 R 比特/秒,则传输该分组的时间为 L/R 秒。

多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission)机制。存储转发传输是指在交换机能够开始向输岀链路传输该分组的第一个比特之前,必须接收到整个分组。路由器在转发前需要接收、存储和处理整个分组。

每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个输出缓存(output buffer,也称为输出队列(output queue))。它用于存储路由器准备发往那条链路的分组

该输出缓存在分组交换中起着重要的作用。如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。此时,除了传输(即存储转发)时延以外,分组还要承受输岀缓存的排队时延(queuing delay)。这些时延是变化的,变化的程度取决于网络的拥塞程度。因为缓存空间的大小是有限的,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了。在此情况下,将出现分组丢失(丢包)(packet loss),到达的分组或已经排队的分组之一将被丢弃。

路由器怎样决定它应当向哪条链路进行转发呢?不同的计算机网络实际上是以不同的方式确定的。这里,我们简要介绍在因特网中所采用的方法

在因特网中,每个端系统具有一个称为IP地址的地址。当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了目的地的IP地址。如同邮政地址那样,该地址具有一种等级结构。当一个分组到达网络中的路由器时,路由器检查该分组的目的地址的一部分,并向一台相邻路由器转发该分组。更具体地说,每台路由器具有一个转发表(forwarding table),用于将目的地址(或目的地址的一部分)映射成为输岀链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路。路由器则将分组导向该出链路

这个叙述还要求回答另一个问题:转发表是如何进行设置的?是通过人工对每台路由器逐台进行配置,还是因特网使用更为自动的过程进行配置呢?第5章将深入探讨这个问题。现在将告诉你因特网具有一些特殊的路由选择协议(routing protocol),用于自动地设置这些转发表。例如,一个路由选择协议可以决定从每台路由器到每个目的地的最短路径,并使用这些最短路径结果来配置路由器中的转发表。

电路交换

在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存,链路传输速率)。在分组交换网络中,这些资源则不是预留的。会话的报文按需使用这些资源,其后果可能是不得不等待(即排队)接入通信线路

传统的电话网络是电路交换网络的例子。考虑当一个人通过电话网向另一个人发送信息(语音或传真)时所发生的情况。在发送方能够发送信息之前,该网络必须在发送方和接收方之间建立一条连接。这是一个名副其实的连接,因为此时沿着发送方和接收方之间路径上的交换机都将为该连接维护连接状态。用电话的术语来说,该连接被称为一条电路(circuit)。当网络创建这种电路时,它也在连接期间在该网络链路上预留了恒定的传输速率(表示为每条链路传输容量的一部分)。既然已经为该发送方-接收方连接预留了带宽,则发送方能够以确保的恒定速率向接收方传送数据

与此相反,考虑一台主机要经过分组交换网络(如因特网)向另一台主机发送分组所发生的情况。与使用电路交换相同,该分组经过一系列通信链路传输。但与电路交换不同的是,该分组被发送进网络,而不预留任何链路资源之类的东西。如果因为此时其他分组也需要经该链路进行传输而使链路之一出现拥塞,则该分组将不得不在传输链路发送侧的缓存中等待而产生时延。因特网尽最大努力以实时方式交付分组,但它不做任何保证

链路中的电路是通过频分复用 (Frequency- Division Multiplexing, FDM )或时分复用(Time-Division Multiplexing, TDM)来实现的

对于FDM,链路的频谱由跨越链路创建的所有连接共享。特别是,在连接期间链路为每条连接专用一个频段。该频段的宽度称为带宽(band­width)。调频无线电台也使用FDM来共享88MHz ~ 108MHz的频谱,其中每个电台被分配一个特定的频段

对于一条TDM链路,时间被划分为固定期间的帧,并且每个帧又被划分为固定数量的时隙。当网络跨越一条链路创建一条连接时,网络在每个帧中为该连接指定一个时隙。这些时隙专门由该连接单独使用,一个时隙(在每个帧内)可用于传输该连接的数据

比较

在描述了电路交换和分组交换之后,我们来对比一下这两者。

分组交换的批评者经常争辩说,分组交换不适合实时服务(例如,电话和视频会议),因为它的端到端时延是可变的和不可预测的(主要是因为排队时延的变动和不可预测所致)

分组交换的支持者却争辩道:①它提供了比电路交换更好的带宽共享;②它比电路交换更简单、更有效,实现成本更低。

电路交换不考虑需求,而预先分配了传输链路的使用,这使得已分配而并不需要的链路时间未被利用。另一方面,分组交换按需分配链路使用。链路传输能力将在所有需要在链路上传输分组的用户
之间逐分组地被共享。

虽然分组交换和电路交换在今天的电信网络中都是普遍采用的方式,但趋势无疑是朝着分组交换方向发展

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计网笔记(1)- 计算机网络和因特网 的相关文章

  • 线程学习(三)---生产消费模型

    线程学习 三 生产消费模型 什么是生产消费模型 生产消费模型图例 生产消费模型解释 wait notify notifyAll 与sleep 的区别 线程生命周期图分析 sleep 方法 wait notify notifyAll 方法 用
  • 武汉理工大学课程设计优秀报告_零极点对系统性能的影响分析

    自动控制原理优秀开源报告 零极点对系统性能的影响分析 要求完成的主要任务 包括课程设计工作量及其技术要求以及说明书撰写等具体要求 当开环传递函数为G1 s 时 绘制系统的根轨迹和奈奎斯特曲线 当开环传递函数为G1 s 时 a分别取0 01
  • 归并排序和快速排序比较

    最近在做一个算法实验 归并排序和快速排序的比较 这两种算法在排序方面是非常非常的通俗的了 权威的文献和网上的相关文章也是一大堆 在这里就简单贴下代码 写下个人从这个实验中学到的东西 先说说个人对这两个算法的理解 归并排序 简单来说就是先将数
  • Spring注入内部Bean

    1 什么是内部Bean 我们将定义在 lt bean gt 下的 lt property gt 或 lt constructor args gt 内部中的bean称为 内部bean 有两种方法可以注入内部bean 1 setter方法注入内
  • JS创建、写入、读取本地文件(txt)

    经测试 该方法在火狐 360浏览器不支持 在IE浏览器中支持 创建本地文件 写入文件 读取文件 小案例 创建本地文件 var fso try fso new ActiveXObject Scripting FileSystemObject

随机推荐

  • javaFX+sqlIt+Scene Builder 文档检测上传下载(一)

    JAVAFX基本介绍 JavaFX是用于构建富互联网应用程序的Java库 使用此库编写的应用程序可以跨多个平台一致运行 使用JavaFX开发的应用程序可以在各种设备上运行 如台式计算机 手机 电视 平板电脑等 要使用Java编程语言开发GU
  • MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)

    文章目录 0 SQL性能分析 1 表的设计合理化 1 1 为什么需要范式 1 2 三范式原理 1 3 什么样的表才满足三范式 2 慢查询 2 1 慢查询介绍 2 2 慢查询步骤 3 添加适当索引 3 1 索引是什么 3 2 索引优劣势 3
  • Qt5.9.2+VS2017从新建工程到窗口界面交互的一个简单例子

    本篇文章主要内容 前言 目录 1 从VS中新建一个Qt工程 2 添加第一个窗口界面 添加槽函数 连接信号与槽 3 添加第二个窗口界面 添加槽函数 连接信号与槽 4 功能实现 前言 之前在网上搜了很多相关教程 发现都不是很全面 今天就把Qt
  • html取消select下拉,取消下拉选项_jquery如何取消选择select下拉框

    摘要 腾兴网为您分享 jquery如何取消选择select下拉框 中邮网院 天天美剧 搜狐视频 七哈小说等软件知识 以及比特彗星 cad素材包 交易猫app 视频调色软件 网易云歌单 小米温湿度传感器 装配式设计软件 富士通打印机网 百度网
  • Markdown符号

    Markdown符号 一 Markdown数学符号 二 LaTex公式 三 段落及强调 3 1 强调 3 2 斜体 3 3 粗体 3 4 删除线 四 标题 4 1 Setext 形式标题 标题1 标题2 4 2 Atx 形式标题 标题1 标
  • 国网B接口资源上报(Push_Resourse)接口描述和消息示例

    上篇blog 梳理了国网B接口的REGISTER接口描述和消息示例 前端系统加电启动并初次注册成功后 向平台上报前端系统的设备资源信息 包括 视频服务器 DVR DVS 摄像机 告警设备 环境量采集设备等模拟或数字信号采集设备信息 前端系统
  • C语言实现线性方程组的高斯消元法

    C语言实现线性方程组的高斯消元法 线性方程组是高等数学中常见的数学模型 解方程组的方法有很多 其中高斯消元法是一种较为普遍和常用的方法 在计算机编程中 我们可以使用C语言来实现高斯消元法 快速地求解线性方程组的解析解 高斯消元法原理 高斯消
  • RPN详解

    转载原文 https blog csdn net lanran2 article details 54376126 这里的博客都挺好的 转载一下 留的 RPN全称是Region Proposal Network Region Proposa
  • 计算机视觉面试题整理

    1 介绍目标检测网络yolo系列以及ssd系列的原理 yolo对小目标检测不好的原因 除了缩小anchor外还可以如何改善 Yolo目标检测 YOLO是一种实时目标检测算法 其核心思想是将目标检测问题归为一个回归问题 直接从输入图像中预测目
  • 小程序:微信开发者工具中页面一片空白怎么办?

    试过网上的更新工具 重启什么的 都无效 后面找到办法了 地雷 先删除 wxml 中的所有内容 换成最简单的
  • Required field 'serverProtocolVersion' is unset

    java sql SQLException Could not establish connection to jdbc hive2 localhost 10000 Required field serverProtocolVersion
  • 大数据可视化课程笔记 4

    文章目录 第四章 比例数据可视化 4 1 比例数据在大数据中的应用 4 2 整体与部分 4 2 1 饼图 4 2 2 环形图 4 2 3 比例中的重叠 4 2 4 矩形树图 4 3 时空比例 第四章 比例数据可视化 4 1 比例数据在大数据
  • 密码强度检测器

    我的CSDN主页 python 每日一练 题目 代码运行效果 完整代码 我的博文推荐 基础更熟代码更优 再炼同类问题 2022 11 27试炼 练习题目 定义一个名为 isStrongPassword 的函数 该函数将字符串作为参数 功能是
  • yolov5篇-快速开始使用yolov5

    基本需求 需要python gt 3 8和pip即可 剩下的环境搭建需求已经被列在即将下载的文件中的 requirements txt 中了 当然需要注意的是 如果你的电脑上被安装了很多的python版本 还请确定一下你使用的是否是正确的那
  • 在离线服务器上创建深度学习虚拟环境

    在离线服务器上创建深度学习虚拟环境 一 安装虚拟机 1 虚拟机软件和Ubuntu下载链接 2 注意事项 二 Linux平台下Anaconda虚拟环境配置 1 Anaconda安装 2 配置自己所需的深度学习环境 3 打包虚拟环境传送到服务器
  • C++中类和函数类型在java中的对应

    C Java 虚函数 普通函数 纯虚函数 抽象函数 抽象类 抽象类 虚基类 接口
  • C# 辗转相除法求最大公约数

    辗转相除法求最大公约数 public static void CalcGCD int largeNumber int smallNumber out int GCD GCD 1 int remain 1 while remain 0 rem
  • 推挽输出&&开漏输出

    在学习STM32的时候 我发现了一个很值得研究学习的问题 下面 用我的理解来阐述一遍 这其中的原理 首先请看电路图 在给GPIO配置输出的时候 其有两种工作模式可选 分别是推挽输出和开漏输出 在此之前先得了解mos管的工作原理 为了方便大家
  • 软件测试工作内容和职责有哪些

    目前 在IT行业中测试的职位数量仅次于开发 可以说是第二大技术就业岗位 然而许多人对测试师工作的理解还停留在 只需要像用户一样使用产品 然后发现有问题提交报告就行了 其实这是极其不准确的 软件测试师在测试产品前后通常有很多工作要做 下面我们
  • 计网笔记(1)- 计算机网络和因特网

    本章主要内容 构成网络的基本硬件和软件 我们将从网络的边缘开始 介绍网络中运行的端系统和网络应用 接下来探究网络的核心 介绍传输数据的链路和交换机 最后是连接端系统和网络核心的接入网和物理媒体 网络中数据的时延 丢包 吞吐量 计算机联网时的