写在前面
本文是我自己根据教材:《计算机网络》谢希仁编著(第八版)以及学校老师提供的ppt整理的前五章(概述、物理层、数据链路层、网络层、运输层)的复习笔记,涉及到名词解释、重要缩写翻译、以及重要协议以及计算题和一些协议的具体例题,都是以重要的记忆点为主。
封面图源自网络。本文中图片源自老师的课件以及教材书本。
目录
ISP:互联网服务提供者 Internet Service Provider
IXP:互联网交换点 Internet eXchange Point
FDM:频分复用 Frequency Division Multiplexing
FDMA:频分多址(接入)Frequency Division Multiple Access
TDM:时分复用 Time Division Multiplexing
TDMA:时分多址(接入)Time Division Multiple Access
WDM:波分复用 Wavelength Division Multiplexing
CDM:码分复用 Code Division Multiplexing
CDMA:码分多址(接入)Code Division Multiple Access
MTU:最大传送单元 Maximun Transfer Unit
FEC:前向纠错 Forward Error Correct
ARQ:自动重发请求 Automatic Repeat reQuest
CRC:循环冗余码检测 Cyclic Redundancy Check
FCS:帧检验序列 Frame Check Sequence
PPP:点对点协议 Point-to-Point Protocol
LCP:链路控制协议 Link Control Protocol
NCP:网络控制协议 Network Control Protocol
CSMA/CD:载波监听 多点接入/碰撞检测 Carrier Sense Multiple Access with Collision Detection
MAC:媒体(媒介)接入控制 Medium Access Control
构造超网CIDR:Classless Inter-Domain Routing 无分类域间路由选择
ARP:地址解析协议 Address Resolution Protocol
ICMP:Internet Control Message Protocol 网际控制报文协议
PING:Packet InterNet Groper 分组网间探测
IGMP:Internet Group Management Protocol网际组管理协议
CIDR:Classless Inter-Domain Routing 无分类域间路由选择
IGP:Interior Gateway Protocol 内部网关协议(域内)
EGP:External Gateway Protocol 外部网关协议(域间)
RIP:Routing Information Protocol 路由信息协议
OSPF:Open Shortest Path First 开放最短路径优先
BGP:Border Gateway Protocol 边界网关协议
UDP:User Datagram Protocol 用户数据报协议
TCP:Transmission Control Protocol 传输控制协议
MSS:Maximum Segment Size 最大报文段长度
连续ARQ协议(Automatic Repeat reQuest)
TCP可靠传输的具体实现:滑动窗口协议--停止等待和连续ARQ的折中
MSL:Maximum Segment Lifetime 最长报文段寿命
超时重传时间RTO:Retransmission Time-Out
概述
实体
任何可以发送或接受信息的硬件或软件进程。
协议
控制对等实体之间通信的规则的集合,“规程”就是协议。
服务
由下层向上层通过层间接口提供的。
网络协议的三要素
语法【数据与控制信息的结构】;
语义【需要发出何种控制信息完成何种动作以及做出何种响应】;
同步【时间实现顺序的详细说明】。
时延
传播时延的计算【链路长度bit/传播速度bit/s】
发送时延的计算【数据长度bit/发送速度bit/s】
注意两者发生的位置不同,两者哪一种占主导取决于具体情况。
处理时延、排队时延
时延与网络利用率的关系
电路交换、报文交换、分组交换
电路交换
【整个报文的比特流连续的从源点直达终点】
若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。
报文交换
【整个报文传送到相邻节点,存储下来后查找转发表转发到下一个节点】
报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。
分组交换
【单个分组传送到相邻节点,存储下来后查找转发表转发到下一个节点】
由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。
体系结构
OSI参考模型7层、TCP/IP协议4层、本教材讲述原理5层
ISP:互联网服务提供者 Internet Service Provider
IXP:互联网交换点 Internet eXchange Point
WWW:万维网 World Wide Web
WAN:广域网Wide Area Network
LAN:局域网 Local Area Network
是计算机网络的一种。局域网是在一个较小的范围(一个办公室、一幢楼、一家工厂等),利用通信线路将众多计算机(一般为微机)及外围设备连接起来,达到数据通信和资源共享的目的。以太网技术(10Mbit/s+集线器hub)
特点
- 网络为一个单位所拥有;地理范围和站点数目均有限。
- 具有较高的数据率、较低的时延和较小的误码率。
优点
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和生存性。
C/S:客户-服务器方式 Client/Server
P2P:对等连接方式 peer to peer
RTT:往返时间 Round-trip Time
PDU:协议数据单元 Protocol Data Unit
SDU:服务数据单元 Service Data Unit
物理层
物理层任务
尽可能屏蔽掉传输媒体和手段的差异,考虑如何传输数据比特流.
媒体接口的特性
- 机械特性【接线器的形状、尺寸等】
- 电气特性【各条线的电压范围】
- 功能特性【某条线出现某一电平的电压的意义】
- 过程特性【各种可能事件的出现顺序】
传输方式
- 串行传输:逐个比特按时间顺序传输
- 并行传输:指的是数据以成组的方式,在多条并行信道上同时进行传输,是在传输中有多个数据位同时在设备之间进行的传输
数据与信号
- 数据:传送消息的实体。
- 信号:数据的电气或电磁表现。
- 模拟数据:指在某个区间产生的连续值,例如声音、图像、温度和压力等。
- 模拟信号:也称连续信号——代表消息的参数的取值是连续的。
- 数字数据:在数据通信中也称为数字量,指的是取值范围是离散的变量或者数值。
- 数字信号:也称离散信号——代表消息的参数的取值是离散的。
- 基带信号:来自信源的信号称为基带信号(基本频带信号)。
- 带通信号:经过载波调制后的信号称为带通信号(即仅在一段频率范围内能够通过信道)。
码元
在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形就称为码元
调制
基带调制
【仅对基带信号的波形进行变换,变换后的信号仍是基带信号】,又称编码。
常用的编码方式:不归零制、归零制、不归零反转、曼彻斯特编码、差分曼彻斯特
带通调制
【使用载波carrier把基带信号的频率搬移到较高的频段】
常用的调制技术:调幅AM、调频FM、绝对调相、相对PM
通信方式
- 单工通信:又称为单向通信,即只能有一个方向的通信而没有反方向的交互
- 半双工通信:又称为双向交替通信,可以双方互相发送和接收信息,但是双方不能同时发送和接收
- 全双工通信:又称为双向同时通信,即通信双方可以同时发送和接收信息
奈氏准则
- 理想低通信道:码元传输速率max=2*带宽
- 理想带通信道:码元传输速率max=带宽(码元/秒)
比特率=波特率*log2(码元能表示的状态数)
香农公式
信噪比(dB)=
信道极限传输速率
W:带宽 S/N:功率比
信道复用技术
- 频分【各路信号在同样的时间占用不同的带宽资源-波分(光的频分)】
- 时分【所有的用户在不同的时间占用相同的带宽资源-TDM帧-统计时分(不固定分配时隙,而是按需动态分配)】
- 码分【各用户使用经过特殊挑选的不同码型-CDMA的计算-发送1即发送自己,正交为1;发送0即发送反码,正交为-1】
FDM:频分复用 Frequency Division Multiplexing
FDMA:频分多址(接入)Frequency Division Multiple Access
TDM:时分复用 Time Division Multiplexing
TDMA:时分多址(接入)Time Division Multiple Access
STDM:统计时分复用 Statistic TDM
WDM:波分复用 Wavelength Division Multiplexing
DWDM:密集波分复用 Dense WDM
CDM:码分复用 Code Division Multiplexing
CDMA:码分多址(接入)Code Division Multiple Access
规格化内积
两个不同站的码片序列必须不同且正交,即内积=0。
自己和自己的内积为1,自己与自己的反码的内积为-1。
PCM
- 脉码调制—采样(采样频率需大于模拟信号最大f的两倍)
- 量化
- 编码
数据链路层
数据链路层三个基本问题
封装成帧
在一段数据前后分别添加首部和尾部。接收端以便从收到的比特流中识别帧的开始与结束。帧界定是分组交换的必然要求。
透明传输
避免消息符号与帧界定符号相混淆
差错控制
数据块中插入冗余信息的过程,使得数据块中的各个比特建立某种形式的关联,接收端通过验证这种关联关系来判断是否有传输错误。防止差错的无效数据帧在网络上传输,浪费网络资源,分纠错(海明)码、检错(奇偶、CRC)码。
验错码
奇偶校验
奇校验:使码字中“1”的总个数为奇数。偶校验:使码字中“1”的总个数为偶数。
CRC
- 生成多项式P(X):除数-最高位和最低位都必须是1: n项 n-1次
- 信息位多项式M(X):原始待传送的数据—被除数:M后加n-1个0
- 传输帧多项式T(X):信息位多项式+冗余多项式 or M后加冗余项(FCS)
- 冗余位多项式R(X)
无差错接受
- 比特差错:传输过程中0和1错误的对换了
- 传输差错:帧丢失、帧重复、帧失序
- 无差错接受:凡是接受的帧(即不包括丢弃的帧,有差错就丢弃),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错(CRC 差错检测技术只能做到无比特差错接受) 这(CRC)不是可靠传输(TCP实现,帧编号、确认、重传机制)
纠错码-海明码



