计算机网络
主要参考:计算机网络微课堂(有字幕无背景音乐版)_哔哩哔哩_bilibili、课程PPT
可看的题:
计算机网络期末复习汇总(附某高校期末真题试卷)-CSDN博客
《计算机网络(第7版)-谢希仁》期末考试复习题和答案(总结整理)_计算机网络期末考试题库-CSDN博客
概述
因特网
几个概念
- 网络(Network)由若干结点(Node)(节点可以是计算机、 集线器、 交换机或路由器等)和连接这些结点的**链路(Link)**组成。
- 小写字母开头的**internet(互连网)**是个通用名词,泛指多个计算机网络互连而成的计算机网络,对网络间的协议没有要求。
- 大写字母开头的Internet(互联网、因特网)是个专有名词,指全球范围的众多网络互连而成的特定的互连网,它采用TCP/IP协议族。互联网的两个重要基本特点是连通性和资源共享,是Internet提供诸多服务的基础。
- 以太网(Ethernet),是当今现有局域网采用的最通用的通信协议标准。
发展历程
-
ARPANET: 最初只是一个单个的分组交换网,不是一个互连网。1983 年, TCP/IP 协议成为 ARPANET 上的标准协议, 使得所有使用 TCP/IP 协议的计算机都能利用互连网相互通信。
人们将 1983 年作为互联网的诞生时间
-
国家科学基金网 NSFNET :三级结构: 主干网、地区网和校园网(或企业网) ,覆盖了全美国主要的大学和研究所,并且成为互联网中的主要组成部分。
-
出现了互联网服务提供者 ISP (Internet Service Provider): 提供接入到互联网的服务并需要收取一定的费用
其具有多层次 ISP 结构:主干 ISP、地区 ISP 和本地 ISP,其区分依据是覆盖面积大小和所拥有的 IP 地址数目的不同
在下图中有详细阐述
-
万维网 WWW (World Wide Web):由欧洲原子核研究组织 CERN 开发,成为互联网指数级增长的主要驱动力
因特网服务提供者ISP
组织或个人通过ISP获取IP地址,因特网上的主机只有通过IP地址才能进行通信。
因特网基于ISP的三层结构:
因此相隔较远的两台主机需要通过多个ISP才能完成通信。
因特网的标准化
因特网的标准化工作对因特网的发展起到了非常重要的作用。
因特网在指定其标准上的一个很大的特点是面向公众。
- 因特网所有的RFC(Request For Comments)技术文档都可从因特网上免费下载;
- 任何人都可以随时用电子邮件发表对某个文档的意见或建议。
- 但并非所有的 RFC 文档都是互联网标准, 只有很少部分的 RFC 文档最后才能变成互联网标准
因特网协会ISOC是一个国际性组织,它负责对因特网进行全面管理,以及在世界范围内促进其发展和使用。
- 因特网体系结构委员会IAB,负责管理因特网有关协议的开发;
- 因特网工程部IETF,负责研究中短期工程问题,主要针对协议的开发和标准化;
- 因特网研究部IRTF,从事理论方面的研究和开发一些需要长期考虑的问题。

制订因特网的正式标准要经过一下4个阶段:
- 因特网草案(在这个阶段还不是RFC文档)
- 建议标准(从这个阶段开始就成为RFC文档)
- 草案标准
- 因特网标准
因特网的组成
从互联网的工作方式上看,可以划分为两大块:
- 边缘部分(资源子网):由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
- 核心部分(通信子网):由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
边缘部分
处在互联网边缘部分的就是连接在互联网上的所有主机,这些主机又称为端系统 (end system),端系统在功能上有差别:普通的个人电脑、手机这种属于小的端系统;当然还有那种大型计算机可作为大的端系统。
端系统间的通信:主机 A 的某个进程和主机 B 上的另一个进程进行通信,通信方式有C/S和P2P两种方式。
C/S(Client/Server)通信方式:描述的是进程之间服务和被服务的关系。客户是服务的请求方,服务器是服务的提供方。客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据。
C/S通信方式的特点:
-
客户程序
-
被用户调用后运行,需主动向远地服务器发起通信(请求服务)。必须知道服务器程序的地址
-
不需要特殊的硬件和很复杂的操作系统
-
-
服务器程序
- 专门用来提供某种服务的程序,可同时处理多个客户请求
- 一直不断地运行着, 被动地等待并接受来自各地的客户的通信请求。不需要知道客户程序的地址
- 一般需要强大的硬件和高级的操作系统支持
P2P对等连接方式:两台主机在通信时不区分服务请求方和服务提供方。只要都运行了 P2P 软件,就可以进行平等的、对等连接通信。 P2P从本质上看仍然是使用C/S方式,只是对等连接中的每一个主机既是客户又是服务器
核心部分
- 是互联网中最复杂的部分
- 向网络边缘中的主机提供连通性,使任何一台主机都能够向其他主机通信
- 在网络核心部分起特殊作用的是路由器 (router)
- 路由器是实现分组交换(packet switching) 的关键构件,其任务是转发收到的分组。分组转发是网络核心部分最重要的功能
三种交换方式
互联网的核心部分采用分组交换技术
电路交换
电话交换机接通电话线的方式。直接进行两两连接,因此N台计算机就需要对电线。
分成3个步骤:
- 建立连接(分配通信资源)
- 进行通话(占据通信资源不放手)
- 释放连接(归还通信资源)
但是,不使用电路交换来传输计算机数据,因为这样的传输效率较低。比如用户正在编辑待传输的文件时,始终处于“进行通话”的阶段,导致其他用户无法使用传输功能,线路利用率低。
分组交换
分组交换采用了存储转发机制。
路由器负责将各种网络互连起来,并对接收到的分组进行转发,也就是分组交换。
- 发送方:构造分组、发送分组
- 路由器:缓存分组、转发分组(简称为分组转发)
- 接受方:接受分组、还原报文
将表示要发送的信息数据叫做报文,发送方会把较长的报文划分为几个更小的等长数据,在每个数据端前加入控制信息首部后,就构成了一个分组(包)。每个分组是互联网中被传送的数据单元。
在整个传输过程中:
- 发送方的任务就是依次发送分组
- 路由器的任务则是根据分组首部的目的地址等控制信息进行存储转发(此过程可能会经历多个交换机),每个分组在传输过程中的路径都是独立的,路由表需要创建和动态维护转发表
- 接受方再去掉受到数据的首部,把数据段还原出原始报文
分组交换的优势在于:
高效 | 在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用 |
---|---|
灵活 | 为每一个分组独立地选择最合适的转发路由 |
迅速 | 以分组作为传送单位,可以不先建立连接就能向其他主机发送分组 |
可靠 | 保证可靠性的网络协议、 分布式多路由的分组交换网,使网络有很好的生存性 |
报文交换
主要用于早期的电报通信网,现在较少使用。
数据的传输不需建立连接,数据的传输是一站一站往下送,所以数据中必须包含目的地址,并采用存储-转发(store-forward)(分组交换采用的也是存储转发)机制。正因为采用存储-转发机制,导致报文交换的延时较大且不可估计,导致其不适合于实时性要求高的业务,但是其线路利用率较高。
三种交换方式的对比
三种交换方式计算时延
计算机网络 物理层三种交换方式时延计算例题_哔哩哔哩_bilibili
- 若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快
- 报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率
- 由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性
计算机网络的定义与分类
定义
计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合。
- 互连︰是指计算机之间可以通过有线或无线的方式进行数据通信
- 自治︰是指独立的计算机,它有自己的硬件和软件,可以单独运行使用
- 集合:是指至少需要两台计算机
计算机网络的较好的定义是:计算机网络主要是由一些通用的、可编程的硬件(就是说一定有CPU)互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号,说的就是显示器这种)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
- 计算机网络所连接的硬件,并不限于一般的计算机,而是包括了智能手机等智能硬件。
- 计算机网络并非专门用来传送数据,而是能够支持很多种的应用(包括今后可能出现的各种应用)。
分类

按使用者分类
公用网(public network) | 按规定交纳费用的人都可以使用的网络,也可称为公众网 |
---|---|
专用网(private network) | 为特殊业务工作的需要而建造的网络 |
按覆盖范围分类
广域网WAN的覆盖范围通常为几十公里到几千公里,可以覆盖一个国家、地区、甚至横跨几个洲,因而有时也称为远程网。广域网是因特网的核心部分,其任务是为核心路由器提供远距离(例如,跨越不同的国家的)高速连接,互连分布在不同区域的城域网和局域网。
城域网MAN的覆盖范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离为5至50公里。城域网通常作为城市骨干网,互连大量企业、机构和校园局域网。逅九年。城域网已开始成为现代城市的信息服务基础设施,为大量用户提供接入和各种信息服务,并有趋势将传统的电信服务、有线电视服务和互联网服务融为一体。
局域网LAN一般用微型计算机或工作站通过高速通信线路相连,速率通常在10Mbit/s以上,但地理上则局限在较小的范围内,如一个实验室,一幢楼或一个校园内,距离一般在1公里左右。局域网通常由某个单位单独拥有、使用和维护。一个学校或企业大都拥有许多个互连的局域网,这样的网络常称为校园网或企业网。
个域网PAN是个人局域网络的简称,不是用来连接普通计算机的而是在个人工作的地方把属于个人使用的电子设备,如鼠标键盘用无线技术连接起来的网络,因此也常成为无线个人区域网WPAN,其覆盖范围为10米。
需要注意的是,若中央处理机之间的距离非常近,例如仅1米的数量级甚至更小,则一般就称之为多处理机系统。而不称它为计算机网络。
按拓扑结构分类
总线型网络使用单根传输线把计算机连接起来。
优点:建网容易、增减结点方便、节省线路。
缺点:重负载时通信效率不高。总线任意一处出现故障,则全网瘫痪。
星型网络是将每个计算机都以单独的线路与中央设备相连。中央设备早期是计算机,后来是集线器,现在一般是交换机或路由器。
优点:这种网络拓扑便于网络的集中控制和管理,因为端用户之间的通信必须经过中央设备。
缺点是成本高,中央设备对故障敏感。
环型网络是将所有计算机的网络接口连接成一个环,最典型的例子是令牌环局域网。
环可以是单环,也可以是双环,环中信号是单向传输的。
网状结构一般情况下,每个结点至少由两条路径与其他结点相连,多用在广域网中。
其优点是可靠性高。缺点是控制复杂、线路成本高。
当然,这几种拓扑结构还可以相互组合不断套娃,组成新的结构。
性能指标
速率
主机连接在计算机网络中,它在信道中传输数据的速率,也叫比特率、数据率。
**注意这里的k、M等为,而不是1024这种。**但是实际在计算中没准可以约去。
带宽
用来表征网络的通信线路所能传输数据的能力。即单位时间内,从网络中一个点到另一个点能通过的最高数据速率。
因此带宽就是一种速率,它的单位和速率一致。
吞吐量
单位时间内通过某个网络的实际数据量,是通过测量现实世界的网络后得出的,会受网络带宽和额定速率的限制。通常吞吐量达不到带宽那么大。
时延
时延由发送时延、传播时延、处理时延和排队时延四部分组成。由于实际网络转发过程中会经过多个路由器转发,因此会存在多个传播时延和处理时延。
-
发送时延:即源头计算机发送报文的速率。。其中的发送速率受网卡的发送速率、信道带宽和路由器接口速率限制,3个里取最小值。因此实际弄的时候,要注意设备间速率匹配。
-
传播时延:在信道中传输消耗的时间。。注意在不同介质中,电磁波的传输速率并不相同。
-
处理时延:路由器进行存储转发的时间。这个不好计算,因为网络中的流量动态变化,路由器的繁忙持续也动态变化,不好量化计算。一般我们会把这个时延忽略不计。
-
排队时延:分组在路由器输入输出队列中排队等待处理和转发所经历的时延,排队时延的长短往往取决于网络中当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大
此外,对于任何网络,并不是说发送时延或者传播时延一定占据主导地位,对不同问题有不同分析结果。
时延带宽积
顾名思义,时延带宽积=传播时延×带宽。
若发送端持续不断发送数据,那么当它发送的第一个bit到达终点时,发送端已经发送了时延带宽积个bit。