接收方验证:
链路概念
- 链路(物理链路):所谓链路就是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点,链路只是一条路径的组成部分
- 数据链路(逻辑链路):数据链路就是物理链路加上实现必要的通信协议的软件和硬件
帧
数据链路层的协议数据单元(广播信道:MAC帧)。
吞吐量
单位时间内系统能够成功发送的新的数据帧的平均数量。
共享信道
- 1. 静态划分信道(频分、时分、波分、码分);
- 2. 动态媒体接入控制(随机接入-争用协议(ALOHA、CSMA/CD)、受控接入)
以太网
广播信道的数据链路层,一种基带局域网规范。使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。集线器很像一个多接口的转发器,工作在物理层,本身不进行碰撞检测。
以太网发送数据采用较为灵活的无连接的工作方式、可以位同步的曼彻斯特编码的信号。
- 曼彻斯特编码的码元速率(波特率baud rate)是数据比特率的两倍。
- 不归零制、归零制每个比特直接表示为高电平或低电平,没有额外的电平跳变,码元速率等于数据比特率。
网络接口板
又称为适配器 (adapter) 或网络接口卡 NIC (Network Interface Card),或“网卡”,重要功能:
- 进行串行/并行转换
- 对数据进行缓存(因计算机和网络的数据率不同)
- 在计算机的操作系统安装适配器的设备驱动程序
- 实现以太网协议
还有过滤功能,能至少识别单播和广播MAC帧,有些可识别多播MAC帧。
MAC地址
- 唯一的;
- 6字节48位 高位(组织唯一标识符3字节-生产厂家扩展唯一标识符3字节)低位
MAC帧
数据链路层传输的就是MAC帧
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
高速以太网的MAC帧格式和以太网完全相同,且保留了以太网的最大和最小帧长。
- 目的地址、源地址:MAC地址
- 类型:上一层是什么协议
- 数据字段:min46字节【64(CSMA/CD协议规定的最短帧长)-6-6-2-4】 max1500字节:MTU=1500字节,MTU仅考虑数据部分(即ip数据报首部+数据)。当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段。
广播风暴(broadcast storm)
简单的讲是指当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪
局域网互联设备(也被称为中继系统)
用来扩展以太网的地理覆盖范围
在物理层上扩展
- 转发器
- 集线器
- 不进行碰撞检测;
- 共享式以太网,总容量=10Mbitpers/用户数
在数据链路层上扩展
1. 网桥
- 网桥在转发帧之前必须执行 CSMA/CD 算法;
- 根据 MAC 帧的目的地址对收到的帧进行转发和过滤;
- 查找“转发表”
- 同一个网段内的帧,不会被网桥转发,不会增加网络负担;
2. 交换机
- 以太网交换机实质上就是一个多接口的网桥;用硬件转发,速率快;
- 不使用共享总线,没有碰撞问题因此不使用 CSMA/CD 协议;
- 每个接口一般都工作在全双工方式;仍然采用以太网的帧结构;
- 具有并行性;
- 相互通信的主机都是独占传输媒体,无碰撞地传输数据;
- 每个端口还有存储器,能在输出端口繁忙时把到来的帧缓存;
- 交换式以太网,与集线器相比,用户独享带宽,增加了总容量(总容量=用户数*10Mbit/s)
- 是一种即插即用的设备,通过自学习算法建立内部的帧交换表(又称为地址表);
- 一开始是空的
- 收到一帧后,将(新的)源地址和接口写入地址表
- 若目的地址无,则广播,目的地址不对的接口丢弃,该过程也称过滤;
- 若有,则直接通过接口转发
- 过期的项目就自动被删除;为了增加网络的可靠性,会增加冗余链路,就可能会出现无限制地循环,因为会向所有端口转发未知目的端口的数据帧,所以网桥/交换网络会产生广播风暴。为此制定了一个生成树协议 STP (Spanning Tree Protocol):不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
网络层中继系统
路由器 (router):一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
- 路由表【目的网络地址、距离、下一跳地址】是根据路由选择算法【RIP、OSPF、BGP】得出的,而转发表【前缀匹配、下跳】是从路由表得出的。v.s. 交换表【mac地址、端口】是工作在数据链路层的以太网交换机里的。
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
- 交换结构:1.通过存储器,路由器的交换速率一定小于存储器带宽/2;2.通过总线;3.通过纵横交错结构,它有2N条总线,可使N个输入端口和N个输出端口相连接。
- 路由表没有给分组指明到某个网络的完整路径
- 特定主机路由:为特定的目的主机的IP地址指明一个路由。
- 默认路由:不管最终的目的网络在哪里,都使用指定的路由器R来处理,以减少路由表所占用的空间和搜索路由表所用的时间。
MTU:最大传送单元 Maximun Transfer Unit
以太网为1500字节,数据链路层的帧数据部分可负载的最大长度,不是总长度
BER:误码率 Bit Error Rate
FEC:前向纠错 Forward Error Correct
ARQ:自动重发请求 Automatic Repeat reQuest
CRC:循环冗余码检测 Cyclic Redundancy Check
FCS:帧检验序列 Frame Check Sequence
使用CRC后的余数
PPP:点对点协议 Point-to-Point Protocol
用于点对点信道-用户计算机和ISP通信时:
面向字节、长度是字节即8bit整数倍,标志字段7E十六进制、01111110二进制,
透明传输:异步传输字符填充7E=7D 5E;7D=7D 5D、同步传输比特填充 发送端数据部分只要连续5个1,不管第六位是什么,都填入一个0。
LCP:链路控制协议 Link Control Protocol
NCP:网络控制协议 Network Control Protocol
ALOHA系统
CSMA/CD:载波监听 多点接入/碰撞检测 Carrier Sense Multiple Access with Collision Detection
使用的是半双工信道
- “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
- “多点接入”指总线型网络,表示许多计算机以多点接入的方式连接在一根总线上。
- “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。由于电磁波在总线上的传播速率是有限的(电磁波在1km电缆的传播时延约为5微秒-信号在以太网上传输)。碰撞的结果是两个帧都变得无用,所以需要在发送期间进行碰撞检测,以检测冲突免得继续浪费网络资源。
- 争用期:51.2微秒,最短有效帧长:64字节 512比特,帧间最小间隔:9.6微秒(若检测到信道空闲,并在 96 比特时间内信道保持空闲,就发送这个帧。为了使刚刚的接受缓存来得及清理)。成功发送一个帧占用信道时间:发送时间+一个端到端的传播时间。
- 强化碰撞:立即停止+发送32or48bit人为干扰信号,碰撞所浪费时间:检测到碰撞的时间+发送干扰信号的持续时间+干扰信号的端到端的传播时间。
二进制指数类型退避算法
退避完后不是立即就可以发送数据,而是需要继续检测信道。
10BASE-T:10Mbit/s 基带-双绞线
最大长度为100m;一种星型以太网标准
MAC:媒体(媒介)接入控制 Medium Access Control
VLAN:虚拟局域网 Virtual LAN
- 只是局域网给用户提供的一种服务,而并不是一种新型局域网;
- 是由一些局域网网段构成的与物理位置无关的逻辑组;将物理网络按逻辑分段;
- 限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即广播风暴)而引起性能恶化。
- 每一个 VLAN 的帧都有一个明确的4字节标识符用来指明发送该帧的计算机属于哪一个虚拟局域网;
网络层
网络层向上只提供简单灵活的、无连接的、尽最大努力交付(不可靠)的数据报服务,对源主机没有任何承诺。
服务的可靠性与链接
- 服务可靠性:指数据没有丢失、损坏或重复(见上:传输差错),采用应答来实现。
- 服务的链接:本质是保证数据的顺序传送,建立连接、传送数据和拆除连接三个阶段。
服务的可靠性和是否链接之间没有关系。
虚拟互连网络(是逻辑互连网络)
利用 IP 协议使这些性能各异的网络(物理网络的异构性)在网络层上看起来好像是一个统一的网络。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet,i大写)。
直接交付
数据报不通过路由器(or最后一跳)
间接交付
路由器按照转发表指出的路由将数据报转发给下一个路由器。
IP地址
4字节32位;唯一的;所有数转为10进制后都小于等于255。
两级的 IP 地址:{ <网络号>, <主机号> }
- IP地址使用软件实现的,是一种逻辑地址,网络层和以上各层使用,v.s数据链路层和物理层使用硬件地址。在 IP 层抽象的互联网上只能看到 IP 数据报。在具体的物理网络的链路层只能看见 MAC 帧而看不见 IP 数据报。
- 两个路由器的 IP 地址并不出现在 IP 数据报的首部中。路由器只根据目的站的 IP 地址的网络号进行路由选择。即在存储转发期间,ip数据报首部中的地址始终是源主机和目的主机的ip地址,而MAC帧首部的地址是根据路由选择不断变化的。
Ip数据报首部
固定部分长度为20字节,默认也就是20字节(160bit)
- 首部长度:4位二进制数先转为十进制,再*4,就得到首部长度占的字节(0101-1111即20-60,一个单位为4字节,如0101-5(个单位)-首部20字节长)。
- 总长度:指首部和数据之和的长度,总和不超过MTU(以太网1500字节),一个单位为一字节,所以max=2的16次方-1=65535字节。分片后总长度是每一个片段首部与数据部分的长度总和。IP数据报越长,传输效率越高(首部长度占数据报总长度小);IP数据报越短,路由器转发速度越快。
- 标识:原始数据报与分段后的每一段标识都相同。“标识”不是序号。
- 标志:只有前两位有意义:MF【1 表示后面“还有分片”】、DF【只有当 DF = 0 时才允许分片】
- 片偏移:较长的分组在分片后某片在原分组中的相对位置。一个单位为8个字节。如第1400字节,片偏移字段为1400/8=175。
- 生存时间:记为TTL,指数据报在网络中可通过的路由器数的最大值。(通过一个1s)。max=2的8次方-1=255。
- 首部检验和:只检验数据报的首部,不检验数据部分。16位二进制反码求和算法
先将IP数据报首部划分为许多16位字序列,并把检验和字段置0,做有进位的加法,若在第17位有进位,则把这个1加到最右边位上。然后和取反码(该反码即为检验和)。收到数据报后,再把首部所有的16位字如此操作一次,若首部未变化,结果必为0。
IP地址的编址方式
分类的IP地址(是两级的ip地址)
IP地址的全“0”表示“这个(This)”。0.0.0.0
- 多播地址不会分给单一主机。
- 主机号全0表示该IP地址是“本主机”所连接的单个网络地址(不能分给单个主机)
- 主机号全1表示该网络上的所有主机(可作为广播的目的地址)
- ABC类网络号全0,是保留地址,表示“本网络”
- A类网络号全1为本地软件的环回测试(loopback test),本主机使用。 0111 1111
多归属主机:由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号。同一个局域网上的主机或路由器的网络号必须是一样的。
划分子网(三级ip地址)
从两级ip地址到三级ip地址,从主机号借用若干个位作为子网号。
仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后就将 IP 数据报直接交付目的主机。减少了 IP 地址的浪费。
子网整体对外仍是一个网络。
子网掩码长度 = 32 位,某位1对应这位是网络号or子网号
(IP 地址) 逐位AND (子网掩码) =子网的网络地址 是相与,而不是加
是转发表中收到的分组的首部的目的ip地址与路由表中各行子网掩码相与,拿相与的结果与路由表中各行目的网络地址or本网络(子网)网络地址相匹配。
默认子网掩码
A类前8位、B类前16位、C类前24位全“1”,路由器在交换信息时必须把子网掩码告诉相邻路由器。
子网数和主机数都是2的n次方-2 (不能是全0和全1,引申出注意当前类别-ABC-下子网号的位数-如B类子网号位数没有 0, 1, 15 和 16 这四种情况)(V.S二级地址网络号可全“1”)
在划分子网的情况下,从 IP 地址和数据报的首部并没有提供子网划分的信息。故路由表必须包含以下三项内容:目的网络地址、子网掩码、下一跳地址
构造超网CIDR:Classless Inter-Domain Routing 无分类域间路由选择
消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号。{<网络前缀>,<主机号>},使用斜线记法。所有可分配地址的前缀都是一样的。
一个地址块可以标识很多个地址,这叫路由聚合--有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。路由聚合也叫构造超网。在表示方法上,在星号 * 之前是网络前缀,而星号 * (后)表示 IP 地址中的主机号,可以是任意值。
全 0 和全 1 的主机号地址一般不使用。
CIDR 地址块中的地址数一定是 2 的整数次幂。
这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。
路由表中的每个项目由“网络前缀”和“下一跳地址”组成。应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配又称为最长匹配或最佳匹配;网络前缀越长,其地址块就越小,因而路由就越具体。即:目标ip地址与路由表各行掩码相与,拿相与的结果与路由表中的该行的项目网络地址相匹配。若有多个匹配,则选择掩码最长的那一项。
二叉搜索树:构造唯一前缀。
IP多播
多播地址只能用于目的地址,不能用于源地址。
多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。
对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。
多播可大大节约网络资源。每一个 D 类地址标志一个多播组。并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP。IP 多播分为两种:
只在本局域网上进行硬件多播
D类IP地址与以太网多播地址的映射关系
在互联网的范围内进行多播,要靠路由器实现。
IP:Internet Protocol 网际协议
ARP:地址解析协议 Address Resolution Protocol
作用:从网络层使用的IP地址解析出在数据链路层使用的MAC地址
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表,动态更新(新增或超时删除)。< IP address;MAC address;TTL >。异构网络之间的硬件地址非常复杂,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。
ICMP:Internet Control Message Protocol 网际控制报文协议
差错报文
允许主机或路由器报告差错情况和提供有关异常情况的报告,但不是高层协议,是IP层协议。
类型域用来指明消息的类型,有些消息还用代码域进一步定义说明。例如:类型为3的消息表示“目的不可达”的错误报告,每个消息的代码域进一步说明是“网络不可达”、“主机不可达”还是其他。
不发送ICMP差错报文的几种情况:
两种询问报文
PING:Packet InterNet Groper 分组网间探测
主机一连发出4个ICMP回送请求。
Traceroute
UNIX系统中的命令,在 Windows 操作系统中这个命令是 tracert。
- 每行有三个时间出现:对于每一个TTL值,源主机都要发送三次相同的IP数据报。
- 因为互联网拥塞程度随时都在变化,有可能经过更多的路由器花费更短时间。
IGMP:Internet Group Management Protocol网际组管理协议
以太网多播范围映射关系,IGMP 使多播路由器知道多播组成员信息。
TTL:Time To Live地址映射有效时间
CIDR:Classless Inter-Domain Routing 无分类域间路由选择
具体内容见上:IP编址方式:构造超网
AS:Autonomous System 自治系统
在单一的技术管理下的一组路由器(一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略)。
IGP:Interior Gateway Protocol 内部网关协议(域内)
路由器就是网关的同义词
- 在一个自治系统内部使用的路由选择协议。
- 目前这类路由选择协议使用得最多,如 RIP 和OSPF 协议。
EGP:External Gateway Protocol 外部网关协议(域间)
将路由选择信息传递到另一个自治系统中,如 BGP 协议。
路由选择协议
应是正确、完整、简单、自适应、稳定、公平、最佳的。
不存在一种绝对的最佳路由算法,只能是相对于某一种特定要求下得出的较为合理的选择而已。
互联网采用分层次的路由选择协议,自适应的(即动态的)、分布式的。
以下是几种单播路由选择协议:
RIP:Routing Information Protocol 路由信息协议
RIP使用的路由表更新算法称为距离向量算法。距离向量算法的基础就是 Bellman-Ford 算法。路由表的更新原则是找出到每个目的网络的最短距离。路由表主要信息:“最短距离”、“应经过的下一跳地址”。
一开始,各路由器只有到直接连接的网络信息,距离为1。
经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。RIP 协议的收敛 (convergence) 过程较快。
距离向量算法
RIP协议报文用UDP用户数据报传送
最大RIP报文长度为:4+20*25=504字节(最多包含25条路由)。如超过,必须再用一个 RIP 报文来传送。(了解)
OSPF:Open Shortest Path First 开放最短路径优先
- “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法(找到通向已知点集合的最短的点及路径)。路由最短可以指物理距离最近、分组传输时延最小、通信费用最低。
最主要的特征:采用分布式的链路状态协议 (link state protocol),而不是RIP那样的距离向量协议。
OSPF构成的数据报很短,好处:1. 减少路由信息的通信量;2. 不必分片,减少因错误传输而重传整个数据报的概率。
为了使 OSPF 能用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。(将洪泛的范围缩小,减少网络通信量)
边界路由器: R3.4.7;主干路由器: R3.4.5.6.7;自治系统边界路由器: R6(BGP发言人)
OSPF不用UDP而是直接用IP数据报传送。OSPF分组使用24字节固定长度首部(了解)。
OSPF五种分组类型&基本操作:
只要一个路由器的链路状态发生改变,该路由器就要使用链路状态更新分组,可靠的洪泛法:向相邻路由器更新分组;再向相邻(除上游)转发;收到更新分组后发送确认。
OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,与整个互联网的规模并无直接关系。当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
RIP与OSPF对比
BGP:Border Gateway Protocol 边界网关协议
WHY不能使用内部网关协议?
- 互联网的规模太大,使得自治系统之间路由选择非常困难。寻找出最佳路由不现实。
- 自治系统之间的路由选择必须考虑有关策略(包括政治、经济或安全等方面)。
边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子)(即树形),而并非要寻找一条最佳路由。BGP 采用了路径向量路由选择协议。
BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。BGP 发言人除了运行BGP协议外,还必须运行该自治系统所使用的内部网关协议。
BGP 发言人交换路径向量:地区ISP的BGP发言人与主干网的BGP发言人之间。
每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。不会过分复杂。
BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
在 BGP 刚运行时,BGP 的邻站是交换整个 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4 共使用四种报文,通用首部19字节,使用TCP报文。(了解)
运输层
网络层v.s.运输层
通信
端口
复用和分用
常用的熟知端口(全球通用端口号)