往返时间RTT
因特网上的信息通常是双向交互的,往返时间就是双向交互一次的时间。

利用率
- 信道利用率:该信道有百分之几的时间是被利用的,即有数据通过的。
- 网络利用率:全网络的信道利用率的加权平均。
事实上,当信道的利用率增大时,该信道引起的时延也会增加。因此信道利用率并不是越高越好。
丢包率
即分组丢失率,在一定时间范围内,传输过程中丢失的分组数量与总分组数量的比值。
分组丢失可能出现在下面两种情况下:
- 分组在传输过程中出现误码后被交换机检测出,就被交换机丢弃。
- 一台交换机队列已满(通信繁忙时),分组到达后塞不进去就被丢弃。
计算机网络体系结构
OSI体系结构和TCP/IP体系结构
计算机网络分层的必要性
**计算机网络是个非常复杂的系统。**早在最初的ARPANET设计时就提出了分层的设计理念。
**“分层”**可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
注:在数据传输过程中,只有主机是拥有所有的这五层结构的;而对于中间的路由器等,就只有物理层、数据链路层和网络层。
专业术语解释
实体
任何可发送或者接收信息的硬件或软件进程。
对等实体:收发双方相同层次中的实体。

协议
控制两个对等实体进行逻辑通信的规则集合。
协议三要素:语法、语义、同步
- 语法:定义所交换信息的格式,例如定义IP报文由哪些部分组成这样子
- 语义:定义收发双方所要完成的操作
- 同步:定义收发双方的时序关系
服务
- 在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。例如,物理层向数据链路层提供服务。
- 要实现本层协议,还需要使用下面一层所提供的服务。
- 协议是“水平的”,服务是“垂直的”。
- 实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是"透明"的。
服务访问点SAP
在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
- 数据链路层的服务访问点为帧的“类型”字段。
- 网络层的服务访问点为lP数据报首部中的“协议字段”。
- 运输层的服务访问点为“端口号”。
服务原语
上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
- 协议数据单元PDU:对等层次之间传送的数据包称为该层的协议数据单元。
- 服务数据单元SDU :同一系统内,层与层之间交换的数据包称为服务数据单元。
- 多个SDU可以合成为一个PDU;一个SDU也可划分为几个PDU。
习题
1.8 第1章 概述 习题课(1)— 体系结构相关习题_哔哩哔哩_bilibili
1.8 第1章 概述 习题课(2)— 时延相关习题_哔哩哔哩_bilibili
物理层
基本概念
计算机网络的物理层就是要解决在各种传输媒介上传输比特0和1的问题,进而给数据链路层提供透明传输比特流的服务。
而解决在各种传输媒介上传输比特0和1的问题中,物理层协议主要有以下四个任务:分别是机械特性、电器特性、功能特性以及过程特性。
-
机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置。
-
电气特性:指明在接口电缆的各条线上出现的电压的范围。
-
功能特性:指明某条线上出现的某一电平的电压表示何种意义。
-
过程特性:指明对于不同功能的各种可能事件的出现顺序。
物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。
物理层下的传输媒体
导引型传输媒体
同轴电缆
内导体铜质芯线(可以是单股实心线或者是多股绞合线)、绝缘层、网状编织的外导体屏蔽层、绝缘保护套层所组成。
其中同轴电缆有两类:一类是50欧阻抗的基带同轴电缆,另一类是75欧阻抗的宽带同轴电缆。
双绞线
双绞线是最古老且最常用的传输媒体。把两根互相绝缘的铜导线并放在一起,然后按照一定规则绞合起来就构成了双绞线。
屏蔽双绞线电缆比无屏敝双绞线电缆增加了金属丝编织的屏蔽层,提高了抗电磁干扰的能力。
绞合的作用:抵御部分来自外界的电磁波干扰和减少相邻导线的电磁干扰
光纤
由于光纤非常细,所以必须将它做成很结实的光缆。一根光缆少则只有一根光纤,多则可包括数十至数百根光纤,再加上加强芯和填充物就回以大大提高机械强度,必要时回放入远供电源线。最后加上包带层和外护套,就可以使抗拉强度达到几千克,完全可以满足工程施工的强度要求。
纤芯是由非常透明的石英玻璃拉成细丝(直径8~100微米),光纤的纤芯非常细,多模光纤的纤芯直径有50微米和62.5微米。而纤芯外面的包层也非常细,直径不超过125微米。
在光纤通信中,常用工作波长的中心分别位于0.85微米、1.30微米和1.55微米。
光纤通信的原理:

多模光纤与单模光纤:
多模光纤:
实际上,只要从纤芯中射到纤芯表面的光线的入射角大于某一个临界角度,就可产生全反射。 因此,可以存在许多条不同角度入射的光线在一条光纤中传输,这种光纤被称为多模光纤。
由于光的色散问题,光在多模光纤中传输一定距离后必然产生信号失真,也就是脉冲展宽(也就是输入脉冲和输出脉冲不一样)。因此,多模光纤只适合近距离传输(例如在建筑物内)。多模光纤对光源的要求不高,可以使用较便宜的发光二极管,相应地接收可采用光电二极管检测光脉冲。
单模光纤:
若光纤的直径减小到只有一个光的波长,则光纤就像一根波导那样。它可使光线一直向前传播,而不会产生多次反射,这样的光纤被称为单模光纤。
单模光纤没有模式色散,在1.31微米波长附近材料色散和波导色散大小相等符号相反,两者正好抵消,没有脉冲展宽问题(也就是输入脉冲和输出脉冲一样)。
单模光纤适合长距离传输且衰减小,但其制造成本高,对光源要求高。需要使用昂贵的半导体激光器作为光源,相应地。需要采用激光检波器检测脉冲。
电力线
应用电力线传输信号的实例最早是电力线电话。目前,如果要构建家庭高性能局域网,采用电力线作为传输媒体是不能满足要求的。对于装修时没有进行网络布线的家庭,可以采用这种方式。对于一些采用独立房间进行办公的企业来说每间办公室的电脑数量不多,而又不希望跨办公室进行布线,也可以采用这种方式。每个办公室只需根据需求,在电源插座上插入一个或多个电力猫即可。

非导引型传输媒体
我们可以利用电磁波在自由空间的传播来传送数据信息。中间的一段可以使用,这段频等范围的电磁波可以通过调制波的振幅、频率或相位来传输信息。
无线电波
从低频到甚高频(也就是从长波到米波),这些频段的电磁波又称为无线电波,用于国际广播、海事和航空通讯、电台广播、电视广播等。
其中无线电波中的低频和中频频段,主要利用地面波进行传输。而高频和甚高频频段主要是靠电离层的反射。

微波
从特高频到极高频(也就是从分米波到毫米波),这些频段的电磁波又称为微波,用于无线电话、无线网络、雷达、人造卫星接受、射电天文、人体扫描等。
微波通信在数据通信中占有重要地位,频率范围为300MHz到300GHz(波长1m到1mm),但主要使用2~40GHz的频率范围。微波在空间主要是直线传播,由于微波会穿透电离层而进入宇宙空间,因此它不能经过电离层的反射传播到地面很远的地方。
传统的微波通信主要有两种方式:地面微波接力通信和卫星通信。
微波在空间主要是直线传播,地球表面是一个曲面,因此其传播距离受到限制,一般只有50公里左右。但若采用100米高的天线塔,则传播距离可增大到100公里。为实现远距离通信,必须在一条微波通信信道的两个终端之间建立着干个中继站。中继站把前一站送来的信号经过放大后再发送到下一站,故称为“接力”。
常用的卫星通信方法是在地球站之间,利用位于约3万6千公里高空的人造同步地球卫星,作为中继器的一种微波接力通信。其最大特点是通信距离远,相应地传播时延也比较大一般在250~300ms之间。

红外线
很多家用电器(例如:电视、空调等)都配套有红外遥控器。以前的笔记本电脑基本都带有红外接口,可以进行红外通信,红外通信属于点对点无线传输,中间不能又障碍物,传输距离短,传输速率也很低。
传输方式
串行与并行
串行传输是指数据是一个比特一个比特依次发送的,在发送端和接受端之间只需要一条数据传输线路。
并线传输是指一次发送n个比特而不是一个比特,在发送端和接受端之间需要有n条数据传输线路。并行传输的优点是速度为串行传输的n倍。缺点就是成本高。
远距离传输例如计算机网络是通过串行传输实现的,而计算机内部的数据传输,常采用并行传输方式。(例如CPU与内存之间通过总线进行数据传输)
同步与异步
同步传输
为什么要同步?
数据块以稳定的比特流的形式传输。字节之间没有间隔,接收端在每个比特信号的中间时刻进行检测,以判别接收到的是比特0是比特1。由于不同设备的时钟频率存在一定差异,不可能做到完全相同,在传输大量数据的过程中所产生的判别时刻的累计误差,会导致接收端对比特信号的判别错位。因此,需要采取方法使收发双方的时钟保持同步。
如何让收发双方的时钟同步?
外同步:也就是在收发双方之间添加一条单独的时钟信号线,发送端在发送数据信号的同时,另外发送一路时钟同步信号。接收端按照时钟同步信号的节奏来接收数据。
内同步:也就是发送端将时钟同步信号编码到发送数据中一起传输。例如,传统以太网所采用的就是曼彻斯特编码。
异步传输
采用异步传输方式时,以字节为独立的传输单位。字节之间的时间间隔不是固定的。接收端仅在每个字节的起始处对字节内的比特实现同步。为此,通常要在每个字节前后分别加上起始位和结束位。
单向与双向
一条通信电路往往包含一条发送信道和一条接收信道。从通信的双方信息交互的方式来看,可以有以下三种基本方式:
- 单工通信(单工):又称为单向通信。通信双方只有一个数据传输方向。例如无线电广播
- 双向交替通信(半双工):通信双方可以相互传输数据,但不能同时进行。例如对讲机
- 全双工通信(全双工):又称为双向同时通信,通信双方可以同时发送和接收信息。例如电话
单向通信只需要一条信道,而双向交替通信或全双工通信,则都需要两条信道(每个方向各一条)。显然全双工通信的效率最高
编码与调制
基本概念
计算机需要处理和传输用户的文字,图片,音频和视频,这些可以统称为消息。数据是运输消息的实体,而计算机中的网卡将比特0和比特1变换成相应的电信号发送到网线,而信号是数据的电磁表现。
由信源发出的原始电信号称为基带信号。而基带**信号又分为两类,一类是数字基带信号**,例如计算机内部CPU与内存之间传输的信号。另一类是模拟基带信号,例如麦克风收到声音后产生的音频信号。
信号需要在**信道中进行传输,信道可分为数字信道和模拟信道**两种。
在不改变信号性质的前提下,仅对数字基带信号的波形进行变换,称为编码。编码后产生的信号仍为数字信号,可以在数字信道中传输。
把数字基带信号的频率范围搬移到较高的频段并转换为模拟信号称为调制。调制后产生的信号是模拟信号,可以在模拟信道中传输。
同样的,对于模拟基带信号的处理,也有编码和调制两种方法。在计算机网络中,更常见的是将数字基带信号通过编码或调制的方式进行传输。
码元:在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形成为码元。简单来说,码元就是构成信号的一段波形。
之前提到的传输媒体和这里的信道是一个东西吗?
传输媒体和信道不能直接画等号。对于单工传输,传输媒体中只包含一个信道,要么是发送信道,要么是接收信道。而对于半双工和全双工传输,传输媒体中要包含两个信道,一个是发送信道,另一个是接收信道。(如果使用信道复用技术,一条传输媒体还可以包含多个信道。)
常用编码方法
不归零编码
在整个码元时间内,电平不会出现零电平。例如,该码元在其时间内全部是正电平,而该码元在其时间内全部是负电平。

接收端如何判断出到底有几个码元连在一起?

这需要发送方的发送与接收方的接收做到严格的同步,那么就需要额外一根传输线来传输时钟信号,接收方按时钟信号的节拍来逐个接收码元。当然这个额外的传输线显然是不必要的,因此,由于不归零编码存在同步问题,计算机网络中的数据传输不采用这类编码。
归零编码
每个码源传输结束后信号都要归零,所以接收方只要在信号归零后进行采样即可,不需要单独的时钟信号。
实际上,归零编码相当于把时钟信号用归零方式编码在了数据之内,这称为自同步信号。但是归零编码中大部分的数据带宽都用来传输归零而浪费掉了。也就是说,归零编码的优点是自同步,但缺点是编码效率低。
曼彻斯特编码
如图所示,在每个码元时间的中间时刻,信号都会发生跳变,例如负跳变表示比特1(也就是向下),正跳变表示比特0(也就是向上)。码元中间时刻的跳变既表示时钟,又表示数据。传统以太网使用的就是曼彻斯特编码。
当然这里到底向上是1还是向下是1,要看具体的规定
差分曼彻斯特编码
如图所示,在每个码元时间的中间时刻,信号都会发生跳变。与曼彻斯特的编码不同,跳变仅表示时钟。而用码元开始处电平是否发生变化来表示比特0或者比特1。差分曼彻斯特编码比曼彻斯特编码变化少,更适合较高的传输速率。
如上图,每个码元结束和下一个码元开始处的电平变化用于表示0或者1。同样的,具体哪个表示1或者0,要看具体规定。
常用调制方法
基本调制方法
- 调幅所产生的模拟信号。无载波输出表示比特0,有载波输出表示比特1。
- 调频所产生的模拟信号。频率F1的波形表示比特0,频率F2的波形表示比特1。
- 调相所产生的模拟信号。初相位0度的波形表示比特0,初相位180度的波形表示比特1。
显然使用基本调制方法,一个码元只能包含一个比特的信息。如何让一个码元能包含更多的信息,就要用到下面的混合调制。
混合调制
为了使一个码元包含更多的比特,可以采用混合调制的方法。由于频率和相位是相关的,所以这两个不能同时调。通常情况下,相位和振幅可以结合起来一起调制,称为正交振幅调制QAM。
信道的极限容量
信号失真
数字信号通过实际的信道后,波形会产生失真,当失真不严重时,在输出端还可以根据已失真的波形还原出发送的码元。当失真严重时,在输出端就很难判断这个信号在什么时候是1和在什么时候是0。信号波形失去了码元之间的清晰界限,这种现象叫做码间串扰。

产生失真的原因主要有:码元传输速率、信号传输距离、噪声干扰、传输媒体质量等。
奈氏准则
在假定的理想条件下,为了避免码间串扰,码元传输速率是有上限的。
当然,实际上的码元传输速率要显著低于奈式准则给出的速率。因为奈式准则没有考虑传输距离等因素,是理想条件下的结果。
那么,尽管奈氏准则限制了最高码元传输速率,但是只要采用技术更为复杂的信号调制方法,让码元可以携带更多的比特,岂不是可以无限制地提高信息的传输速率吗?
回答是否定的。信道的极限数据传输速率还受到信噪比的影响。因为在实际的信道中会有噪声,噪声是随机产生的,其瞬时值有时会很大,这会影响接收端对码元的识别(噪声功率相对于信号功率越大,影响就越大)。
香农公式
c的单位是bit/s
依据香农公式和奈氏准则,在信道带宽一定时,要提高传输速率就要使用多元制(调制方法要牛以提升带宽W),也要提高信噪比。
信道复用技术
为什么要信道复用?
为了要把信道资源彻底榨干,在实际网络里,通常是很多对用户共用一个信道来传输信息(共享信道)。但是这样的传输就可能会导致相互干扰,传输就失败了,所以我们要搞多路复用技术来解决这个干扰问题。
频分复用FDM
将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。所有用户在同样的时间占用不同的带宽(即频带)资源。

频分多址:可让N 个用户各使用一个频带,或让更多的用户轮流使用这N 个频带,这种方式称为频分多址接入FDMA,即频分多址。也就是说,我有10个频带可供使用,但是有20个客户,那我就会前10用户先用,11-20用户再用,再轮流交替。
时分复用TDM
将时间划分为一段段等长的时分复用帧(TDM帧),每一个时分复用的用户在每一个TDM 帧中占用固定序号的时隙, 每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧的长度)。
TDM 信号也称为等时(isochronous) 信号,所有用户在不同的时间占用同样的频带宽度。
时分复用会导致信道利用率不高,例如被分配到A时隙的用户只在第一个TDM帧中发送了数据,那么其在后面的TDM帧中A时隙就一直处于空闲状态。解决这个问题我们会采用统计时分复用STDM的方法。
时分多址:可让N 个用户各使用一个时隙,或让更多的用户轮流使用这N 个时隙,这种方式称为时分多址接入TDMA (Time Division Multiple Access),简称为时分多址。
统计时分复用STDM
因为对于时分复用而言,当某个用户在某个TDM帧中无数据发送时,这个时隙也不会给别人用,而是处于空闲状态,导致线路的利用率不高。
因此采用统计时分复用可以按需动态地分配时隙,因此可以提高线路的利用率。
波分复用WDM
**即光的频分复用。**使用一根光纤来同时传输多个光载波信号,按光的波长(频段)来区分不同用户。
码分复用CDM
各用户在相同的时间使用相同的频带,各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。相当于结合了时分复用和码分复用的优点。
当码分复用信道被多个不同地址的用户所共享时,就被称为码分多址CDMA。
码分复用是如何工作的?
我们把发送一个bit所需的时间划分为m个短间隔,每个间隔叫码片。每一个站有自己独特唯一的码片序列。每个站如果想发送比特1,就发送自己的m bit码片序列;如果想发送比特0,就发送该码片序列的二进制反码。
例如,S站的码片序列为00011011,那么
- 如果S站想要发送比特1,那它应该发送的是序列(-1 -1 -1 +1 +1 -1 +1 +1)
- 如果S站想要发送比特0,那它应该发送的是序列(+1 +1 +1 -1 -1 +1 -1 -1),即上述序列的反码。
码片的特点?
每个站分配的码片序列:各不相同,且必须互相正交
例子
如果我们已知几个站的码片和收到的一段码片序列,如何判断是哪个站发送了数据?发送数据的站发送的是0还是1?
方法是对收到的码片序列和各个站的码片做规格化内积运算,其结果讨论如下:
- 结果为0,说明该站没有发送数据
- 结果为1,说明该站发送数据,且发送了1
- 结果为-1,说明该站发送数据,且发送了0
假设某站原来要发送信息的数据率为 b bit/s,现在由于每一个比特都要转换为m bit的码片再发送,该站实际发送的数据率就提高到了mb bit/s,同时, 所占用频带宽度也提高到原来的m 倍。
这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被对手发现。因为对手听到的相当于是多种声音混杂在一起的声音,会把这样的认为是噪音。
码分复用实际上实现了扩频,扩频通常有两类:
- 直接序列扩频 DSSS (Direct Sequence Spread Spectrum)
- 跳频扩频 FHSS (Frequency Hopping Spread Spectrum)
数字传输系统与宽带接入技术
数字传输系统
早期,电话网长途干线采用频分复用 FDM 的模拟传输方式;目前,大都采用时分复用 PCM 的数字传输方式。
现代电信网业务包括语音、视频、图像和各种数据业务,因此需要一种能承载来自其他各种业务网络数据的传输网络。在数字化的同时, 光纤开始成为长途干线最主要的传输媒体。
同步光纤网 SONET :各级时钟都来自一个非常精确的主时钟。
为光纤传输系统定义了同步传输的线路速率等级结构:
- 传输速率以 51.84 Mbit/s 为基础
- 对电信号称为:第 1 级同步传送信号 STS-1 (Synchronous Transport Signal)
- 对光信号称为:第 1 级光载波 OC-1 (Optical Carrier)
同步数字系列 SDH :ITU-T以美国标准 SONET 为基础制订的国际标准
与 SONET 的主要不同: SDH的基本速率为 155.52 Mbit/s
- 称为第 1 级同步传递模块 (Synchronous Transfer Module),即 STM-1
- 相当于 SONET 体系中的 OC-3 速率
SONET / SDH 标准的意义:
- 定义了标准光信号,规定了波长为 1310 nm 和 1550 nm 的激光源
- 在物理层定义了帧结构
- 使北美、日本和欧洲这三个地区三种不同的数字传输体制在 STM-1 等级上获得了统一
- 已成为公认的新一代理想的传输网体制
- SDH 标准也适合于微波和卫星传输的技术体制
接入网:将主机连接到边缘路由器上 ,边缘路由器是端系统Host去往任何其他远程端系统的路径上的第一台路由器。
接入技术:
- 有线网络接入技术:光纤到户FTTH、以太网、同轴电缆、双绞线的DSL、古老的拨号上网
- 无线网络接入技术: WiFi、 4G/5G、卫星广域覆盖
接入场景: 住宅(家庭)接入网、机构(学校、公司)接入网、移动接入网络(WiFi、4G/5G)
不同接入网的方式:
- 数字用户线DSL:使用电话线连接到数字用户线接入复用器(DSLAM) 。
- DSL电话线上,语音和数据可以同时传输
- 数据进入互联网,语音连接到电话网
- 上下行速率不对称
- 同轴电缆:家庭利用传统有线电视信号线(同轴电缆)接入头端上网
- 多个家庭共享有线电视的头端
- 不对称:高达40 Mbps–1.2 Gbps下行传输速率,30-100 Mbps上行传输速率
- 光纤到户FTTH:我国及全球先进地区普遍采用的光纤通信传输方法。
- 分为两类: 有源光纤网络AON(点对点连接) 和无源光纤网络PON(点对多点连接)。
- 带宽大、线路稳定
- 无线接入:无线接入网通过 “接入点” 将终端系统连接到路由器上
- 无线局域网(WLAN):通常在建筑物内或周围(10米),即WiFi
- 广域蜂窝接入网:由移动蜂窝网络运营商提供(10公里),即2G/3G/4G/5G等蜂窝网络
习题
数据链路层
概述
链路是从一个结点到相邻结点的一段物理线路,中间没有其他交换节点。
数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)。
数据链路层以帧为单位进行数据传输与处理。
数据链路层使用的信道主要有以下两种类型:
- 点对点信道
- 广播信道
对于点对点信道而言,数据链路层存在3个主要问题:
- 封装成帧:主机的各层会依次向下提供协议数据单元,当网络层为数据链路层提供网络层数据单元后,数据链路层为该数据单元添加帧头和帧尾的过程。首部和尾部的一个重要作用就是进行帧定界。
- 差错检测:帧在传输过程中可能发生误码,即原来是0现在变成了1。计算机一般会采用检错码的方式来检验出错误。
- 可靠传输:接收方收到含有误码的帧后,会直接将其丢弃。此时,如果数据链路层向上层提供的是不可靠服务,那么这样的丢弃是合理的,不会再管这个有误码的帧;如果提供可靠服务,那就还需要想办法让接收方主机再重新收到该帧的正确副本。事实上,误码无法避免,而能够确保发送方发什么,接收方就收到什么,就叫做可靠传输。
而对于广播信道而言,除了上述3个问题外,还存在其他问题:
- 主机ABCDE通过总线互联,若A需要向C发送消息,那A会直接往总线上传输信息,那么BDE如何知道这个不是自己要接收的信息?C又如何知道知道这是自己要的信息?这个问题一般会采用把帧的目的地址加入到帧中一起传输。
- 当总线上同时发生多个传输时,会发生数据碰撞,这是共享式局域网所无法避免的。在以太网中我们会采用媒体接入控制协议CSMA/CD来解决这个问题。
如今,在有线局域网领域,采用点对点信道和链路层交换机的交换式局域网已经能够取代上述的共享式信道局域网;而在无线局域网领域,我们仍然采用的是共享式信道局域网。
封装成帧
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
-
帧头和帧尾中包含有重要的控制信息
-
帧头和帧尾的作用之一是帧定界:发送方数据链路层的帧给到物理层后,会发送一串比特流给到接收方的物理层,而接收方的数据链路层就靠帧头和帧尾来界定比特流中哪些能构成一个完整的帧。
在上图PPP帧中,前后1字节的标志字段就是用来帧定界的,反应在比特流上就是01111110。
-
当然,有的协议并不会采用帧头和帧尾的方式进行定界,而是由物理层在帧前添加前导码。前导码分为前同步码(使得发送方和接收方时钟同步)和帧开始定界符(表明后面紧跟的就是MAC帧)。此外以太网还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符。
透明传输是指数据链路层对上层交付的传输数据没有任何限制,好像数据链路层不存在一样。如下列情况所示,帧中含有界定符
此时接收方会错误接收这个较短的数据,也就是说,数据链路层对其上层交付的数据有特殊需求(至少不能包括界定符),这样的数据链路层就没什么用了。
那么我们如何实现透明传输?
-
对于面向字节的物理链路:使用字符填充的方式,即在flag前插入转义字符的方式(当然转义字符前也可以插入转义字符)。注意这里的转义字符是一个控制字符,长度为1字节,用ESC来表示(不是说转义字符就是ESC这三个字母噢)
-
面向比特的物理链路:采用比特填充的方式
例如下图中标志符为01111110,而在帧数据部分有两个01111110,采用0比特填充法:在帧数据这每逢5个1就在后面加上一个0;然后接收方接收的时候只要把那个0给剔除就行了
当然,为了提高传输效率,我们应该让帧中真正有用的数据长度更长一些。而每一种数据链路层协议都规定了这个数据长度的上限,即最大传送单元MTU。
差错检测
比特差错:比特在传输过程中可能出错,1变0,0变1这种。
误码率BER:一段时间内,传输错误的比特数占传输比特总数的比率
在差错检测中,使用差错检测码(FCS字段)来检测是否发生了比特差错。
差错检测方法如下:
-
奇偶校验:在待发送的数据后面加1位奇偶检验位,使得整个数据(包括那个校验位)中“1”的个数为奇数(奇检验)或偶数(偶校验)。
采用这种方式需要收发双方首先约定是奇校验还是偶校验。如果是奇校验,发送方就要补0或者1来使得“1”的个数为奇数;接收方也要进行奇校验,看收到的比特流中1的个数是不是奇数。偶校验同理。
显然奇偶校验的漏检率比较高,在数据链路层中一般不采用这个方法。
-
循环冗余校验CRC:通过生成多项式来构造差错检测码,一般常用这个
注意这里的除法并不是传统的二进制除法,而是采用模2相除,具体看例子
例子
这里的检错码只能进行检错而不能纠错,想纠错就要使用冗余信息更多的纠错码,但这个开销大,在计算机网络中不使用。实际上的做法是采用检错重传方式来纠错,或者直接丢弃差错帧,取决于数据链路层向上层提供的是可靠传输还是不可靠传输。
可靠传输
概述
当帧传输出现误码时,数据链路层应该怎么做?
- 如果数据链路层提供不可靠传输服务:直接把误码帧丢掉
- 如果数据链路层提供可靠传输服务:想办法发送端发什么,接收端就该收到什么。
一般而言,有线链路误码率比较低,所以不要求数据链路层提供可靠传输服务(一般由它的上级处理);但无线链路受干扰大,数据链路层必须提供可靠传输服务。
此外,比特差错只是传输差错中的一种,(从整个计算机网络体系结构看)还可能存在分组丢失、分组失序和分组重复。不过,分组丢失、分组失序和分组重复一般不会出现在数据链路层,而是出现在其上层。
-
分组丢失:路由器输入队列满,分组直接被路由器丢掉了
-
分组失序:我的分组发送数据是ABC,但是实际收到的分组是BAC(比如)因为每个分组走的传输链路不同,到达的速度有快有慢。
-
分组重复:一个分组A被发出去以后,卡比在路由器(或者其他地方),到不了目标主机。然后发送端主机会触发超时重传,又发了一个分组A’,最后两个相同的数据包到了接收端。
停止-等待协议SW
TODO:这里3种实现可靠传输的协议不在考试范围内。
回退N帧协议GBN
选择重传协议SR
点对点协议PPP
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。
它的特点是:
- 简单
- 只检测差错,而不是纠正差错
- 不使用序号,也不进行流量控制
- 可同时支持多种网络层协议。
PPP协议在哪里用得到?
PPP协议的组成:

PPP帧格式:

PPP协议的透明传输(即数据部分出现标志字段F)如何实现?
-
面向字节的异步链路:字节填充法,插入转义字符
-
面向比特的同步链路:比特填充法,插入比特0
PPP协议的差错检测如何实现?
这里FCS的计算范围是A、C、P和数据部分,且其不提供可靠传输服务,意味着会直接把差错帧删除。
媒体接入控制MAC
概述
为什么要媒体接入控制?
当使用广播信道时,会存在共享信道的问题,多台设备在同一信道上一起发送数据,就会发生碰撞。而媒体接入控制就是一种用来协调多个发送和接收站点对同一信道的占用问题的方法。
媒体接入控制的分类和现状:
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
静态划分信道
有关频分、时分、码分多址的内容,这部分在物理层这里有讲过
动态接入控制
受控接入已经被狠狠淘汰了,下面讨论随机接入的方式。
随机接入的目标是解决如何尽量避免冲突以及发生冲突后如何尽快恢复通信。早期的共享式以太网采用CSMA/CD来解决这个问题
CSMA/CD协议
这个东西的中文名叫:载波监听多址接入/碰撞检测
-
多址接入MA:多个站接在一根总线上,竞争一个总线
-
载波监听CS:每个站在发帧之前要先看看总线上有没有其他人,再发送帧。如果总线连续96比特时间(发送96bit数据要的时间,即帧间最小间隔)空闲我就发;如果总线忙我就等,直到连续96比特时间空闲我再发。
这里96比特时间的作用是:使接收方可以检测出一个帧的结束,同时也使得其他站点有机会平等竞争信道并发送帧。
-
碰撞检测CD:边发送帧边检测有没有碰撞。一旦碰撞我就停止发送,等待一段时间后再发。
在以太网中还会采用强化碰撞的措施,即发送帧的站点一旦检测到碰撞,不仅要立即停止发送帧,还要继续发送32bit或64bit的人为干扰信号,以确保有足够多的碰撞信号使得所有的站点都能检测出碰撞。
争用期(碰撞窗口)
最小帧长
之所以会产生这个问题,考虑下图中主机A发送一个很短的帧,主机C在检测到96比特时间空闲后就发送帧结果导致了与主机A发送的帧碰撞。主机D收到了主机A发来的、受碰撞损坏的帧就会直接丢弃该帧;但是主机A不知道这个已经发送完毕的帧遭受碰撞就不会重发。
最小帧长的大小即****,注意单位!

最大帧长
最大帧长也是存在的,毕竟不能让一个主机一直占据总线不放,而且每一个主机也会存在自己的缓冲区,帧长太长缓冲区也放不下。具体帧长多少取决于用的什么协议。

退避时间:截断二进制指数退避

信道利用率

要提升信道利用率,就要
- 要小一点,即以太网端到端的距离要小一点
- 要大一点,即帧长度要大一点
使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CS协议
CSMA/CA协议
TODO:非考试内容
MAC地址、IP地址和ARP协议
- MAC地址是以太网的MAC子层使用的地址
- IP地址是TCP/IP体系结构网际层所使用的地址
- ARP协议是用来当已知设备分配到的IP地址时,能够获取到设备的MAC地址
- MAC地址属于数据链路层,而IP地址和ARP协议则属于网际层,三者具有千丝万缕的联系
MAC地址
使用点对点信道的数据链路层不需要使用地址,直接一对一通信即可。而使用广播信道的数据链路层则必须要用地址来区分主机谁是谁。

每个主机发送的帧中都必须包括发送主机的地址和接收主机的地址,这些地址是用于媒体接入控制的,所以被称为MAC地址,MAC地址也被叫做硬件地址、物理地址(但不是说MAC地址属于物理层!)。
对于有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)来说,每个适配器的MAC地址是全球唯一的。对于交换机和路由器这种有多接口的,就会有更多的MAC地址。所以说MAC地址是接口的唯一标识,而不是设备的唯一标识。
MAC地址的格式:

- 第一字节的b0如果取0代表单播地址;取1代表多播地址
- 第一字节的b1如果取0代表全球管理地址(全球唯一);取1代表本地管理地址
- 对于广播地址而言:格式为FF-FF-FF-FF-FF-FF
- MAC地址的发送顺序:从第一字节发送到第六字节;字节内从b0发送到b7。
单播MAC地址

主机B给主机C发送单播帧,主机B首先要构建该单播帧,在帧首部中的目的地址字段填入主机C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部的其他字段、数据载荷以及帧尾部,就构成了该单播帧。

主机B将该单播帧发送出去,主机A和C都会收到该单播帧。主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,丢弃该帧;主机C的网卡发现该单播帧的目的MAC地址与自己的MAC地址匹配,接受该帧,并将该帧交给其上层处理。
广播MAC地址

假设主机B要发送一个广播帧,主机B首先要构建该广播帧,在帧首部中的目的地址字段填入广播地址,也就是十六进制的全F,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该广播帧。

主机B讲该广播帧发送出去,主机A和C都会收到该广播帧,发现该帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,主机A和主机C都接受该帧,并将该帧交给上层处理。
多播MAC地址

每个主机都可以设置自己的多播组列表,假设主机B,C和D支持多播,各用户给自己的主机配置多播组列表如下所示

主机A首先要构建该多播帧,在帧首部中的目的地址字段填入该多播地址,源地址点填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该多播帧。
主机A将该多播帧发送出去,主机B、C、D都会收到该多播帧。主机B和C发现该多播帧的目的MAC地址在自己的多播组列表中,主机B和C都会接受该帧;主机D发现该多播帧的目的MAC地址不在自己得多播组列表中,则丢弃该多播帧。
IP地址
IP地址的具体内容见网络层。
IP地址分成两部分:以192.168.0.1为例
- 网络编号:标识以太网上无数的网络,即192.168.0
- 主机编号:标识同一网络中的不同主机,即1

MAC地址和IP地址间的关系

ARP协议

主机B现在想要知道主机C的MAC地址,所以B会先去查询自己的ARP高速缓存表,如果有就直接读取,没有就还要向主机C发送ARP请求报文来获取主机C的MAC地址。
随后B发送的ARP请求报文应为:告知自己的IP和MAC地址,想知道IP地址为192.168.0.3的主机MAC地址。这个报文被封装在MAC帧中,并进行广播(即目的地址为FF-FF-FF-FF-FF-FF)。
主机A和主机C都会收到这个ARP请求报文,两台主机会把报文交给上层的ARP处理流程。A发现不对应自己的IP地址就不理会;C发现对应自己的IP就要动。
C会首先将B的IP和MAC地址存到自己的ARP高速缓存表中,然后向B进行单播(即目的地址为B的MAC地址),告知自己C的MAC地址,且该响应报文也封装在MAC帧中发送。B收到以后就会把C的IP和MAC存入ARP高速缓存表。
对于高速缓存表中的项,存在动态和静态两种类型:
- 动态数据为主机自动获取,生命周期为默认两分钟。是因为IP和MAC并不是永远固定,比如我一台主机换网卡,MAC地址就会变。
- 静态数据为手动设置,不同操作系统下生命周期不同。
注意ARP协议只能在一段链路或一个网络中使用,跨网络不能用。