UDP:User Datagram Protocol 用户数据报协议

UDP的主要特点

UDP首部格式
首部字段4个字段组成,每个字段都是 2 个字节。
在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
UDP检验和的计算
检验和在计算过程中未知时全填0。
v.s.IP校验和
虽然在 UDP 之间的通信要用到其端口号,但由于 UDP 的通信是无连接的,因此不需要使用套接字来建立连接。 端口是报文队列来实现的。
TCP:Transmission Control Protocol 传输控制协议

TCP的主要特点
- TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
- TCP 可把太长的数据块划分短一些再传送。
- TCP 也可等待积累有足够多的字节后再构成报文段发送出去。
TCP首部格式
TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)。
因此 TCP 首部的最小长度是 20 字节。
- 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
- 序号字段(seq)——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。整个数据的起始序号在连接的建立时设置。
- 确认号字段(ack)——占 4 字节,是期望收到对方下一个报文段的数据的第一个字节的序号。若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
- 数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是32 位字(以 4 字节为计算单位)。TCP首部的最大长度是60字节。
- 紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。
- 确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。当ACK = 0 时,确认号无效。ACK报文段可以携带数据。但如果不携带数据则不消耗序号。
- 推送 PSH (PuSH) —— 接收方 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
- 复位 RST (ReSeT) —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
- 同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。 在连接建立时用来同步序号。SYN报文段不能携带数据,但要消耗掉一个序号。
- 终止 FIN (FINish) —— 用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
- 窗口字段 —— 占 2 字节,用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化着。
- 检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。伪首部格式与UDP的一样,但应把第4个字段的17改为6。
- 紧急指针字段 —— 占 16 位,UGR=1时才有意义。指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
- 选项字段 —— 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
- 填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。
MSS:Maximum Segment Size 最大报文段长度
数据字段加上 TCP 首部才等于整个的 TCP 报文段。所以,MSS是“TCP 报文段长度减去 TCP 首部长度”。
其他选项
套接字Socket
TCP 连接的端点叫做套接字 (socket) 或插口。
- 同一个 IP 地址可以有多个不同的 TCP 连接。
- 同一个端口号也可以出现在多个不同的 TCP 连接中。
TCP运输连接三个阶段
连接建立
采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client),被动等待连接建立的应用进程叫做服务器(server)。
采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。
数据传送
可靠传输
理想的传输条件特点
停止等待协议
“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
出现差错时,超时重传:
A 为每一个已发送的分组都设置了一个超时计时器。
- A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2。
- 在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。
确认丢失和确认迟到
确认丢失:A并无法知道:是自己发送的分组出错、丢失了 或者 B发送的确认丢失了
确认迟到:
- 分组和确认分组都必须进行编号。
- 超时计时器的重传时间应当比分组传输的平均往返时间更长一些。
这种可靠传输协议常称为自动重传请求 ARQ (Automatic Repeat reQuest)。
停止等待协议信道利用率
流水线传输:
连续ARQ协议(Automatic Repeat reQuest)
采用GO-BACK-TO-N ARQ
发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
累积确认
发送窗口最大值:
选择重传ARQ协议
TCP可靠传输的具体实现:滑动窗口协议--停止等待和连续ARQ的折中
窗口机制:
滑动窗口是以字节为单位的,TCP的确认是基于序号的。
发送窗口的大小表示:在还没有收到接收端确认信息的情况下,发送端最多可以发送多少个分组。
- 只有落在发送窗口的分组才是可以发送的。
- 每收到对一个分组的确认,窗口就向前滑动。
接收窗口是接收端允许接收的分组的序号表。
- 只有落到接收窗口的分组才是可以接收的;
- 若接收到的分组落在接收窗口之外,一律将其丢弃。
- 只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。
- 收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。
- 当发送窗口和接收窗口的大小都等于1时,就是停止等待协议。
超时重传时间的选择
加权平均往返时间:
超时重传时间RTO:Retransmission Time-Out
Karn算法:计算平均往返时间 RTT
修正的Karn算法:
选择确认SACK
4个字节块,8个边界--32个字节;1个字节指明SACK选项;1个字节指明这个选项占用多少字节。
流量控制
流量控制 (flow control) 就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
利用可变窗口进行流量控制:
可能发生死锁
B 向 A 发送了零窗口的报文段后不久,B 的接收缓存又有了一些存储空间。
于是 B 向 A 发送了 rwnd = 400 的报文段。
但这个报文段在传送过程中丢失了。A 一直等待收到 B 发送的非零窗口的通知,而 B 也一直等待 A 发送的数据。
如果没有其他措施,这种互相等待的死锁局面将一直延续下去。
为了解决这个问题,TCP 为每一个连接设有一个持续计时器 (persistence timer)。
考虑传输效率
nagle算法:为避免一个字节一个字节地发送TCP报文段
拥塞控制
原因:∑对资源需求 > 可用资源
增加资源不能解决拥塞。
拥塞引起的重传并不会缓解网络的拥塞,反而会加剧网络的拥塞。
- 拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
- 流量控制往往指点对点通信量的控制,是个端到端的问题(接收端控制发送端)。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
这是一个动态的问题,分组丢失是其征兆而不是原因。
拥塞的判断
若超时:
若3-ACK:
四种拥塞控制算法
- 慢开始:窗口大小按指数增加,不慢!
- 拥塞避免:拥塞窗口 cwnd 按线性规律缓慢增长。“加法增大”AI (Additive Increase)
- 快重传:首先要求接收方每收到一个失序的报文段就立即发送确认。发送方只要一连收到三个重复确认,就应当立即进行重传(即“快重传”FR (Fast Retransmission)),这样就不会出现超时,发送方也不就会误认为出现了网络拥塞。并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。
- 快恢复:当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行快恢复算法FR (Fast Recovery) 算法。
- 当出现超时或3个重复的确认时,就要把门限值设置为当前拥塞窗口值的一半,并大大减小拥塞窗口的数值。“乘法减小”MD(Multiplicative Decrease)
- 加法增大和乘法减小的是cwnd拥塞窗口的大小值。
“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。只是使网络比较不容易出现拥塞。
连接释放
A必须等待2MSL的时间。
MSL:Maximum Segment Lifetime 最长报文段寿命
超时重传时间RTO:Retransmission Time-Out
具体见TCP运输链接-数据传送-可靠运输-超时重传时间的选择。