集线器与交换机
集线器HUB
集线器是从早期的总线型以太网发展而来的,现在常用的是使用双绞线和集线器HUB的星型以太网,其具有如下特性:
集线器的以太网在逻辑上仍是个总线网,需要使用CSMA/CD协议来协调各主机争用总线,只能工作在半双工模式,收发帧不能同时进行
使用集线器可以在物理层对以太网进行扩展:将多个以太网段连成更大的、多级星形结构的以太网。
- 碰撞域(collision domain)又称为冲突域,是指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。
- 碰撞域越大,发生碰撞的概率越高。

这样做能够使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。但是也使得碰撞域增大,消息冲突更加容易发饰,总吞吐量没有提高。
以太网交换机
其与集线器的区别在于:当主机A向主机B单播消息时,集线器会对该消息进行广播,而交换机则可以把消息单播给主机B。

交换机具有以下特点:
-
交换机有多个接口,每个接口都能和主机或者其他交换机连接。交换机工作在全双工模式(即可以同时收发信息)
-
交换机可以并行处理,可以同时连接多对接口,使多对主机间能相互通信无碰撞,不使用CSMA/CD协议。
-
交换机有多种速率的接口
-
交换机工作在数据链路层(当然也包括网络层),在收到帧后,会在帧交换表中查找帧目的MAC地址对应的接口号然后进行转发。其内部的帧交换表是通过自学习算法自动建立起来的。
-
帧的两种转发方式:
- 存储转发:经典的做法
- 直通交换:不必缓存帧后再进行发送,而是在接收帧的同时就立刻按其目的MAC地址决定转发接口,从而提高帧转发速率。但是直通交换也存在缺点,不会检查帧是否有差错
-
对于交换机而言,还可以提升带宽:
集线器与交换机的对比
单独使用集线器或交换机时
-
一个主机进行单播与广播:
可以看出在广播情况下,集线器和交换机的效果是一致的
-
两个主机同时向另外一个主机单播:
可以看出在集线器中会发生碰撞;而在交换机中,交换机会受到两台主机发来的帧后缓存下来,并依次通过对应端口进行转发。
集线器扩展以太网和交换机扩展以太网区别
-
单播:
-
广播:
可见在广播情况下,扩展后的集线器和交换机的表现也是一样的。说明无论采用哪种方式来扩展以太网,扩展后以太网中各主机都属于同一广播域。
-
多单播:
由此可见,扩展后的集线器不仅扩大了广播域,也扩大了碰撞域;而扩展后的交换机则只是扩大了广播域,隔离了碰撞域。

还有一个值得讨论的问题:中继器、集线器、网桥、交换机、路由器、网关之间的区别是?
中继器、集线器、网桥、交换机、路由器、网关的超全总结_交换机路由器网卡网桥集线器中继器分别工作在哪一层-CSDN博客
- 集线器 (Hub)
- 功能: 集线器是一种简单的网络设备,主要用于连接多个计算机或网络设备。它将接收到的信号广播到所有端口。
- 工作层次: 工作在物理层(即OSI模型的第1层)。
- 特点: 不具备智能,无法区分数据包的目标地址,适合小型网络。
- 网桥 (Bridge)
- 功能: 网桥用于连接两个或多个网络段,以减少碰撞域,优化网络流量。它根据MAC地址转发数据。
- 工作层次: 工作在数据链路层(第2层)。
- 特点: 具有过滤和转发功能,可以提升网络性能,但仍不具备高级的流量管理能力。
- 交换机 (Switch)
- 功能: 交换机也用于连接多个设备,但比集线器和网桥更智能。它根据MAC地址进行数据包的转发和过滤。
- 工作层次: 工作在数据链路层(第2层),有些交换机可以在网络层(第3层)工作。
- 特点: 能够创建多个碰撞域,支持全双工通信,大幅提高了网络传输效率。
- 路由器 (Router)
- 功能: 路由器用于连接不同的网络(例如不同的子网或互联网),并根据IP地址转发数据包。
- 工作层次: 工作在网络层(第3层)。
- 特点: 具有路由选择功能,可以执行网络地址转换(NAT),支持QoS和安全策略。
- 网关 (Gateway)
- 功能: 网关是一个连接不同协议或网络之间的设备。它不仅转发数据,还能进行协议转换。
- 工作层次: 可以工作在多个层次(1-7层),取决于具体实现。
- 特点: 常用于连接不同类型的网络(如LAN和WAN),支持多种通信协议和数据格式转换。
交换机自学习与转发帧、生成树协议STP
假设有一个由两个交换机组成的以太网如下:
-
主机A向主机B发送帧:该帧从接口 1 进入到交换机,交换机收到帧后,首先会把主机A的MAC地址和接口记录到帧交换表中。再查找帧交换表,显然此时没有查到应从哪个接口转发这个帧给主机B。
此时交换机会向除接口 1 以外的所有的接口广播这个帧(泛洪),当该帧从交换机1的接口4进入到交换机2的接口2时,交换机2也要进行同样操作(登记+泛洪)
-
主机B向主机A发送帧:该帧从接口 3 进入到交换机。交换机收到帧后,首先对B的MAC地址和接口进行登记。先查找帧交换表,发现(图中左边)交换表中的 MAC 地址有 A,表明要发送给A的帧应从接口1转发出去。于是就把这个帧传送到接口 1 转发给 A。
-
主机E向主机A发送帧:交换机收到帧后,还是先登记E。再查找帧交换表。发现交换表2中的 MAC 地址有 A,表明要发送给A的帧应从接口2转发出去。于是就把这个帧传送到接口 2 转发给交换机1的接口 4。
接口 4 到交换机1,先登记E,再查找交换表1。发现交换表1中的 MAC 地址有 A,表明要发送给A的帧应从接口1转发出去。于是就把这个帧传送到接口 1 转发给 A。
-
交换机丢弃帧的情况:新增一个主机G与A共同连在端口1上
主机 G 发送给 主机 A 一个帧,主机 A 和 交换机接口 1都能接收到,主机 A 的网卡收到后,根据帧的目的MAC地址A,就知道是发送给自己的帧,就接受该帧。
交换机 1收到该帧后,首先进行登记工作。然后交换机 1对该帧进行转发,该帧的MAC地址是A,在交换表1查找MAC 地址有 A
MAC 地址为 A的接口号是1,但是该帧正是从接口 1 进入交换机的,交换机不会再从该接口 1 讲帧转发出去,因为这是没有必要的,于是丢弃该帧
随着网络中各主机都发送了帧后,网络中的各交换机就可以学习到各主机的MAC地址,以及它们与自己各接口的对应关系。
考虑到可能有时要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。
以太网交换机的这种自学习方法使得以太网交换机能够即插即用,不必人工进行配置,因此非常方便。
如何提高以太网的可靠性?
显然,添加冗余链路可以提升可靠性(一根线不行了还有另一根),但是,添加冗余链路也会带来负面效应,即形成网络环路。
由此有了生成树协议STP,能够在增加冗余链路的同时又避免网络环路带来的问题。
其要点是:不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
虚拟局域网VLAN
使用多个交换机互联而产生的以太网中,所有的站点都属于同一个广播域。当这个广播域非常大时,就会带来许多弊端:
- 广播风暴:浪费网络资源和各主机CPU资源
- 难以管理维护
- 有潜在安全问题
因此我们需要分割广播域。一种方法是使用路由器对广播域进行隔离(因为路由器默认下不会转发广播消息),但是其成本较高;另一种方法就是使用虚拟局域网VLAN技术。
- 虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。
- 同一个VLAN内部可以广播通信,不同VLAN不可以广播通信
- 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
下面来叙述一下虚拟局域网VLAN的实现机制。
虚拟局域网VLAN技术是在交换机上实现的,需要交换机能够实现以下功能:
- 能够处理带有VLAN标记的帧——IEEE 802.1 Q帧
- 交换机的各端口可以支持不同的端口类型,不同端口类型的端口对帧的处理方式有所不同
IEEE 802.1 Q帧:
**交换机端口类型:**Access、Trunk、Hybrid
交换机各端口的缺省VLAN ID:所有端口在未配置VLAN时的默认VLAN,也记为PVID。交换机的每个端口有且仅有一个PVID。
Access端口:交换机与用户计算机之间的互连
- Access端口一般用于连接用户计算机
- Access端口只能属于一个VLAN
- Access端口的PVID值与端口所属VLAN的ID相同(默认为1)
- Access端口接收处理方法:一般只接受“未打标签”的普通以太网MAC帧。根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
- Access端口发送处理方法:若帧中的VID与端口的PVID相等,则“去标签”并转发该帧;否则不转发。
TODO:非考试范围
网络层
概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
网络层面临的主要问题:
-
网络层向其上一层运输层提供可靠服务还是不可靠服务(可靠传输就是指网络层对分组丢失、分组失序、分组重复这三种错误采取措施以确保接收方接收数据正确;如果不能保证正确,就是不可靠传输)
-
网络层寻址问题:各个路由器间IP地址的关系
-
路由选择问题:路由器收到数据后,依据数据包的目的地址和路由器中的路由表来决定将数据包从自己的哪个接口转发出去
关于路由选择问题,实际操作中如何构造路由表?
-
由用户或网络管理员进行人工配置,这种方法只适用于规模较小且网络拓扑不改变的小型互联网
-
另一种是实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法,而自动得出路由表中的路有记录,这种方法更适合规模较大且网络拓扑经常改变的大型互联网
因特网作为最大用户最多的互联网,使用TCP/IP协议栈,该协议栈的网络层使用网际协议IP,因此我们也把网络层称为网际层。网络层(网际层)除了 IP协议外,还有之前介绍过的地址解析协议ARP,还有网际控制报文协议ICMP,网际组管理协议IGMP。
网络层提供的两种服务
本节注重处理“网络层向其上一层运输层提供可靠服务还是不可靠服务”这一个问题。提供可靠服务的是面向连接的虚电路服务;提供不可靠服务的是无连接的数据报服务。
面向连接的虚电路服务
该连接方式的核心在于:可靠通信由网络来保证。
- 通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。随后通信双方沿着建立的虚电路发送分组。
- 目的主机的地址只有第一个分组要携带,后续分组的首部只需要携带选中的虚电路编号即可。
- 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
- 通信结束后,需要释放建立的虚电路。
发送方 发送给 接收方 的所有分组都沿着同一条虚电路传送
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
- 而电路交换的电话通信是先建立了一条真正的连接。分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
无连接的数据报服务
该连接方式的核心在于:可靠通信由用户主机来保证。是因特网采用的网络层服务方式。
-
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
-
网络在发送分组时不需要先建立网络层连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号),都可以走不同的路径,意味着每个分组的首部都需要携带目的主机的完整地址。
-
网络层不提供服务质量的承诺,不提供端到端的可靠传输服务。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限,使得路由器就好做便宜。
发送方 发送给 接收方 的分组可能沿着不同路径传送
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。
- 互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
IPv4地址
基本概念
-
IPv4地址就是因特网上每一台主机(或者路由器的每一个接口)分配一个在全世界范围内唯一的32bit的标识符。
-
IP地址由因特网名字和数字分配机构ICANN进行分配
-
IPv4地址的编制方法经历了下面的发展阶段:分类编址->划分子网->无分类编址
-
IPv4地址采用点分十进制表示方法进行表示
分类编址的IPv4地址
这个阶段中的IPv4地址可分为5类:

这里的红数字表示该类地址的固定首部数字。
- 只有A、B、C类地址可以分配给主机或路由器接口
- 主机号全为0称为网络地址,不能分配给主机或路由器接口
- 主机号全为1称为广播地址,不能分配给主机或路由器接口
A类地址
- 对于网络号而言,其首位固定为0,则其所有可能情况共种(这里的减2是为了去除保留网络号
00000000
和本地回环测试地址01111111
),因此可指派的网络数量为126。 - 对于主机号而言,其所有可能情况共种(这里的减2是去掉全0的网络地址和全1的广播地址),即每个网络中可分配的IP地址数量为。
B类地址
- 对于网络号而言,其首位固定为10,故可指派的网络数量为个
- 对于主机号而言,每个网络中可分配的IP地址数量为个(这里的减2是去掉全0的网络地址和全1的广播地址)。
C类地址
- 对于网络号而言,其首位固定为110,故可指派的网络数量为个
- 对于主机号而言,每个网络中可分配的IP地址数量为个(这里的减2是去掉全0的网络地址和全1的广播地址)。
小结
- 根据地址第一个十进制数的值即可确定其地址类别:0-127为A类,128-191为B类,192-223为C类
- 三种情况的地址不能分配给主机或路由器:
- A类网络,且其网络号为0或127
- 主机号全为0的网络地址
- 主机号全为1的广播地址
- 特殊的IPv4地址
0.0.0.0
表示在本网络上的本主机,只能作为源地址使用255.255.255.255
表示只在本网络上进行广播,路由器不进行转发,只能用于目的地址。- 以127开头,且后面3个十进制数非“全0”“全1”,用于本地软件回环测试,既能用于源地址,也能用于目的地址。
划分子网的IPv4地址

如图,现在需要把该网络划分为3个独立的网络,即子网1、子网2、子网3。如果仍然采用老方法:申请新的IP地址,就会面临以下问题:
- 等待时间很长还要爆米
- 要增加路由器中路由表记录的数量
- 浪费原来网络中的IP地址
因此,我们可以从主机号中取出几个比特来标识这是子网几。为了让计算机知道哪几位用来标识子网,有了子网掩码这个东西。
子网掩码
举个栗子
举例1:子网掩码为255.255.255.128,而,从主机号中借了1位用来区分子网,即子网有两个。
栗子2:子网掩码为255.255.255.192,即有4个子网
默认子网掩码
就是默认不划分子网时的子网掩码
- A类地址默认子网掩码为
255.0.0.0
- B类地址默认子网掩码为
255.255.0.0
- C类地址默认子网掩码为
255.255.255.0
无分类编址的IPv4地址
无分类域间路由选择CIDR
该地址模式称为CIDR(无分类域间路由选择),消除了原先的ABC地址分类和划分子网这一概念。CIDR通过“网络前缀”的方式来标识网络号和子网号。
例如地址128.14.35.7/20
,表示地址128.14.35.7
的前20位bit为网络前缀,剩余12位为主机号。可见下面的栗子:
-
这里的聚合C类网数量即
-
地址掩码即:网络前缀全取1,主机号全取0
-
注意这里当主机号全取0时也是网络地址;全取1时也是广播地址,能够分配给主机使用的地址数为。
路由聚合
又称构造超网
当R1将其所有路由记录告诉R2时,R2的路由表中就要存5条记录,而我们可以通过路由聚合的方式,把这5条记录合并为1条。
在上例中,先找记录目的地址的共同前缀为22位(在聚合地址块中记为/22
),剩余10位均取0,得到的地址块172.1.4.0
,就能得到聚合地址块(超网)172.1.4.0/22
。
可以看出,网络共同前缀越长,地址块就越小,路由越具体。还有最长前缀匹配的问题见上图。
例题
IPv4地址的使用流程
给定一个IPv4地址块,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址?
这个分配有两种方法:定长的子网掩码FLSM和变长的子网掩码VLSM
定长的子网掩码FLSM
- 使用同一子网掩码来划分子网
- 划分出的子网数固定,为个,n为从主机号中取出来用于表示子网号的比特数
- 每个子网的IP地址数量一样,会造成IP地址浪费
- 5个网络中,IP地址需求最大的是N2,其需要28个地址
- 还需要划分5个子网,因此从主机号中取出的用于表示子网的应该有3个bit。对于C类网而言,主机号剩余的5个bit能表示32个地址,满足28个地址的需求。
用子网掩码255.255.255.224
来划分C类网络218.75.230.0
的细节如下:
我们可以从子网1~8中任取5个分配给5个子网即可。
变长的子网掩码VLSM
- 使用不同子网掩码来划分子网
- 子网划分灵活,可以按需分配
- 每个子网的IP地址数量可以不一样,进而减少IP地址的浪费
当我们已知了每个网络所需的IP地址数量后,就可以确定其需要的主机号位数,再拿32-主机号位数即网络前缀位数:
现在问题就变成了把地址块218.75.230.0/24
分为5个地址块。218.75.230.0/24
的所有取值可能为:218.75.230.0
至218.75.230.255
。
分配准则为:每个子块的初始位置只能选取块大小整数倍的位置作为起点,一般先分配大子块(即IP数多的,这里的N2)
IP数据报的发送与转发
IP数据报的发送与转发分为主机发送IP数据报和路由器转发IP数据报。
各主机和路由器R的两个接口对应的IP地址和子网掩码如图。如果主机A要向主机C发送数据包(同一网络)属于直接交付;主机A向主机D发送数据包(不同网络)属于间接交付。现在以主机A向主机D发送数据包为例分析:
-
主机A如何知道主机D和它是不是在一个网络里?
主机A会将自己的IP与子网掩码进行逻辑与运算得到源网络地址,将主机D的IP与子网掩码进行逻辑与运算得到目的网络地址。
-
如果目的网络地址和源网络地址 相同,就是在同一个网络中,属于直接交付
-
如果目的网络地址和源网络地址 不相同,就不在同一个网络中,属于间接交付,传输给主机所在网络的默认网关(路由器——下图会讲解),由默认网关帮忙转发
-
-
主机A如何知道有路由器R的存在?
用户为了让本网络中的主机能和其他网络中的主机进行通信,就必须给其指定本网络的一个路由器的接口,由该路由器帮忙进行转发,所指定的路由器,也被称为默认网关。例如。路由器的接口0的IP地址192.168.0.128做为左边网络的默认网关。
-
主机A会将该IP数据报传输给自己的默认网关,也就是图中所示的路由器接口0。路由器收到IP数据报后如何转发?
- 检查IP数据报首部是否出错。若出错,则直接丢弃该IP数据报并通告源主机;若没有出错,则进行转发。
- 根据IP数据报的目的地址在路由表中查找匹配的条目。若找到匹配的条目,则转发给条目中指示的下一跳;若找不到,则丢弃该数据报并通告源主机。
在本例中,IP数据报首部地址为:源地址
192.168.0.1
,目的地址192.168.0.129
。 -
路由器R进行路由表查表的过程是什么样的?
逐条检查路由条目,将目的地址与路由条目中的地址掩码进行逻辑与运算得到目的网络地址,然后与路由条目中的目的网络进行比较,如果相同,则这条路由条目就是匹配的路由条目,按照它的下一条指示,图中所示的也就是接口1转发该IP数据报。
-
若A主机进行广播会发生什么?
若A主机进行广播,其IP数据报首部目的地址为
192.168.0.127
(本网络广播地址)或者255.255.255.255
(受限广播地址)。此时的路由器并不会对该广播进行转发,只有B和C主机能收到该广播消息。这说明路由器是隔离广播域的,能够防止广播风暴。(如果因特网中的路由器都能转发广播,那世界上所有主机都能收到这个广播,造成网络资源的严重浪费)- 中继器和集线器工作于物理层,既不隔离冲突域也不隔离广播域
- 网桥和交换机(多端口网桥)工作于数据链路层,可以隔离冲突域,但不能隔离广播域
- 路由器工作于网络层,既隔离冲突域也隔离广播域
静态路由配置与路由环路
这部分不是考试要求
静态路由配置指用户或管理员为路由器人工配置路由表。这种配置方式简单、开销小,但不能及时适应网络状态变化。
使用静态路由配置可能出现以下错误,而这些错误可能导致路由环路:
- 配置错误
- 聚合不存在的网络
- 网络故障
静态路由配置
例如上图中,R2要向192.168.1.0/24
转发数据,但是在其路由表中没有这一目的地址,因此需要手动添加。R2的下一跳转发给R1的1接口,所以在其路由表中添加最后一行的值,即为静态路由配置,其类型为静态。
默认路由
上图中,若R1想要向因特网中的某台主机发送数据报。因特网中主机数量数不胜数,人工配置显然不可能,所以使用默认路由。默认路由可以被所有网络匹配,但路由匹配有优先级,默认路由是优先级最低的。
特定主机路由
我们可以给路由器添加针对某个主机的特定主机路由条目,一般用于网络管理人员对网络的管理和测试。
上图中的R1要为其配置一个指向特地主机192.168.2.1
的路由。其目的网络格式为特定主机IP(这里是192.168.2.1)/32
。
路由环路
配置错误导致路由环路
在上图中,由于配置错误,R2路由表第三条配置的下一跳搞错了(应该指向R1的接口1,即10.0.0.1
,这里被错误设置成R3的接口0)。R2将数据报发送给R3的接口0后,R3进行查表转发,选中R3路由表第3条配置,又将数据报发送至10.0.1.1
(即R2的接口1)。就这样数据报在R2和R3间循环打转。
解决方法见上图右上角。
聚合不存在的网络导致路由环路
R2路由表中第3条为聚合路由,其指向的具体地址见上图右上角。当目的网络为192.168.3.3/24
时,R2本应不予转发(因为该IP在网络中不存在),但其实际上转发给了R1的1接口。R1查表后按默认路由进行转发,又转发给了R2的0接口,就这样又产生了路由环路。
解决方案为:添加黑洞路由,下一跳为null0
的数据报直接丢弃。
网络故障导致路由环路
R1到主机192.168.1.0/24
的线路故障后,R1会将其路由表中的对应条目删除。此时R2还想向主机192.168.1.0/24
转发数据,走R2的聚合路由到R1的1号口;R1收到后走默认路由,又回到了R2的0号口。
解决方案为:给故障网络添加黑洞路由
如果后续该网络故障修复,R1会自动回复正常的192.168.1.0/24
转发项,并使黑洞路由自动失效。
路由选择协议
概述
路由选择协议分为静态路由选择和动态路由选择。静态路由选择就是上面的人工配置;动态路由协议则是路由器通过路由选择协议自动获取路由信息。
显然静态路由选择简单开销小,但不能及时适应网络状态的变化(如流量变化、网络拓扑结构变化),适用于小型网络;动态路由则比较复杂开销大,能适应网络状态的变化,适用于大型网络。
因特网采用的路由选择协议的特点:
- 自适应:路由动态选择,能适应网络变化
- 分布式:路由器之间交换路由信息
- 分层次:因特网被划分为诸多娇小的自治系统
域间路由选择使用外部网关协议EGP
域内路由选择使用内部网关协议IGP
常见路由选择协议如下:
路由器的基本结构
路由选择协议是在路由器上运行的。
路由信息协议RIP
基本工作过程:
RIP协议如何更新路由表:
1.路由器C的表到达各目的网络的下一条都记为问号,可以理解为路由器D并不需要关心路由器C的这些内容
假设路由器C的RIP更新报文发送周期到了,则路由器C将自己路由表中的相关路由信息封装到RIP更新报文中发送给路由器D
2.路由器C能到达这些网络,说明路由器C的相邻路由器也能到达,只是比路由器C的距离大1,于是根据距离的对比,路由器D更新自己的路由表
RIP算法的缺陷:
RIP 协议的优缺点
优点:
- 实现简单,开销较小。
缺点:
-
RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)
-
路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
-
“坏消息传播得慢”,使更新过程的收敛时间过长。
开放最短路径优先 OSPF
问候分组:
IP数据报首部中协议号字段的取值应为89,来表明IP数据报的数据载荷为OSPF分组
发送链路状态通告LSA:
洪泛转发即从自己的所有接口发送出去
链路状态数据库同步:
使用SPF算法计算出各自路由器到达其他路由器的最短路径:
边界网关协议BGP
BGP是自治系统间的路由协议,其目标是找到一条能到达目的网络且比较好的路由(不兜圈子),并不是要找到最佳路由。
IPv4数据报的首部格式
一个 IP 数据报由首部和数据两部分组成。**首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。**在首部的固定部分的后面是一些可选字段,其长度是可变的。
图中的每一行都由32个比特(也就是4个字节)构成,每个小格子称为字段或者域,每个字段或某些字段的组合用来表达IP协议的相关功能
第一行的内容:
为什么要有填充字段:
IP数据报的首部长度一定是4字节的整数倍
因为首部中的可选字段的长度从1个字节到40个字节不等,那么,当20字节的固定部分加上1到40个字节长度不等的可变部分,会造成首部长度不是4字节整数倍时,就用取值为全0的填充字段填充相应个字节,以确保IP数据报的首部长度是4字节的整数倍
第2行的内容:
现在假定分片2的IP数据报经过某个网络时还需要进行分片:
第3行内容:
源IP地址和目的IP地址:
网际控制报文协议ICMP
ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP层的协议
差错报告报文的五种情况:
终点不可达:
源点抑制:
时间超过:
参数问题:
改变路由:
不应发送ICMP差错报告报文情况:
ICMP的应用:
分组网间探测PING:
跟踪路由(traceroute):
虚拟专用网VPN与网络地址转换NAT
虚拟专用网VPN:
由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。
私有地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信
私有地址只能用作本地地址而不能用作全球地址
因特网中所有路由器对目的地址是私有地址的IP数据报一律不进行转发
本地地址与全球地址
本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
全球地址——全球唯一的 IP 地址,必须向互联网的管理机构申请。
问题:在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题
两个专用网内的主机间发送的数据报是通过了公用的因特网,但在效果上就好像是在本机构的专用网上传送一样
数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看,R1和R2之间好像是一条直通的点对点链路,因此也被称为IP隧道技术
网络地址转换NAT(Network Address Translation):
使用私有地址的主机,如何才能与因特网上使用全球IP地址的主机进行通信?
这需要在专用网络连接到因特网的路由器上安装NAT软件
专有NAT软件的路由器叫做NAT路由器
它至少有一个有效的外部全球IP地址
这样,所有使用私有地址的主机在和外界通信时,都要在NAT路由器上将其私有地址转换为全球IP地址
解决方案如下:
内网主机与外网主机的通信,是否能由外网主机首先发起?不行
运输层
概述
- 物理层、数据链路层、网络层实现了主机到主机的通信
- 运输层负责为不同主机上的应用进程提供直接通信服务
- 运输层协议又称为端到端协议
进程间的通信可以被称为逻辑通信,即是指运输层之间的通信好像是沿水平方向传送数据,但事实上,这两条数据并没有一条水平方向的物理连接,要传送的数据是沿着图中上下多次的虚线方向传送的。
如上图
进程Ap1与Ap4之间进行基于网络的通信,进程Ap2与Ap3之间进行基于网络的通信。发送方在运输层使用不同的端口,来对应不同的应用进程,然后通过网络层及其下层来传输应用层报文;接收方的运输层通过不同的端口,将收到的应用层报文,交付给应用层中相应的应用进程。
这里端口并不是指看得见、摸得着的物理端口,而是指用来区分不同应用进程的标识符
运输层端口号、复用与分用
运输层端口号
-
运行于计算机上的进程使用进程标识符PID进行标识。
-
但是运行于因特网上的计算机系统不同,其标识进程的方式也不同。因此TCP/IP体系需要采用另外的方法来统一应用程序的标识。
-
TCP/IP体系的运输层采用端口号来区分不同应用层的不同进程。端口号有16bit,取值范围0~65535。端口号分为以下三类:
-
端口号只具有本地意义(端口号只标识本计算机应用层中的各进程)。在因特网中计算机不同,哪怕端口号一样,他们也不一定是一个应用层服务。
复用与分用
- 多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)发送数据称为 复用
- 多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)接收时叫做 分用。
- 采用不同的运输层协议(TCP、UDP),在IP复用、分用时的协议字段不同。
常用协议端口号
这里有一个栗子,说明了用户浏览器向Web浏览器请求数据的全过程:
【计算机网络微课堂(有字幕无背景音乐版)】 【精准空降到 05:55】
运输层协议TCP与UDP
UDP 和 TCP 是TCP/IP体系结构运输层中的两个重要协议
当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。
连接情况和单播广播情况对比:
在运输过程方面:
-
UDP对应用进程交下来的报文既不合并也不拆分,而是保留这些报文的边界。换句话说,UDP是面向应用报文的
-
TCP是面向字节流的,这正是TCP实现可靠传输、流量控制、以及拥塞控制的基础
-
对于发送方而言,TCP会把应用进程交付下来的数据块看作是一连串无结构的字节流,TCP并不知道这些待传送的字节流的含义,并将他们编号,并存储在自己发送缓存中。TCP会根据发送策略,提取一定量的字节构建TCP报文并发送
-
对于接收方而言,一方面从所接受到的TCP报文段中,取出数据载荷部分并存储在接收缓存中;一方面将接收缓存中的一些字节交付给应用进程。
TCP不保证接收方应用进程所收到的数据块与发送方发送的数据块,具有对应大小的关系(例如,发送方应用进程交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块,就把收到的字节流交付给了上层的应用进程,但接收方收到的字节流必须和发送方应用进程发出的字节流完全一样)
接收方的应用进程必须有能力识别收到的字节流,把它还原成有意义的应用层数据
-
提供服务的情况:
报文首部不同:
TCP流量控制
一般来说,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收,利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
TCP拥塞控制
下面介绍TCP拥塞控制的四种算法,假定如下条件成立:
-
数据是单方向传送,而另一个方向只传送确认。
-
接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定,
-
以最大报文段MSS的个数为讨论问题的单位,而不是以字节为单位。
最大报文段长度 MSS (Maximum Segment Size) 是每个 TCP报文段中的数据字段的最大长度
慢开始(slow-start):由小到大逐渐增大拥塞窗口数值。
两个变量:
- 拥塞窗口(cwnd):初始拥塞窗口值:2 种设置方法。窗口值逐渐增大。
- 1 至 2 个最大报文段 (旧标准)
- 2 至 4 个最大报文段 (RFC 5681)
- 慢开始门限(ssthresh):防止拥塞窗口增长过大引起网络拥塞。
其增长过程是指数级的,拥塞窗口一直增长到慢开始门限的值为止
拥塞避免(congestion avoidance):让拥塞窗口 cwnd 缓慢地增大,避免出现拥塞。每经过一个传输轮次,拥塞窗口 cwnd = cwnd + 1。
如果在发送过程中出现部分报文段丢失,这必然会造成发送方对这些丢失报文段的超时重传。在下面图中,假设拥塞窗口为24时重传计时器超时:
快重传和快恢复实际上是慢开始和拥塞避免的升级版,用于改进TCP的性能。
有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。
这将导致发送方超时重传,并误认为网络发生了拥塞;
发送方把拥塞窗口cwnd又设置为最小值1,并错误地启动慢开始算法,因而降低了传输效率
采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。所谓快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传
- 要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认;
- 即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
- 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。
发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段。于是不启动慢开始算法,而执行快恢复算法
- 发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法。
- 也有的快恢复实现是把快恢复开始时的拥塞窗口cwnd值再增大一些,即等于新的ssthresh +3.
- 既然发送方收到3个重复的确认,就表明有3个数据报文段已经离开了网络;
- 这3个报文段不再消耗网络资源而是停留在接收方的接收缓存中;
- 可见现在网络中不是堆积了报文段而是减少了3个报文段。因此可以适当把拥塞窗口扩大些
TCP超时重传时间的选择
RFC6298建议使用下式计算超时重传时间RTO

产生的新问题:超时重传无法测准RTT
TCP可靠传输
TODO
TCP的运输连接方式
- TCP 连接的建立采用客户服务器方式。
- 主动发起连接建立的应用进程叫做TCP客户 (client)。
- 被动等待连接建立的应用进程叫做TCP服务器 (server)。
TCP三次握手建立连接
“握手”需要在TCP客户端和服务器之间交换三个TCP报文段
1.最初两端的TCP进程都处于关闭状态:
2.一开始,TCP服务器进程首先创建传输控制块,用来存储TCP连接中的一些重要信息。例如TCP连接表、指向发送和接收缓存的指针、指向重传队列的指针,当前的发送和接收序号等。之后,就准备接受TCP客户端进程的连接请求。此时,TCP服务器进程就进入监听状态,等待TCP客户端进程的连接请求
TCP服务器进程是被动等待来自TCP客户端进程的连接请求,因此成为被动打开连接
3.TCP客户进程也是首先创建传输控制块,由于TCP连接建立是由TCP客户端主动发起的,因此称为主动打开连接
4.然后,客户端在打算建立TCP连接时,向TCP服务器进程发送TCP连接请求报文段,并进入同步已发送状态
TCP连接请求报文段首部中
-
同步位SYN被设置为1,表明这是一个TCP连接请求报文段
-
序号字段seq被设置了一个初始值x,作为TCP客户端进程所选择的初始序号
请注意:TCP规定SYN被设置为1的报文段不能携带数据,但要消耗掉一个序号
5.TCP服务器进程收到TCP连接请求报文段后,如果同意建立连接,则向TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态
TCP连接请求确认报文段首部中
-
同步位SYN和确认为ACK都设置为1,表明这是一个TCP连接请求确认报文段
-
序号字段seq被设置了一个初始值y,作为TCP服务器进程所选择的初始序号,
-
确认号字段ack的值被设置成了x+1,这是对TCP客户进程所选择的初始序号(seq)的确认
请注意:这个报文段也不能携带数据,因为它是SYN被设置为1的报文段,但同样要消耗掉一个序号
6.TCP客户进程收到TCP连接请求确认报文段后,还要向TCP服务器进程发送一个普通的TCP确认报文段,并进入连接已连接状态
普通的TCP确认报文段首部中
-
确认位ACK被设置为1,表明这是一个普通的TCP确认报文段
-
序号字段seq被设置为x+1,这是因为TCP客户进程发送的第一个TCP报文段的序号为x,所以TCP客户进程发送的第二个报文段的序号为x+1
-
确认号字段ack被设置为y+1,这是对TCP服务器进程所选择的初始序号的确认
请注意:TCP规定普通的TCP确认报文段可以携带数据,但如果不携带数据,则不消耗序号
这里第3次发送的确认报文段并不多余,这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误
TCP四报文挥手释放连接
1.现在TCP客户进程和TCP服务器进程都处于连接已建立状态
TCP客户进程的应用进程通知其主动关闭TCP连接
TCP客户进程会发送TCP连接释放报文段,并进入终止等待1状态
TCP连接释放报文段首部中
-
终止位FIN和确认为ACK的值都被设置为1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认
-
序号seq字段的值设置为u,它等于TCP客户进程之前已传送过的数据的最后一个字节的序号加1
-
确认号ack字段的值设置为v,它等于TCP客户进程之前已收到的、数据的最后一个字节的序号加1
请注意:TCP规定终止位FIN等于1的报文段即使不携带数据,也要消耗掉一个序号
2.TCP服务器进程收到TCP连接释放报文段后,会发送一个普通的TCP确认报文段并进入关闭等待状态
普通的TCP确认报文段首部中
-
确认位ACK的值被设置为1,表明这是一个普通的TCP确认报文段
-
序号seq字段的值设置为v,它等于TCP服务器进程之前已传送过的数据的最后一个字节的序号加1,这也与之前收到的TCP连接释放报文段中的确认号匹配
-
确认号ack字段的值设置为u+1,这是对TCP连接释放报文段的确认
3.TCP服务器进程应该通知高层应用进程,TCP客户进程要断开与自己的TCP连接
此时,从TCP客户进程到TCP服务器进程这个方向的连接就释放了
这时的TCP连接属于半关闭状态,也就是TCP客户进程已经没有数据要发送了
但如果TCP服务器进程还有数据要发送,TCP客户进程仍要接收,也就是说从TCP服务器进程到TCP客户进程这个方向的连接并未关闭
4.TCP客户进程收到TCP确认报文段后就进入终止等待2状态,等待TCP服务器进程发出的TCP连接释放报文段
若使用TCP服务器进程的应用进程已经没有数据要发送了,应用进程就通知其TCP服务器进程释放连接
由于TCP连接释放是由TCP客户进程主动发起的,因此TCP服务器进程对TCP连接的释放称为被动关闭连接
5**.TCP服务器进程发送TCP连接释放报文段并进入最后确认状态**
该报文段首部中
-
终止位FIN和确认位ACK的值都被设置为1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认
-
序号seq字段的值为w,这是因为在半关闭状态下,TCP服务器进程可能又发送
-
确认号ack字段的值为u+1,这是对之前收到的TCP连接释放报文段的重复确认
6.TCP客户进程收到TCP连接释放报文段后,必须针对该报文段发送普通的TCP确认报文段,之后进入时间等待状态
该报文段首部中
-
确认为ACK的值被设置为1,表明这是一个普通的TCP确认报文段
-
序号seq字段的值设置为u+1,这是因为TCP客户进程之前发送的TCP连接释放报文段虽然不携带数据,但要消耗掉一个序号
-
确认号ack字段的值设置为w+1,这是对所收到的TCP连接释放报文段的确认
TCP服务器进程收到该报文段后就进入关闭状态,而TCP客户进程还要进过2MSL后才能进入关闭状态
TCP客户进程在发送完最后一个确认报文后,为什么不直接进入关闭状态?而是要进入时间等待状态?
因为时间等待状态以及处于该状态2MSL时长,可以确保TCP服务器进程可以收到最后一个TCP确认报文段而进入关闭状态
TCP报文的首部格式
第一行:源端口和目的端口
序号、确认号和确认标志位
数据偏移、保留、窗口和校验和
同步标志位、终止标志位、复位标志位、推送标志位、紧急标志位和紧急指针
选项和填充
应用层
概述
C/S模式和P2P模式
网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系,目前流行的主要有以下两种:
- 客户/服务器(Client/Server,C/S)方式
- 对等(Peer-to-Peer,P2P)方式
客户/服务器(Client/Server,C/S)方式:
- 客户和服务器是指通信中所涉及的两个应用进程。
- 客户/服务器方式所描述的是进程之间服务和被服务的关系。
- 客户是服务请求方,服务器是服务提供方。
- 服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的IP地址。

C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式包括万维网WWW、电子邮件、文件传输FTP等。
基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
- 由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
- 为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器
对等(Peer-to-Peer,P2P)方式:
在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
目前,在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
基于P2P的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而是为个人控制的桌面计算机和笔记本电脑,它们通常位于住宅、校园和办公室中。

P2P方式的最突出特性之一就是它的可扩展性。因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
P2P方式具有成本上的优势,因为它通常不需要庞大的服务器设施和服务器带宽。为了降低成本,服务提供商对于将P2P方式用于应用的兴趣越来越大。
动态主机配置协议DHCP
互联网广泛使用的动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制。这种机制允许一台计算机加入新的网络和获取 IP 地址,而不用手工配置。
当在网络中配置一台DHCP服务器后,网络中新增一台主机时,该主机就能通过向DHCP服务器发送请求来获取自己的IP地址、子网掩码、默认网关、DNS服务器等。
DHCP 使用客户-服务器方式,采用请求/应答方式工作。
DHCP 基于 UDP 工作(DHCP报文在运输层会被封装成为UDP用户数据报),DHCP 服务器运行在 67 号端口, DHCP客户运行在 68 号端口。
首先,DHCP客户端将广播发送DHCP发现报文(DHCP DISCOVER):
- 报文内部封装有事物ID和DHCP客户端的MAC地址
- 封装该报文的IP数据报的源IP地址为0.0.0.0,这是因为主机目前还未分配到IP地址,因此使用该地址代替
- 目的IP地址为广播地址255.255.255.255,之所以广播发送,是因为主机现在并不知道网络中有哪几个DHCP服务器。
然后,DHCP服务器将广播发送DHCP提供报文(DHCP OFFER):
-
DHCP服务器收到DHCP发现报文后,根据其中封装的DHCP客户端的MAC地址来查找自己的数据库,如果查到匹配信息,则使用这些配置信息来构建并发送DHCP提供报文,如果没有则采用默认配置信息来构建报文并发送
-
报文内部封装有事物ID和配置信息(IP地址:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址(使用ARP来确保所选IP地址未被网络中其他主机占用)
-
事务ID:DHCP客户端会与之前DHCP发现报文的事务ID做对比,来判断该DHCP提供报文是否是自己的
-
源IP地址:发送DHCP提供报文的DHCP服务器的IP
目的地址:因为目的主机还没分配到IP,所以使用广播地址
接着,DHCP客户端将广播发送DHCP请求报文(DHCP REQUEST):
当DHCP客户收到两个或多个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个,一般选择先到的,并向所选择的DHCP服务器发送DHCP请求报文
- 报文中有事务ID、DHCP客户端的MAC地址、接收的租约中的IP地址、提供此租约的DHCP服务器端的IP地址
- 源地址:0.0.0.0,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器。它首先要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址
- 目的地址:广播地址,这样可以一次性向所有DHCP服务器发送DHCP请求报文,来告知它们是否请求它们作为自己的DHCP服务器
最后,被选中的DHCP服务器给DHCP客户端发送DHCP确认报文(DHCP ACK):
-
源地址:DHCP服务器1的IP地址
-
目的地址:广播地址
-
DHCP客户收到该报文后就可以使用租用的IP地址,在使用前还会进行ARP检测
域名系统DNS
DNS就是将域名转换为IP地址的工具。
在因特网中,采用的DNS服务器不止一台。
域名是什么?
- 因特网采用层次树状结构的域名结构
- 域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名
- 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
- 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
- 完整的域名不超过255个字符。
- 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
- 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
域名分类情况:
名称相同的域名其等级未必相同
DNS有什么用?
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为以下四种不同的类型:
-
根域名服务器
根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。
尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。
根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
-
顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
-
权限域名服务器
这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
-
本地域名服务器
本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。
本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。
本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
**域名解析的流程:**有递归查询和迭代查询两种方式
递归查询:
1234代表请求查询的顺序,5678代表返回请求结果的顺序。
迭代查询:
高速缓存功能:
- 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
- 由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
- 不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。
文件传输协议FTP
将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。**文件传送协议FTP(File Transfer Protocol)**是因特网上使用得最广泛的文件传送协议。
- FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCI码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。
- FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件
FTP采用C/S方式(客户/服务器方式)。FTP客户计算机可将各种类型的文件上传到FTP服务器,FTP客户计算机也可以从FTP服务器下载文件。
FTP的常见用途是在计算机之间传输文件,尤其是用于批量传输文件。FTP的另一个常见用途是让网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器。
FTP工作原理:
FTP服务器监听熟知端口(端口号为 21),使客户进程能够连接上。
FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP的相关控制命令(这条连接是FTP客户与服务器之间的命令通道)
当有数据传输时,FTP客户端通过上面的命令通道告知FTP服务器与自己的另一个端口号建立连接。FTP服务器使用自己的熟知端口号20与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送文件。
由于建立数据通路时,FTP服务器主动连接FTP客户,因此是主动模式。
同样还有被动模式:FTP服务器在收到FTP客户通过控制通道发来的命令后才被动打开数据通道。这里服务器端的接口也不再是20端口,而是与FTP客户端约定的端口。

注意两种模式都是:控制连接在整个会话期间保持打开状态,数据连接传输完毕后就关闭
电子邮件
电子邮件(E-mail)是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一。
电子邮件与邮政系统的寄信相似。
- 发件人将邮件发送到自己使用的邮件服务器
- 发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱
- 收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。
电子邮件系统采用客户/服务器方式。
电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。
- 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件。
- 邮件服务器是电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
- 协议包括邮件发送协议(例如SMTP)和邮件读取协议(例如POP3,IMAP)
SMTP协议的工作流程:
电子邮件的信息格式:
多用途因特网邮件扩展MIME(MulipurposelIntemetMail Extensions):
SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。这就意味着SMTP不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。
为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME(MulipurposelIntemetMail Extensions)。
MIME有下列的改变:
- 增加了5个新的邮件首部字段,这些字段提供了有关邮件主体的信息,
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化口
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
实际上,MIME不仅仅用于SMTP,也用于后来的同样面向ASCII字符的HTTP。
常用的邮件读取协议有以下两个:
-
邮局协议POP(Post0fficeProtocol),POP3是其第三个版本,是因特网正式标准。
非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方计算机。不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等)。
-
因特网邮件访问协议IMAP(Interet Message Access Protocol),IMAP4是其第四个版本,目前还只是因特网建议标准。
功能比POP3强大的邮件读取协议。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。
POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3使用熟知端口110,IMAP4使用熟知端口143。
基于万维网的电子邮件:
- 通过浏览器登录(提供用户名和口令)邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。这种工作模式与IMAP很类似,不同的是用户计算机无需安装专门的用户代理程序,只需要使用通用的万维网浏览器。
- 邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
万维网WWW
万维网WWW(World Wide Web)并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所是运行在因特网上的一个分布式应用。万维网利用网页之间的超链接将不同网站的网页链接成一张逻辑上的信息网。
浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。
万维网的工作方式:
- 万维网以客户 - 服务器方式工作。
- 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
- 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
统一资源定位符URL:
万维网的文档:
超文本传输协议HTTP(Hyper Transfer Protocol):
- 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。
- HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
- 每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,以便发现是否有浏览器向它发出连接建立请求。
- 一旦监听到连接建立请求并建立了 TCP 连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。
HTTP/1.0与HTTP/1.1的区别:
HTTP请求报文和响应报文的格式:
请求报文:
响应报文:
使用Cookie在服务器上记录用户信息
万维网缓存与代理服务器
- 在万维网中还可以使用缓存机制以提高万维网的效率。
- 万维网缓存又称为Web缓存(WebCache),可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为代理服务器(ProxyServer)。
- Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。
当主机要向原始服务器请求数据时,会先向代理服务器发送请求。
如果该请求在代理服务器中有缓存:
若没有缓存:
若缓存的命中率比较高,则会大大减小了该链路上的通信量,因而减少了访问因特网的时延。
此外,假设原始服务器的文档被更改,这样代理服务器的文档就不是最新的。所以原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段
若文件尚未过期:
若过期并且代理服务器的文档和原始服务器的文档一致,原始服务器则给代理服务器发送不包含实体主体的响应:
若过期并且代理服务器的文档和原始服务器的文档不一致,原始服务器则给代理服务器发送封装有该文档的响应报文:
远程终端协议TELNET
TODO
简单网络管理协议SNMP
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能,服务质量等。网络管理常简称为网管
应用进程跨越网络的通信
TODO