计算机网络随笔

计算机网络随笔

第一章 概述

1 计算机网络七层、五层和TCP/IP体系结构对应

七层体系五层体系TCP/IP四层体系
应用层应用层应用层(如ssh协议、tftp协议、smtp协议等)
表示层
会话层
运输层运输层运输层(TCP、UDP)
网络层网络层网络层(IP)
数据链路层数据链路层网络接口层
物理层物理层
目前基本都是采用TCP/IP体系结构以便于简化网络流程。

以ssh协议应用为例分析:
1 主机A应用层启动ssh-client,主机B应用层启动ssh-server;
2 主机A运输层创建tcp/udp套接字(客户端),主机B运输层创建tcp/udp套接字(服务端);
3 主机A发送数据,逐次加上各层头部信息,经由主机A网络层和网络接口层实现路由转发到主机B(因此路由器实际上只需要网络层和网络接口层,为了方便,现在主机也具有路由器功能);
4 主机B网络接口层收到数据,逐次解开头部信息,通过主机B运输层的tcp/udp套接字监听数据,然后交由应用层。

第二章 物理层

2.1 传输媒体

  计算机网络每一层都有它自己的协议或者说约定。物理层的协议有关于机械结构、电气等,比如网口用5线还是6线或者说用光纤属于机械机构的协议;而电压多少V代表高电平,多少V代表低电平,比如一般的计算机+12V代表高电平,-12V代表低电平,又比如单片机有0(0~0.6V)V代表低电平,5V(4.3~5V)代表高电平,所有高低电平的表述都是一种范围,这些属于电气协议。
  为了提高数据传输量,伟大的先知们提出各种编码方式,有曼彻斯特编码,差分曼彻斯特编码等,实际应用有编码解码器。为了提高数据传输稳定性,提出了调幅、调频、调相,甚至调幅和调相混合调制如正交振幅调制法。实际应用有调制解调器。
在这里插入图片描述
曼彻斯特和查分曼彻斯特一个重要特点是自带时钟,但增加了数据率。不归零制和曼彻斯特编码比较好理解。差分曼彻斯特多看10s也能理解(妈的,不知道怎么在markdown画波形图!)。

  物理层传输媒介并不单一,有基于铜的双绞线通信,原理是电磁干扰抵消;有基于石英玻璃的光纤通信,原理是光的入射角足够大时,光可在光纤中全反射,一直传输。

2.2 信道复用

2.2.1 频分复用、时分复用和统计时分复用

  复用本质是时间和空间问题。频分复用原理是将物理介质中可通过的一段频率带细分为多段频率,多个要传输的数据一一对应多段细分的频率,如下图a,相当于增加了空间的利用率,缺点是频率范围资源不足。就像一个空盒子占了1立方米,但实际上还能将很多东西放在空盒子里以充分利用空间;时分复用则是将数据发送时间定义成周期,多个要传输的数据一一对应单个周期内的细分的时间段,如下图b,相当于增加了时间的利用率,就像CPU执行进程时的时间片原理,缺点是即使下图中的A在第二个TDM帧没有数据,也会占据时间周期造成浪费,俗称占着茅坑不拉屎。
在这里插入图片描述
统计时分复用(如下图2-16)的原理是以高维度来接收低维度信息,通过高分辨率时序的集中器来扫描多个线路的输入数据,并接受进集中器中的缓存(有数据的线路就缓存,无数据的线路跳过),然后输出到高速线路传输。Ddos攻击在物理层上可不可以解释为同一时间段数据量过大,导致集中器缓存溢出,从而网络瘫痪?许多集中器还有路由选择、数据压缩等功能。
在这里插入图片描述
波分复用(如下图2-17)就是光的频分复用。频分复用、时分复用和统计时分复用都是基于电信号;而波分复用是基于高频率的光载波信号:8路1310nm的光载波信号经过光调制器(类似电信号的调制解调器)调制变换为8路不同波长的光载波信号,然后经过复用器在高速线路上传输(中间有光中继器EDFA用于光信号间的信号增强),在经过分用器分离为8路不同波长的光载波信号,每路光载波信号又通过光解调器解调制为8路1310nm的光载波信号。
在这里插入图片描述
码分复用
通过将1bit码元周期细分为m个码分,m个码分组成码分序列
特点举例,S信号站的码分序列向量S和T信号站的码分序列向量T:
1 每个信号站具有不同的码分序列,且互相正交。
S·T= 1 m ⋅ ∑ i = 1 m S i ⋅ T i \frac{1}{m}·\displaystyle\sum_{i=1}^mS_i·T_i m1i=1mSiTi=0
比如S码分序列(-1-1-1+1+1-1+1+1),T码分序列(-1-1+1-1+1+1+1-1),代入公式即S·T= 1 8 \frac{1}{8} 81· [(-1)·(-1)+(-1)·(-1)+(-1)·1+1·(-1)+1·1+(-1)·1+1·1+1·(-1)]=0。
2 要发送码元1时,发送码分序列S;要发送码元0时,发送码分序列的反码 S ‾ \overline{S} S
码分复用实例如下图:
S站、T站同时对X站发送信号,而X站仅接受S站信号即使用S站的码分序列进行解码。S x _x x是S站发送到X站,T x _x x是T站发送到X站。
在这里插入图片描述
分析
当X站使用S码分序列解码时,
1 如果S站发送0,则S·S x _x x=-1,因为S x _x x此时是码分序列反码;如果S站发送1,则S·S x _x x=+1,因为码分序列向量自己和自己规格化内积为+1。
2 而X站使用S码分序列向量与T站的信号规格化内积时为0,因为码分序列两两正交,相当于过滤了T站的信号。
3 通过解码,X站就知道S·S x _x x=-1时,接收到bit0;S·S x _x x=+1时,接收到bit1。
总结:码分序列需要硬件支持,能够细粒度地将bit细分为8个序列、64个序列、128个序列等等。

习题

在这里插入图片描述在这里插入图片描述
2-1 答:物理层主要解决信号的传输问题。特点是具有规范性、经济性、易用性。
2-2 答:规程一般指物理层的协议。协议一般指arp协议、TCP/IP协议等。
2-3 答:信号源–>发送器–>接收器–>信号终点。信号源产生信号;发送器发送信号;接收器接收信号;信号终点对信号作出反应。
2-4 答:数据:有意义的内容,比如文字、图片等。信号:带有信息的符号,比如电信号、光信号等。模拟数据:连续性的数据,比如图像。模拟信号:连续性的信号,比如电压、温度等。基带信号:波形可变而频率不变的信号,比如正弦波转换成三角波、方波等。带通信号:通过改变波形和频率而调制成的信号,比如调幅、调频、调相。数字数据:0和1的上下文,比如0xf代表数据15。数字信号:0和1,比如1个脉冲信号。码元:1个bit位。单工通信:只能A发送信号到B。半双工通信:A和B能互相发送信号,但无法同时发送。全双工通信:A和B能互相同时发送信号。串行传输:1根传输线,一次最多传送传输线的最大带宽。比如8位线一次只能传送8位大小的数据。并行传输:多根传输线,同时传输数据。
2-5 答:机械特性:物理接口的机械结构,比如外形结构、引脚个数等。电气特性:物理接口的电平范围,比如0~5V。功能特性:电平电压的含义,比如0~0.3V代表电平0,3.3~5V代表电平1。过程特性:电平产生的顺序。
2-6 答:数据在信道中的传输速率受传输媒介、传输频率、传输距离、噪声影响。信噪比=信号的平均功率/噪声的平均功率,增大信号的平均功率即可增大信噪比。香农公式表明信噪比越大,信号传输的极限速率越高。比特/秒是1 bit/s,码元/秒可以是n bit/s。
2-7 答:20000 * 16bit/s。
2-8 答: j假设64kbit/s为极限速率,
则有64000=3000log 2 _2 2(1+S/N)—>22 ≈ \approx log 2 _2 2(1+S/N)
需通过"进一法"所得,S/N ≈ \approx 1024*4096 = 4194304,dB=10log 10 _{10} 10(4194304) ≈ \approx 70dB。
2-9 答:35000 = 3100log 2 _2 2(1+S/N),S/N ≈ \approx 4096,dB = 10log 10 _{10} 10(4096) ≈ \approx 40dB
1.6 * 35000 =3100log 2 _2 2(1+S/N),S/N ≈ \approx 1024 * 256 = 262144 ,dB = 10log 10 _{10} 10(262144) ≈ \approx 60dB
2-10 答:常用传输媒体有导引型媒体双绞线(干扰抵消原理)、同轴电缆(特殊材料屏蔽干扰)、光缆(光纤维中传播光信号)和非导引型媒体短波(电离层反射)、微波(直线传播但需中继站)、红外、激光。

短波微波
低频(LF):30KHz~300KHzVery Frequency:30MHz~300MHz
中频(MF):300KHz~3MHzUltra Frequency:300MHz~3GHz
高频(HF):3MHz~30MHzSuer Frequency:3GHz~30GHz
Extremely Frequency:30GHz~300GHz

2-11 答:20/0.7=28.5km,20/100=0.2dB/km。
2.12 答:1200nm = 1.2um = 1.2x10 − 6 ^{-6} 6m,2x10 8 ^8 8/12x10 − 5 ^{-5} 5=1.67x10 14 ^{14} 14Hz
1400nm,2x10 8 ^8 8/1.4x10 − 6 ^{-6} 6=1.43x10 14 ^{14} 14Hz
2.13 答:使用信道复用技术主要是为了增加数据传输率。技术主要有频分复用、时分复用、统计时分复用、波分复用、码分复用。
2.14 答:FDM:frequency division multiplexing
TDM:time division multiplexing
STDM:statistic time division multiplexing
WDM:wavelength divison multiplexing
DWDM:dense wavelength divison multiplexing
CDMA:code divison multiplexing access
SONET:synchronous optical network
SDH:synchronous digital hierarchy
STM-1:synchronous transfer module
OC-48:optical carrier
2-15 答:因为码分多址CMDA给每一个站都设置了唯一的码分序列,比如A站要给B站发送数据,那么B站要持有A站的码分序列,当数据广播发送给所有站时,因为B站持有了A站码分序列能够解码得到数据,其它站经过规格化内积运算后无数据。缺点:因为一个bit需要用m个"码分"来组成序列,所以数据传输率增加而有效数据率减少或者说对硬件发送数据的精度有更高要求。
2-16 答:收到的码分序列和4个站规格化内积的结果。A:8。B:-8。C:0。D:8。即A站和D站发送了1,B站发送了0,C站没有发送数据。
2-17 答:接入技术优缺点如下表

接入技术优点缺点
ADSL
asymmetric digital subscriber line
可基于旧有电话线改造最高数据率不确定
HFC
hybrid fiber coax
最高数据率时确定的用户很多时,速率极低
FTT x _x x
fiber to the x
用户也能获得高速率价格不便宜且普通用户没有这么高的速率要求

2-18 答:ADSL使用了频分复用提高数据传输率。
2-19:答:EPON(ethernet passive optical network)以太网无源光网络,与以太网兼容,易扩展;GPON(generic passive optical network)吉比特无源光网络,通用封装方法,质量有保证。

第三章 数据链路层

3.1 点对点信道传输的数据链路层

3.1.1 数据链路和帧

链路:节点间的通路,比如下图中的电话网、局域网、广域网。
数据链路:物理链路+软硬件适配器形成的通路,比如下图中H 1 _1 1到H 2 _2 2一整条数据链路。
帧:在数据链路中"行走"的协议数据单元。
在这里插入图片描述

3.1.2 数据链路层协议的三个基本问题
封装成帧

帧数据包组成:帧开始符+帧首部+帧尾部+帧结束符。
帧定界:帧首部和帧尾部。
MTU(maximum transfer unit):最大传输单元,帧的数据部分的最大长度。
在这里插入图片描述

透明传输

字节填充:当MTU数据中包含帧定界符等控制字节时,填充转义字节来防止将数据误判断为控制字节,如下图ESC、EOT;当数据中含的8位二进制为转义字节,为防止将数据误判断为转义字节,则也在前面填充转义字节如下图ESC、ESC。
在这里插入图片描述

差错检测

通信过程中一般采用循环冗余检验CRC(Cyclic redundancy Check)技术。
假设要发送的二进制数据M=101001(k=6,二进制位数),只使用冗余码3位,并且约定比冗余码多1位的除数P(n+1位,下图约定的是1101)。那么M*2^3/P的余数即是冗余码。如下图
在这里插入图片描述
上图除法要点:每除一次,被除数和除数的最高位都是异或为0。
传输规则:接收到的数据除以除数后,若余数为0则数据正确;若余数不为0则丢弃数据,请求重发。
约定的除数可以用多项式表示,常用的除数多项式如下图
在这里插入图片描述
总结封装成帧、透明传输、差错检测这数据链路层的3个要素都是为了保证数据传输的准确性而设定。
无bit差错:单位是bit,帧的bit个数和电平高低无差错,电信号波形不失真。
无传输差错:单位是帧,无帧丢失、帧重复、帧失序。
因此,在通信质量不好的线路中,增加了帧编号、确认和重传机制;在通信质量好的线路中,不使用帧编号、确认和重传机制,而是通过运输层的TCP来保证可靠传输。

3.2点对点协议PPP(Point to Point Protocol)

3.2.1 PPP协议的特点

1 应满足的需求
(1)简单,无纠错、无序号。
(2)封装成帧,规定了帧定界符。
(3)透明性,规定转义字符保证透明传输。
(4)支持多种网络层协议,比如IP协议、IPX协议等。
(5)能在多种类型链路上运行,串行的、并行的、同步的、异步的、电的、光的等。
(6)差错检测,能检测并丢弃有差错的帧但不会纠错。
(7)检测连接状态,周期性检测链路是否处于正常连接状态。
(8)最大传送单元MTU,帧的数据部分最大长度默认1500字节,若超出,丢弃该帧。
(9)网络层地址协商,提供一种机制能够协商知道或配置对方的网络层地址。
(10)数据压缩协商,PPP必须提供一种协商数据压缩算法的方法。
2 PPP协议的组成
(1)将IP数据报封装到串行链路的方法,字节单位传输的异步链路、比特单位传输的同步链路。
(2)链路控制协议LCP,建立、配置、测试数据链路连接。
(3)一套网络控制协议NCP,每个协议支持不同的网络层协议如IP、DECnet、AppleTalk等。

3.2.2 PPP协议的帧格式

帧定界符:字节0x7E代表帧开始和帧结束。
字节填充:帧的数据部分包含0x7E等控制字节时,填充1个字节进行转义。比如根据RFC1662规定,使用0x7D作为转义字节,即将数据中的0x7E用(0x7D,0x5E)代替。具体如下图
在这里插入图片描述
零比特填充:异步传输是逐个字节传输;同步传输是逐个bit传输。使用SONET链路时同步传输,发送端先扫描整个信息字段,每发现五个连续的bit1就在后面填充一个0;接收端先找到标志字段Flag确定帧边界,每发现五个连续的bit1就删除后面的一个0。

3.3.3 PPP协议的状态

5个状态:链路静止状态、链路建立状态、鉴别状态、网络层协议状态、链路打开状态。
配置选项:配置请求帧、配置确认帧、配置否认帧、配置拒绝帧。
PPP协议工作流程
在这里插入图片描述
1 个人用户电脑通过调制解调器发送载波信号,与ISP建立物理层连接
2 发送PPP配置帧至ISP,协商LCP链路控制协议,最大帧长、鉴别协议(PAP、CHAP)等
3 鉴别成功后,进入网络层,协商网络控制协议(IPCP、AppleTalk等)
4 链路打开,双方可互相发送
总结:PPP协议一般用于一对一通信,且基于PPP协议只包含物理层到网络层的特点,还可用于路由器(具有交换功能即可)。

3.3 广播信道的数据链路层

3.3.1 局域网的数据链层

局域网拓扑一般由星形网(重点是集线器。)、环形网、总线网(一般用于工业联网,匹配电阻用于消除电磁辐射)。如下图。
在这里插入图片描述
  局域网顾名思义,局部有网。主机数量不会太多、由于局部所以时延也小、准确性高。比如NAT网络相当于一个星形网,常用192.168.1网段。实际上,局域只是相对而言,毕竟只要时延够小、准确度高的情况下:地球相比于银河系属于局域,中国相比于全球属于局域。
  网络的一个重要特点就是共享,即共享信道。共享信道大致分2类:静态划分信道(通信双方信道固定,简单但是占资源)和动态媒体接入控制(通信双方信道不固定,复杂但是充分利用资源,典型例子是对信道是否占用进行轮询)。
  IEEE802委员会制定了以太网的2个标准(相当于协议,电气与电子协会还制定了标准比如电压、电流甚至Type-C、RS485接口引脚和结构等) 逻辑链路控制LLC媒体接入控制MAC
  网络适配器(网卡):
1 含有处理器存储器(RAM和ROM,由于网络数据率和计算机总线数据率的差异而需要缓存)。
2 由于适配器与局域网串行传输,适配器与计算机并行传输,因此适配器还起串行/并行转换作用。
3 不同厂商的适配器提供不同的驱动程序,MAC硬件地址写在ROM中,软件地址即IP在存储器中。
4 适配器丢弃错误帧,通过中断将正确帧传输到协议栈的网络层。发送时,将IP数据交给适配器并组装成帧发送到局域网。由于具有封装成帧并转发的功能,也就是说可以将适配器看作路由器/交换机,这也能解释路由器/交换机有很多网口的原因。对于路由器/交换机:“网络数据包只进入身体不进入灵魂,灵魂无处安放”。
在这里插入图片描述

3.3.2 CSMA/CD协议

多点接入在总线上,发送前检测信道**,发送中碰撞检测,用于总线形网络,也就是说只能半双工传输,即“你方唱罢我登场”。
之所以存在碰撞检测时因为A站占用总线发送数据到B站时,存在1km约5us的延时,在5us的延时周期内,B站因为还未检测到A的动作而去占用总线,导致发生数据碰撞。
1km传输时,A站知道发生碰撞的时间最多10us,即往返时间。因此有了退避算法,相当于2个人迎面而走,你走左,它走右,一次碰撞,此时会停顿1s再走;你再走右,它再走左,二次碰撞,此时会停顿1s或者2s再走;三次碰撞,此时会停顿1s或2s或3s再走。
协议规定的退避算法如下图
在这里插入图片描述
因为在64字节(争用期)的时间里没有发生碰撞,那么之后肯定不会发生碰撞,因此规定帧长不小于64字节。

强化碰撞即当A站检测到碰撞时立即发送人为的干扰信号。

CSMA协议流程如下图
在这里插入图片描述

3.3.3 集线器星形拓扑

物理上,集线器顾名思义集成网络接口线适配器。只工作在物理层,只传输bit;与交换机的差别在于L3交换机具有网络层IP用于网络层数据转发。使用RJ-45水晶头,就是常见的网口,内部有时会堆叠集线器来增加网口数量。信号传输也用的是双绞线,而为了实现全双工传输(即收发同时进行),每根网线中实际上包含2条双绞线
逻辑上,每个网络适配器对集线器网口的控制权进行竞争,而竞争过程也是使用的CD碰撞检测协议,因为对于集线器而言,只能有1个主机适配器具有对集线器网口的控制权。从逻辑上来看,也相当于总线网类型

3.3.4 以太网信道利用率

以太网极限信道利用率S m a x _{max} max = T T + x \cfrac{T}{T+x} T+xT = 1 1 + x T \cfrac{1}{1+\cfrac{x}{T}} 1+Tx1
T:数据帧发送消耗的时间
x:碰撞检测重发消耗的无效时间
T越大,即数据越大,利用率越高;x越小,即碰撞越少,利用率越高。

3.3.5 以太网的MAC层

1 MAC地址
  MAC地址即MAC层的硬件地址,固化在适配器的ROM中。该地址一般由6字节的标识符组成,前3字节是OUI(Organization Unique Identifier),由IEEE的注册机构分配;后3字节是EUI(Extended Unique Identifier),由适配器厂家自行分配。
  从右往左看,当第0位为0时,地址表示单站地址;当第0位为1时,地址表示组播地址,用来进行组播。当第1位为0时,地址表示全球管理;当第1位为1时,地址表示本地管理
  MAC帧分3种:单播(收到的MAC帧中的目的地址即本站点MAC地址)、广播(全1地址)、组播(发送到本局域网部分站点的帧)。
  当适配器设置为混杂模式时,可以窃听以太网上的信息。设置命令:# ip link set enp0s0 promisc on
2 MAC帧格式
在这里插入图片描述
第1个字段:目的地址(本机地址),6字节的MAC标识符;
第2个字段:源地址(发送该帧的地址),6字节的MAC标识符;
第3个字段:类型2字节,表示上一层协议类型,比如IP协议;
第4个字段:数据46~1500字节,包含的真正有用的数据;
第5个字段:4个字节的FCS帧校验序列,用于校验帧的正确;
帧结束标志:适配器不再发送0和1,代表帧结束了;
数据长度:当数据长度大于等于46字节时,往前数4字节可确定数据长度;当数据长度小于46字节时,使用字节填充满足64字节,因为IP数据报具有IP数据长度字段,所以IP层只取IP数据长度的数据字节,即只取有效数据。
前同步码:7个字节,用于发送帧之前,确保发送端适配器和接受端适配器的时钟同步;
帧开始符:1个字节,字节的低2位连续为1表示MAC帧开始。
无效的MAC帧判定:MAC帧长度非整数字节;FCS帧检验序列检出错误;MAC帧数据长度不在46~1500字节范围。

3.4 扩展以太网

3.4.1 在物理层扩展以太网

物理层扩展以太网通过集线器层层连接来扩展,如下图
在这里插入图片描述
1 不同的子网通过集线器连接,扩展以太网中的2个不同适配器通信会经过所有集线器转发,也就是说主干集线器下的所有适配器都可能存在碰撞;
2 主干集线器下的2个适配器通信带宽取最小值。比如一系中的适配器A与二系的适配器B通信链路是:一系适配器A(100Mb/s)–>一系集线器(1000Mb/s)–>主干集线器(10000Mb/s)–>二系集线器(1000Mb/s)–>二系适配器B(10Mb/s)。那么适配器A和B的带宽为10Mb/s。

3.4.2 在数据链路层扩展以太网

1 以太网交换机的特点
本质上是多接口的网桥。具有存储转发功能,甚至可以通过自学习算法自动地逐步建立地址表
可使得多对主机同时通信无碰撞传输数据;
10个10Mb/s接口的交换机,它的带宽为100Mb/s
2 以太网交换机的自学习功能
交换机中一开始有个空的交换表,用于记录MAC地址对应的交换机接口。如下图
在这里插入图片描述
1 当适配器A发送一帧数据到适配器B,而交换表中没有记录适配器A的MAC地址和对应的接口时,会记录适配器A的MAC地址和对应接口;
2 由于地址表还未记录适配器B的MAC和对应地址,会对所有适配器进行广播,匹配到帧数据中MAC地址适配器B中MAC地址相同时,在交换表中记录适配器B和对应接口。

以太网交换机组网如下图
在这里插入图片描述
比如当2个或多个交换机组网时,适配器A第一次发送帧数据到适配器B由于交换表时空的,会进行一次广播,而转发过程中就会形成上图中的闭环链路3#1–>1#2–>2#2–>4#1–>3#1,消耗网络资源。所以IEEE802.1D标准制定了STP生成树协议,在逻辑上保证不存在闭环链路路径。
3 总线以太网到星型以太网
总线以太网:CD碰撞检测协议(载波监听,具有匹配电阻消除电磁辐射),半双工传输。
星型以太网:无CD协议,使用交换机,全双工传输。

3.4.3 虚拟局域网

在这里插入图片描述
由上图可知,有3个虚拟局域网VLAN1、VLAN2、VLAN3。
1 虚拟局域网间的站点也必定有一条物理通路,比如A4–>A3会经过3个交换机;
2 虚拟局域网间的站点通过802.1Q格式的帧来辨别是否处于同一虚拟局域网,比如VLAN1会有一种帧,VLAN2会有另一种帧,但VLAN1和VLAN2的帧的定义都遵从802.1Q格式;
3 不同虚拟局域网间的站点,即使它们和同一交换机连接,它们之间也无法通信,因为交换机不会传送不同VLAN间的广播消息,比如A1和C1。可以看作网络隔离。
4 VLAN帧格式如下图
在这里插入图片描述
在MAC帧源地址后插入4个字节。前2个字节为0x8100表示属于VLAN帧;后2个字节包含用户优先级(0~7等级,用于阻塞时优先发送哪个帧)、CFI(Canonical Format Indicator,1代表非标准格式有FDDI帧、令牌环网帧,0代表标准格式即以太网帧)、VID(VLAN ID,某个局域网的ID,具有唯一性)。
因此,VLAN帧在MAC帧的基础上多了4字节即1500数据字节+18控制字节+4VLAN标记字节=1522字节。

3.5 高速以太网

3.5.1 100BASE以太网

1 兼容10BASE;
2 全双工时不使用CD碰撞检测协议;
3 MAC帧格式仍采用IEEE802.3帧格式;
4 对于铜缆100BASE-T,网段最大长度为100m(用于减少碰撞检测消耗,增加信道利用率),如下图
在这里插入图片描述

3.5.2 1GBASE以太网

1 兼容10BASE、100BASE;
2 全双工时不使用CD碰撞检测协议;
3 MAC帧格式仍采用IEEE802.3帧格式;
4 半双工时采用载波延伸分组突发2种方式增加信道利用率。
在这里插入图片描述

3.5.3 10GBASE以及更高速以太网

1 兼容10BASE-T、100BASE-T、1G;
2 仅全双工工作;
3 MAC帧格式仍采用IEEE802.3帧格式;
4 多模光纤采用发光二极管作为光源(光较分散,传输距离较短),单模光纤采用激光二极管作为光源(较高功率因此传输距离更长)。
在这里插入图片描述
在这里插入图片描述
100Gbit/s!我只能说人类真牛逼~

3.5.4 使用以太网进行宽带接入

PPPoE(PPP over Ethernet)宽带接入,俗称拨号上网!
举个栗子,光纤到楼的方案进行宽带接入
1 城域网光纤主干网–(光纤)–>大楼的光网络单元即交换机–(铜线)–>大楼每一层局域网交换机–(铜线)–>房间的RJ-45插槽–(5类线)–>个人电脑,这种方式在用户家中无需调制解调器。

第二个栗子,ADSL(非对称数字用户线,俗称电话线)宽带接入
2 城域网光纤主干网–(光纤)–>大楼的光网络单元即交换机–(铜线)–>大楼每一层局域网交换机–(铜线)–>房间的ADSL调制解调器上的RJ-11插槽–(5类线)–>个人电脑,之前讲过一般在欧洲流行这种方案,用于保留老建筑。

习题

3-01 数据链路(即逻辑链路)和链路(物理链路)有何区别?“电路接通了”和“数据链路接通了”有何区别?
:链路是一个节点到相邻节点的物理线路;数据链路是适配器+链路+软件协议的实现(比如PPP协议)。“电路接通了”代表电气逻辑上是通的;“数据链路接通了”代表可以发送数据了。
3-02 数据链路层的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。
:封装成帧、透明传输、差错检测。优点:速度更快。缺点:保证数据传输可靠是个问题。
3-03 网络适配器的作用?它工作在哪一层?
:网络适配器中的ROM记录了唯一的MAC硬件地址,接收网络中传过来的MAC帧。工作在数据链路层和物理层。
3-04 数据链路层的封装成帧、透明传输、差错检测3个问题,为什么必须要解决?
:封装成帧增加帧头和帧尾为了确保数据可识别性、有效性、有序性;透明传输确保数据中的2进制序列不会被识别为控制字节;差错检测是为了确保传输过程中没有出现bit错误即电信号波形失真。
3-05 如果在数据链路层不进行封装成帧,会发生什么问题?
:会不知道数据什么时候开始发送,什么时候结束发送。
3-06 PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不能使数据链路层实现可靠传输?
:主要特点是处于数据链路层的协议,点对点传输协议。为了提高通信效率。PPP适用于1对1数据传输。因为目前的数据链路层的通信链路质量都很好,不可靠传输的情况极低,因此把可靠传输的筛选放在运输层的TCP,用以提高效率。
3-07 要发送的数据为1101011011。采用CRC的生成多项式是P(X)= X 4 + X + 1 X^4+X+1 X4+X+1。试求添加在后面的余数即冗余码。数据在传输过程中最后一个1变成了0,问接收端能否发现?若数据在传输中最后两个1都变成了0,问接收端能否发现?采用CRC检验后,数据链路层的传输是否就变成了可靠传输?
:数据有10位,所以 2 k > = 10 , k > = 4 2^k>=10,k>=4 2k>=10,k>=4,因此冗余码4位;由多项式可得,除数为10010;数据除以除数得余数为1011。如下图。
在这里插入图片描述
最后一个1和最后两个1变成0,接收端都能发现。CRC校验只能检测无bit错误,不能检测可靠传输,可靠传输是以帧为单位出现帧丢失、帧重复、帧失序。
3-08 要发送的数据为101110。采用的多项式是P(X)= X 3 + 1 X^3+1 X3+1。试求应添加在数据后面的余数。
:同上题,得余数为011。
3-09 一个PPP帧的数据部分为(十六进制)7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试问真正的数据是什么(十六进制)?
答:PPP帧中定义0x7D为转义字节,所以真正的数据为5E FE 27 5D 5D 65 5E。
3-10 PPP协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP帧的数据部分是0001110111110111110110,问删除发送端填充的零比特后变成怎样的比特串?
:01111111011111000。00011101111111111110。
3-11 试分别讨论一下各种情况在什么条件下是透明传输?在什么条件下不是透明传输。(1)普通的电话通信。(2)互联网提供的电子邮件服务。
:透明传输类似于编解码,发送端发送的数据进行了编码,接收端解码后得到的数据与发送端要发送的数据一致。
(1)不是,发送端模拟信号输入,调制为数字信号传输,接收时解调为模拟信号输出,输出的模拟信号和输入的模拟信号已经不一样了,比如现实中她的声音和电话中她的声音有那么点细微差别,也就是说分辨率也高,越接近原声。就像一条曲线,你再怎么细粒度地对它进行微分,最后得到的也不是原来的曲线。这也能解释为什么都是音视频设备,有的手机就行,而有的却要专业的设备却要几万甚至几十万,几百万,主要就是精度。
(2)是,发送端发的帧数据字段中有转义字节,接收端处理时得到的有效数据忽略了转义字节。(我感觉也不是,比如发送一段文字,从键盘敲击输入,它经过了文字编码,二进制编码,二进制解码成文字,文字又在大脑解码,来确定是什么语言的文字从而被大脑理解,大脑能解码的原因是神经元被训练从而能理解,比如用汉字来训练神经元,训练地越多,大脑解码越快)。
3-12 PPP协议的工作状态有哪几种?当用户要使用PPP协议和ISP提供商建立连接进行通信时,需要建立哪几种连接?每一种连接解决什么问题?
:链路静止状态、链路建立状态、鉴别状态、网络层协议状态、链路打开状态。物理连接解决电气连通问题;LCP连接解决链路通信问题;NCP连接解决各种网络层协议的兼容问题。
3-13 局域网的主要特点什么?为什么局域网采用广播通信而广域网不采用呢?
:特点:为一个单位拥有,且地理范围和站点数有限。广播通信是一个站点对网络中所有站点广播发送,局域网站点数量有限问题不大,但广域网站点数量很多,若也广播,那不知道要多久。
3-14 常用的局域网的网络拓扑有哪些种类?现在最流行的是哪种结构?为什么早期的以太网选择总线拓扑结构而不使用星型拓扑结构?但现在却改为使用星型拓扑结构?
:星型网、总线网、环形网。现在流行星型网。总线网因为一开始站点不多而使用无源电缆;后来因为站点增加,需要有源电缆来增加电力驱动,也就是星型网。
3-15 什么叫做传统以太网?以太网有哪两个主要标准?
:传统以太网:用无源电缆作为总线的基带总线局域网即10Mbit/s。主要有DIX Ethernet V2标准和IEEE803标准。
3-16 数据率为10Mbit/s的以太网在物理媒体上的码元传输速率是多少码元每秒?
:因为采用的曼彻斯特编码,所以码元多了1倍,100000002码元每秒。
3-17 为什么LLC子层的标准已经制定出来了现在却很少使用?
:LLC逻辑链路控制子层是为了当时兼容不同的局域网标准如802.4令牌总线网、802.5令牌环网等,而现在基本上都是TCP/IP体系即DIX Ethernet V2,所以不需要LLC子层了。
3-18 试说明10BASE-T中的“10”、“BASE”、“T”所代表的意思。
:10代表数据率10Mbits/s;BASE代表未经调制(调频、调幅、调相)的基带信号;T代表双绞线铜缆。
3-19 以太网使用的CSMA/CD协议是以争用方式接入到共享信道的。这与传统的时分复用TDM相比优缺点如何?
:CD协议争用方式信道利用率更高,但是可能存在一个站点在一定周期内没有占用到信道;TDM信道利用率更低,但确保一定周期内所有站点都占用到了信道。
3-20 假定1km长的CSMA/CD网络的数据率为1Gbit/s。设信号在网络上的传播速率为200000km/s。求能够使用此协议的最短帧长。
:设最短帧长为x,1/200000=5 * 10 − 6 ^{-6} 6s, 2 * 5 * 10 − 6 ^{-6} 6 = x / 10 9 ^9 9,x = 10 4 ^4 4bit。
3-21 什么叫做比特时间?使用这种时间单位有什么好处?100比特时间是多少微秒?
:发送1bit所需要的时间。便于计算数据量。需要根据网卡速度,比如1Gbits/s的网卡,100比特时间是0.1微秒。
3-22 假定在使用CSMA/CD协议的10Mbit/s以太网中某个站在发送数据时检测到碰撞,执行退避算法时选择了随机数r=100。试问这个站需要等待多长时间后才能再次发送数据?如果是100Mbit/s的以太网呢?
:10Mbit/s发送512bit是51.2us,随机数r=100,等待时间为5120us。100Mbit/s发送512bit是5.12us,随机数r=100,等待时间为512us。
3-23 公式(3-3)表示,以太网的极限信道利用率与连接在以太网上的站点数无关。能否由此推论出:以太网的利用率也与连接在以太网的站点数无关?请说明你的理由。
:不能,以太网的利用率在理想情况下才能达到极限信道利用率;而在实际情况下,以太网利用率与站点数有一个顶点值,一开始站点数越多,利用率越高,到达一定数量后,由于站点数过多,发生碰撞的概率越高,所以又随着站点数增多而利用率下降,所以,实际以太网利用率达到30%就属于重负载情况了。
3-24 假定站点A和站点B在同一个10Mbit/s以太网网段上。这两个站点的传播时延为225比特时间。现假定A开始发送一帧,并且在A发送结束之前B也发送一帧。如果A发送的是以太网容许的最短的帧,那么A在检测到和B发生碰撞之前能否把自己的数据发送完毕?换言之,如果A在发送完毕之前并没有检测到碰撞,那么能否肯定A所发送的帧不会和B发送的帧发生碰撞?(计算时应考虑到每个以太网帧在发送到信道上时,在MAC帧前面还要增加若干字节的帧同步码和帧定界符)
:前同步码7字节,帧开始符1字节,最小长度64字节,总共72字节即576bit,576>225,因此,A在检测到和B发生碰撞之前无法把自己的数据发送完毕。不能肯定,因为帧的最后一个bit发送完毕,而最后一个bit从A到B还有225比特时间的时延,在这个时间段A也可能和B发送的帧碰撞。
3-25 在上题中的站点A和B在t=0时同时发送了数据帧。当t=225比特时间,A和B同时检测到发生了碰撞,并且在t=225+48=273比特时间完成了干扰信号的传输。A和B在CSMA/CD算法中选择不同的r值退避。假设A和B选择的随机数分别是r A _A A=0和r B _B B=1。试问A和B各在什么时间开始重传其数据帧?A重传的数据帧在什么时间到达B?A重传的数据会不会和B重传的数据再次发生碰撞?B会不会在预定的重传时间停止发送数据?
:A碰撞后在t=273时重新发送,B碰撞后在t=273+225
2=723时重新发送。A重传的数据帧在t=273+225=498时到达B。A重传的数据不会和B重传的数据再次碰撞,因为B退避等待的时间足够A到达B。B不会在预定重传时间停止发送数据,由于以太网规定帧间间隔有96比特时间,即使A第二帧紧接着发送,也需要在t=498+96+225=819时到达B,那时B已经重新发送了。
3-26 以太网上只有两个站,它们同时发送数据,产生了碰撞。于是按截断二进制指数退避算法进行重传。重传次数为i,i=1,2,3,…。试计算第一次重传失败的概率、第二次重传失败的概率和第三次重传失败的概率,以及一个站成功发送数据之前的平均重传次数I。
:第一次重传k=1时, r ∈ { 0 , 1 } r\in\{0,1\} r{0,1},A和B有4种组合,而重传失败需要它们r值相同,即概率 p 1 = 2 / 4 = 1 2 1 p{_1}=2/4=\frac{1}{2^1} p1=2/4=211;第二次重传k=2时, r ∈ { 0 , 1 , 2 , 3 } r\in\{0,1,2,3\} r{0123},概率 p 2 = p 1 ∗ ( 4 / 16 ) = 1 2 3 p{_2}=p{_1}*(4/16)=\frac{1}{2^3} p2=p1(4/16)=231;第三次重传k=3时, r ∈ { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 } r\in\{0,1,2,3,4,5,6,7\} r{0,1,2,3,4,5,6,7},概率 p 3 = p 1 ∗ p 2 ∗ ( 8 / 64 ) = 1 2 7 p{_3}=p{_1}*p{_2}*(8/64)=\frac{1}{2^7} p3=p1p2(8/64)=271
p 4 = p 1 ∗ p 2 ∗ p 3 ∗ ( 16 / 256 ) = 1 2 15 p{_4}=p{_1}*p{_2}*p{_3}*(16/256)=\frac{1}{2^{15}} p4=p1p2p3(16/256)=2151
由规律可知, p k = 1 2 2 k − 1 p{_k}=\frac{1}{2^{2^k-1}} pk=22k11,
p 5 = 1 2 31 p{_5}=\frac{1}{2^{31}} p5=2311
p 6 = 1 2 63 p{_6}=\frac{1}{2^{63}} p6=2631
p 7 = 1 2 127 p{_7}=\frac{1}{2^{127}} p7=21271
p 8 = 1 2 255 p{_8}=\frac{1}{2^{255}} p8=22551
p 9 = 1 2 511 p{_9}=\frac{1}{2^{511}} p9=25111
p 10 = 1 2 1023 p{_{10}}=\frac{1}{2^{1023}} p10=210231
p 11 = 1 2 2047 p{_{11}}=\frac{1}{2^{2047}} p11=220471
p 12 = 1 2 4095 p{_{12}}=\frac{1}{2^{4095}} p12=240951
p 13 = 1 2 8191 p{_{13}}=\frac{1}{2^{8191}} p13=281911
p 14 = 1 2 16383 p{_{14}}=\frac{1}{2^{16383}} p14=2163831
p 15 = 1 2 32767 p{_{15}}=\frac{1}{2^{32767}} p15=2327671
p 16 = 1 2 65535 p{_{16}}=\frac{1}{2^{65535}} p16=2655351
由于规定重传16次仍失败,则停止重传向上报错,因此k最多到16。
所以平均重传次数= 1 ∗ ( p 1 + p 2 + p 3 + p 4 + p 5 + p 6 + p 7 + p 8 + p 9 + p 1 0 + p 1 1 + p 1 2 + p 1 3 + p 1 4 + p 1 5 + p 1 6 ) ≈ 0.5 1*(p{_1}+p{_2}+p{_3}+p{_4}+p{_5}+p{_6}+p{_7}+p{_8}+p{_9}+p{_10}+p{_11}+p{_12}+p{_13}+p{_14}+p{_15}+p{_16})\approx0.5 1(p1+p2+p3+p4+p5+p6+p7+p8+p9+p10+p11+p12+p13+p14+p15+p16)0.5。所以,和丢硬币差不多,要么重传要么不重传~(瞎搞)
3-27 有10个站连接到以太网上。试一下三种情况下每一个站所能得到的带宽。
(1)10个站都连接到一个10Mbit/s以太网集线器;
(2)10个站都连接到一个100Mbit/s以太网集线器;
(3)10个站都连接到一个10Mbit/s以太网交换机。
:(1)每个站都是1Mbit/s;(2)每个站都是10Mbit/s;(3)每个站都是10Mbit/s。
3-28 10Mbit/s以太网升级到100Mbit/s、1Gbit/s、10Gbit/s时,都需要解决哪些技术问题?为什么以太网在发展的过程中能够淘汰掉自己的竞争对手,并使自己的应用范围从局域网一直扩展到城域网和广域网?
:适配器的速率问题、对低速以太网的兼容问题、争用问题。因为物美价廉。
3-29 以太网交换机有何特点?用它怎样组成虚拟局域网?
:指的是2层交换机,具有更多接口、交换机连接的主机间可同时通信、可缓存。使用每个虚拟局域网特定的VLAN帧。
3-30 在图3-30中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器、万维网服务器和以及一个连接互联网的路由器相连。图中A、B、C都是100Mbit/s的以太网交换机。假定所有链路的速率都是100Mbit/s,并且途中9台主机中的任何一个都可以和任何一个服务器或主机通信。试计算9个主机和2台服务器产生的总的吞吐量的最大值。为什么?
在这里插入图片描述
:100Mbit/s,因为不管是A、B、C交换机还是所有链路都只有100Mbit/s。
3-31 假定在3-30中的所有链路的速率仍然为100Mbit/s,但三个系的以太网交换机都换成为100Mbit/s的集线器。试计算9个主机和2台服务器产生的总的吞吐量的最大值。为什么?

3-32 假定在3-30中的所有链路的速率仍然为100Mbit/s,但所有的以太网交换机都换成为100Mbit/s的集线器。试计算9个主机和2台服务器产生的总的吞吐量的最大值。为什么?
:33Mbit/s,集线器。
3-33 在图3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。
在这里插入图片描述
在下表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网的交换机的交换表时空的。试把该表中其他栏目都填完。

动作交换表的状态向哪些接口发送帧说明
A发送帧给D(A,1)
(D,4)
A–>1–>4–>D此时交换表记录了A的MAC地址及对应的交换机接口,
D的MAC地址及交换机对应的接口
D发送帧给A(A,1)
(D,4)
D–>4–>1–>A此时交换表不会改变
E发送帧给A(A,1)
(D,4)
(E,5)
E–>5–>1–>A此时交换表增加了E的MAC地址及交换机对应的接口
A发送帧给E(A,1)
(D,4)
(E,5)
A–>1–>5–>E交换表

3-34 有两台主机A和B接在800m长的电缆线的两端。并在t=0时各自向对方发送一个帧,长度为1500bit(包括首部和前同步码)。假定在A和B之间有4个转发器,在转发帧时会产生20比特的时延。设传输速率为100Mbit/s,而CSMA/CD的退避时间是随机数r倍的争用期,争用期为512bit,在发生第一次碰撞后,在退避时A选择r=0而B选择r=1。忽略发生碰撞后的人为干扰信号和帧间最小间隔。
(1)设信号的传播速率是2x10 8 ^8 8m/s。试计算从A到B(包括4个转发器)的传播时延。
(2)在什么时间(以秒为单位)B完全收到了A发送的帧?
(3)现在假定只有A发送帧,帧长仍为1500bit,但4个转发器都用交换机来代替。交换机在进行存储转发时还要产生额外的20bit的处理时延。在什么时间(以秒为单位)B完全收到了A发送的帧?

(1) 800 / ( 2 ∗ 1 0 8 ) + 20 ∗ 4 / ( 1 0 8 ) = 4 ∗ 1 0 − 6 s + 8 ∗ 1 0 − 7 s = 4.8 u s 800/(2*10^8)+20*4/(10^8)=4*10^{-6}s+8*10^{-7}s=4.8us 800/(2108)+204/(108)=4106s+8107s=4.8us
(2)由于B等待1个争用期时间,而A立马重传,因此 t = 24 ∗ 1 0 − 7 + 150 ∗ 1 0 − 7 + 48 ∗ 1 0 − 7 = 222 ∗ 1 0 − 7 s t=24*10^{-7}+150*10^{-7}+48*10^{-7}=222*10^{-7}s t=24107+150107+48107=222107s
(3) t = 48 ∗ 1 0 − 7 + 1500 ∗ 1 0 − 8 + 4 ∗ 40 ∗ 1 0 − 8 = 214 ∗ 1 0 − 7 s t=48*10^{-7}+1500*10^{-8}+4*40*10^{-8}=214*10^{-7}s t=48107+1500108+440108=214107s

第4章 网络层

4.1 网络层提供的两种服务

虚电路服务:电话网,绝对可靠传输。
数据报服务:互联网,相对可靠传输。
因为计算机具有智能处理能力,因此使用的数据报服务。2种服务对比如下表
在这里插入图片描述

4.2 网际协议IP

IP协议配套的协议有:
ARP(Address Resolution Protocol)地址解析协议
ICMP(Internet Control Messages Protocol)网际控制报文协议
IGMP(Internet Group Management Protocol)网际组管理协议
ICMP协议和IGMP协议依赖IP协议,IP协议依赖ARP协议。
在这里插入图片描述

4.2.1 虚拟互联网络

没有一种单一网络能适应所有用户的需求,因此有了虚拟互联网络。而将网络互联的中间设备有一下4种:

层次设备用途
物理层转发器(集线器)简单的将多台主机连接在同一局域网,进行bit转发,具有类似电力中继器的作用,防止bit波形失真。集线器就是一种经典的转发器。
数据链路层网桥这层已经有了MAC地址转发MAC帧,而MAC帧含有源MAC地址和目的MAC地址,因此网桥含有MAC地址表。使用共享带宽方式进行数据传输,并且由于使用CD碰撞协议,导致网络信道利用率较低。局域网的某个主机会对局域网内所有主机进行广播,导致安全性不高。
网络层路由器这层具有IP地址转发数据报,不再是局域网,真正属于网络互联。
网络层之上网关连接2个不兼容的系统,用于更高层协议转换。

中间设备更详细介绍见连接https://blog.csdn.net/u012243115/article/details/47008903/

互联网由多个异构网络连接而成,比如千兆网和万兆网2个异构网络可以通过路由器互联进行通信。
在这里插入图片描述

4.2.2 分类的IP地址

1 IP地址及其表示方法
IP地址:32位的唯一标识符,由网络号主机号构成,如下图。
在这里插入图片描述
点分十进制记忆法:IP地址32位,每8位二进制一个字节,转换成10进制表示,如下图。
在这里插入图片描述
2 常用的3种类别的IP地址
A类地址
1~127.0~255.0~255.0~255。
网络号字段为00000000.x.x.x(0.0~255.0~255.1~255)是保留地址,表示本网络,比如0.0.0.1、0.0.1.1、0.1.1.1等;
网络号字段为01111111.x.x.x(127.0~255.0~255.1~255)是环回地址,本机可直接ping通(主机号全为0或1时除外,因为127.0.0.0代表127这个网络;127.255.255.255代表127这个网络的所有主机),如下图;
在这里插入图片描述
像比如10.10.1.3、10.10.20.3就属于A类地址。
B类地址
128~191.0~255.0~255.0~255。
像比如168.254.6.6、169.253.6.6就属于B类地址。
但128.0网络号不指派地址。
C类地址
192~223.0~255.0~255.0~255。
192.0.0网络号不指派地址。
像比如192.168.0、192.168.1、192.168.3网络号就属于C类地址。
"不在五行中"的特殊地址
00000000.00000000.00000000.00000000(0.0.0.0)表示本主机,本机可直接ping通,如下图;
在这里插入图片描述
00000001.00000001.00000001.00000001(1.1.1.1)表示泛播cloudflare,本机可直接ping通,如下图;
在这里插入图片描述
主机号字段全为1时,表示该网络的所有主机,比如A类地址中127网络号:127.255.255.255;
主机号字段全为0时,表示该网络,比如B类地址128.1网络号:128.1.0.0。
IP地址最后8位为0或255时,属于该网段的广播地址。
IP地址指派范围表如下图
在这里插入图片描述
IP地址特点
(1) IP地址分等级。网络号由IP地址管理机构分配,主机号由单位自行分配。首先方便管理;其次,路由器仅根据目的主机网络号来转发分组,大幅减少了路由表条目,这样节省了路由表的存储空间,减少了查表时间。类似物流网络,填接收地址时,行政地址最多到填到某省某市某区某街道,具体地址某小区某栋某单元某号由自己增填,然后快递包发包时,A市卖家—>A市快递承接公司(主机号路由器)—>A市转运中心公司(网络号路由器)—>B市转运中心公司(网络号路由器)—>B市快递承接公司(主机号路由器)—>B市某菜鸟驿站(网桥)—>B市买家,即官方负责转运中心,私人承包快递公司,菜鸟驿站范围内的买家处于同一局域网。

头脑为发骚而生计算机神经网络形成神经元记忆、回忆、运动原理

记忆状态:六感(眼、耳等)获取信息素,使得神经元之间突触而建立连接并产生各种突触属性,即记忆。从而知道了这个味道是什么味道、这个图像是什么图像、我是我;
回忆状态:建立突触链接(记忆)总是困难的,但突触链接成功后,下一次激活突触链接(回忆)就比较容易了。
意识显化:记忆显化的手段是频率(以什么频率动作、以什么频率声带发声),鸡你太美练习时长2年半以及喉咙练发声都是在优化突触属性加快突触链接激活速度,当激活速度足够快时,就成为了潜意识,比如下意识做某事。

(2) 一台主机连接到2个不同网络时,必须有2个IP地址,此时该主机为多归属主机。比如路由器。

(3) 用转发器或网桥连接起来的若干个局域网属于同一网络,即网络号相同。
(4) IP地址中,所有分配到网络号的网络都是平等的,就是那个IP有的属性,这个IP也有。

下图中
1 网桥B连接的2个主机也属于局域网LAN 2 _2 2
2 路由器总是具有2个或2个以上的IP地址;
3 路由器直接相连的链路叫做无编号网络;
在这里插入图片描述

4.2.3 IP地址与硬件地址

IP地址:逻辑的,软件定义实现的。
硬件地址:物理的,烧写在网卡的ROM中的,又叫MAC地址、物理地址。区别如下图
在这里插入图片描述

路由器连接多个网络,则需要多个硬件地址,如下图。
数据流向
1 主机H 1 _1 1数据到网络层封装成IP帧,IP帧头含源IP地址IP 1 _1 1和目的IP地址IP 2 _2 2
2 接着IP帧到H 1 _1 1数据链路层加上MAC帧头帧尾,封装成MAC帧,MAC帧头含源硬件地址。HA 1 _1 1和目的硬件地址HA 3 _3 3
3 MAC帧在数据链路层传输到路由器R 1 _1 1,MAC帧中的硬件目的地址与R 1 _1 1的硬件地址匹配,则收下该帧;不匹配,则丢弃该帧。
4 路由器R 1 _1 1剥去MAC帧头帧尾,获得目的IP地址,并加上R 2 _2 2的硬件地址封装成新的MAC帧传输到路由器R 2 _2 2
5 R 2 _2 2的MAC帧传输到主机H 2 _2 2,MAC帧目的硬件地址若匹配HA 2 _2 2,则收下;不匹配,则丢弃。
6 主机H 2 _2 2剥去MAC帧头帧尾给网络层,网络层剥去IP帧头帧尾给上层。
在这里插入图片描述
强调4点
(1) IP层抽象的互联网只能看到IP数据报;
(2) 路由器只根据目的IP地址的网络号进行路由选择;
(3) 在局域网的链路层只能看到MAC帧;
(4) 通过抽象的IP地址研究主机和主机或路由器间的通信。

4.2.4 地址解析协议ARP

什么是ARP地址解析协议?
  ARP协议将网络层IP地址解析为数据链路层硬件地址

ARP协议怎么实现的?
  主机分配了ARP高速缓存,用于存储IP地址对硬件地址的映射表
1 映射表一开始是空的,主机A在数据链路层会对局域网进行广播,发送ARP请求
2 其他主机会以单播形式响应请求,其他主机将自己的IP地址和硬件地址映射返回给主机A;
3 然后主机A将映射记录在自己的ARP高速缓存中。
注意:
1 映射表具有生存时间,会动态更新,超过设定的生存时间就会删除某个映射关系,并重新广播记录新的映射关系。
2 只要使用了IP协议,必然就会使用ARP协议,因此,主机A ping一个活动主机B时,必然会将主机B的映射关系记录在主机A的ARP高速缓存中。

为什么定义ARP协议?
书上说因为使用不同的硬件地址,要通信需要进行非常复杂的硬件地址转换工作,所以使用ARP协议将硬件地址映射成IP地址,便于用户使用。但这里我有疑问!?32位的IP地址和48位的硬件地址都不便于用户使用呀,而且ipv6地址硬件地址就很苟同啊。

4.2.5 IP数据报的格式

IP数据报:由首部和数据部分组成。首部由固定部分20字节和可变部分1~40字节,因此首部大小20~60字节。首部以4字节为单位。
在这里插入图片描述
版本:4位,IP协议版本,通信双方版本必须一致。
首部长度:4位,大小增1,首部长度增加4字节,由于首部有固定部分20字节,因此范围是0101~1111。
区分服务:8位,一般不用,当使用区分服务时采用。
总长度:16位,因此最大长度为65535字节。由于数据链路层的MTU不能超过1500字节,并且考虑到数据越短路由器转发越快,IP协议规定主机和路由器接收的数据报不超过576字节;否则就要进行分片,而分片时,总长度是每个分片的首部+数据部分
标识:16位,IP软件在存储器中持有一个计数器,每产生1个数据报,计数器+1,计数器的值赋给标识字段。数据报分片时,计数器的值赋给所有数据报分片中的标识字段,接收方根据相同的标识字段对数据报分片组合成完整数据。
标志:3位,只用到低2位。第1位MF(More Fragment),MF=1表示还有数据报分片,MF=0,表示是最后一个分片。第2位DF(Don’t Fragment),DF=1表示非分片,DF=0表示分片。
片偏移:13位,较长分组分片后,某片在分组中的位置。即以数据字段起点为基准位置,该片进行偏移后的位置是分片的起始位置,且以8字节为单位偏移。
生存时间:8位,TTL(Time To Live),发送方设置TTL值,每经过一次转发TTL值-1,若TTL=0时,丢弃数据报。防止数据报游魂,找不到目的地。
协议:8位,定义数据所用的协议,从而知道上交给哪个协议处理,常用的协议有ICMP、IGMP、IP、IPv6、TCP、UDP等。
首部检验和:16位,只检验首部,因为只有首部在传输过程中会变。,首部划分位n个16位字,检验和字段置0,将n个字相加,得出的值的反码写入检验和字段;接收方将包括检验和字段置0在内的n个16位字相加后取反,若得出0,则首部未变化,保留数据报。
源地址:32位。
目的地址:32位。
可变部分:1~40字节,测量、排错、安全等项目功能。

4.2.6 IP层转发分组的流程

路由表:主要包含的信息是网络地址下一跳地址,用于转发分组。
特定主机路由:指定数据通过某一路由发送到目的主机,用于测试分析网络。
默认路由:减少路由表占用空间和搜索时间,用于某一网络具有很少的对外连接的情况。
在这里插入图片描述
分组转发算法
(1)IP数据报中提取目的主机地址D和目的主机网络地址N;
(2)若当前路由器的路由表中的下一跳地址含有目的主机网络地址N,则数据报封装成MAC帧,通过数据链路层直接交付;
(2)若路由表中有特定主机路由,则转发给特定主机路由的地址;否则执行(4);
(4)若路由表中有下一跳地址可以到达网络N,则转发给下一跳地址的路由器;否则执行(5);
(5 )若路由表有默认路由,则转发给默认路由的地址;否则执行(6);
(6)报告转发分组出错。

4.3 划分子网和构造超网

4.3.1 划分子网

子网:在某一网络号的网络中利用主机号的bit作为子网号,从而划分子网。即2级IP地址转为3级IP地址。
IP地址::= {<网络号>,<子网号>,<主机号>}
目的
1 避免浪费IP地址空间;
2 减少路由表条目,增加转发效率;
3 子网可直接连上互联网,而不需要去管理机构申请。
子网拓扑如下图
在这里插入图片描述
注意:子网中的IP在互联网上仍具有唯一性,即公网IP。而我们用的无数个192.168.1、192.168.3等属于私网IP,需要经过NAT地址转换。

子网掩码:用于划分子网的二进制序列,不存在于IP地址和数据报首部中。
子网的网络地址:IP地址和子网掩码进行"按位与"运算,比如上图4-19中B类地址145.13.3.10,若子网掩码为255.255.255.0,那么它的子网络地址为145.13.3。
默认子网掩码
A类地址默认子网掩码是255.0.0.0
B类地址默认子网掩码是255.255.0.0
C类地址默认子网掩码是255.255.255.0
B类地址使用主机号的位数划分子网,能够划分的子网数每个子网的主机数,如下图。
在这里插入图片描述
由表中子网数= 2 子网号的位数 − 2 2^{子网号的位数}-2 2子网号的位数2;每个子网的主机数= 2 主机号的位数 − 2 2^{主机号的位数}-2 2主机号的位数2,得出的主机总数没有二级地址直接分配的多,但主打的就是灵活。
例题4-2 已知IP地址是141.14.72.24,子网掩码是255.255.192.0,试求网络地址。
由于子网掩码一级和二级都是255,所以,网络地址的一级和二级是141.14,
72=64+8即01001000,192=127+64+1即11000001,二者"与运算"得01000000即64,因此网络地址为141.14.64。
例题4-3 上题,子网掩码为255.255.224.0,试求网络地址。
224=127+64+32+1=11100001,和01001000进行"与运算"得01000000即64,网络地址仍为141.14.64。
由两个例题可知,子网掩码不同,得出的网络地址也可能相同,但子网数和每个子网的主机数不同。

4.3.2 使用子网时,分组的转发

划分子网时,路由器分组转发算法主要区别如下
1 路由器直接交付时,需要将路由表每个条目的各个子网的掩码IP目的地址D进行"按位与运算",若结果与对应子网的网络地址匹配,则封装成MAC帧进行交付。
2 间接交付时,路由表的每个条目(目的网络地址,子网掩码,下一跳地址)的子网掩码和IP目的地址D进行"按位与运算",若匹配目的网络地址,则转发给对应的下一跳地址。

4.3.3 无分类编址CIDR(构造超网)

1 网络前缀
32位地址分为两部分:第一部分为网络前缀,指明网络;第二部分位主机号,指明主机。
CIDR使得三级地址回到了二级地址。格式如下:
IP地址 ::={<网络前缀>,<主机号>},举例如下图
在这里插入图片描述
CIDR的地址掩码即子网掩码更加灵活,比如/20,那么子网掩码有20个连续1加上12个连续0,为11111111111111111111 000000000000。若还需要划分8个子网,则从主机号取3位,即前缀变为/23。
路由聚合:通过在路由表中查找CIDR地址块来寻找目的网络。举例如下图
在这里插入图片描述
前缀越短,网络地址数越多。即缩短前缀有利于减少路由表条目,增加路由效率。
2 最长网络前缀匹配
路由表由网络前缀和下一跳地址组成。而在IP目的地址和网络前缀"按位与"时,可能会有多个匹配项,此时优先选择最长网络前缀的下一跳地址来进行转发。比如IP目的地址206.0.71.130,它和/22的掩码按位与匹配到206.68.0/22,和/25的掩码按位与匹配到206.0.71.0/25,此时应选择206.0.71.0/25为下一跳地址。
3 使用二叉线索查找路由表
普通查找算法
第1次查找:1位掩码(1)和目的地址"按位与",看路由表是否有匹配的下一跳地址;
第2次查找:2位掩码(11)和目的地址"按位与",看路由表是否有匹配的下一跳地址;
第3次查找:3位掩码(111)和目的地址"按位与",看路由表是否有匹配的下一跳地址;

第32次查找:32位掩码(11111111.11111111.11111111.111111111)和目的地址"按位与",看路由表是否有匹配的下一跳地址;
也就是说,无分类地址最坏的情况下,路由表没有下一跳地址,需要进行32次查找;即使是B类地址/16也要进行16次查找。效率太低了~,这时候就要换个算法了
二叉线索查找路由表
路由表中的下一跳地址的从左至右的比特值看作二叉树从上至下的路径;每个地址都代表二叉树中的唯一路径。如下图
在这里插入图片描述
因为IP地址是32位,所以二叉树需要32层才能表达完所有的地址。而我们可以通过最短唯一前缀来快速定位到路由表中唯一的下一跳地址,从而进行转发。
比如上图中第3个地址,
如果是0,其他地址也有0,不唯一;
如果是01,第1和第2个地址和它一样,不唯一;
只有是011时,其他地址都没有这种前缀,唯一;
虽然0110也是唯一前缀,但为了快速索引,当然选择最短的唯一前缀。

4.4 网际控制报文ICMP

什么是ICMP?
  ICMP(Internet Control Messages Protocol),顾名思义,定义了控制报文的一种协议。
为什么约定这个协议?
  为了更有效的转发IP数据报和提高交付成功几率。
协议格式是怎样的?
  ICMP报文组成:类型字段、代码字段、检验和字段以及数据字段。
  ICMP报文种类:ICMP差错报告报文和ICMP询问报文。
  ICMP报文类型:

4.4.1 ICMP报文种类
类型值类型定义类型简介
3终点不可达
(ICMP差错报告报文)
路由器或主机无法交付数据报,则向源点发送本报文
11时间超过
(ICMP差错报告报文)
路由器收到TTL为0的数据报,则向源点发送本报文;终点限制时间内,完整数据报片未全部到达,则终点向源点发送本报文
12参数问题
(ICMP差错报告报文)
路由器或主机收到数据报的首部存在不正确的字段值,则向源点发送本报文
5改变路由
(ICMP差错报告报文)
路由器定时更新路由表,得到最佳路由路线,则发送本报文到主机
8或0回送(Echo)请求或回答
(ICMP询问报文)
主机或路由器向特定主机测试是否可达,发送本报文
13或14时间戳(Timestamp请求)或回答
(ICMP询问报文)
请求某台路由器或主机当前的日期和时间,则发送本报文

不发送ICMP差错报告报文的情况:
1 对ICMP差错报告报文自己不发送;
2 对第一个数据报片的后续报片不发送;
3 对具有多播地址的数据报不发送;
4 对特殊地址(127开头的、0.0.0.0等)不发送;

在这里插入图片描述

4.4.2 ICMP的应用举例

ping命令
ping命令用于测试网络连通性。因为基于ICMP协议(ping输出的是的icmp_seq请求),所以会用到网络层的IP,而不会用到运输层的TCP、UDP(没有使用到端口)。如下图
在这里插入图片描述
当我ping局域网ip时,生存时间TTL是64跳数;而ping新浪邮箱时,生存时间是51跳数,说明经过了(64-51)=13次路由转发。如下图
在这里插入图片描述
tracepath命令
tracepath命令机制是发送连续的无法交付的UDP数据报。
第一个数据报TTL设置为1,路由器R1收下并TTL减1为0,R1发送时间超过的ICMP差错报告报文;
第二个数据报TTL设置为2,路由器R1收下并TTL减1为1,然后转发到路由器R2,路由器R2收下并TTL减1为0,R2发送时间超过的ICMP差错报告报文;
一直下去,直到数据报到达目的主机且TTL为1,因为是不可交付的数据报,所以目的主机发送终点不可达的ICMP差错报告报文。结果如下图
在这里插入图片描述

4.5 互联网的路由选择协议

4.5.1 路由选择协议的几个基本概念

1 理想的路由选择算法
(1)算法必须是正确的和完整的。也就是说,按照路由选择算法和路由表,分组最终能够到达目的主机。
(2)算法在计算上应简单。不会在通信时增加额外开销。
(3)算法应能适应通行量和网络拓扑的变化。比如各链路负载均衡、链路重新加入网络。
(4)算法具有收敛性。通信量和拓扑相对稳定时,路由转发路径不应该一直变化。
(5)算法是公平的。“众生平等”算法,“心中无感情,路由自然神”。
(6)算法是最佳的。根据情况来选择合适的算法,比如强调可靠交付的、强调时延和吞吐量的。
静态路由选择策略:非自适应路由选择,简单、开销小,人工配置路由,适用于小网络。
动态路由选择策略:自适应路由选择,复杂、开销大,自学习路由功能,适用于大网络。

2 分层次的路由选择协议
互联网主要是自适应、分布式路由选择协议。
原因:
1 互联网太大,所有路由器包含所有网络的路由表,那得炸了;
2 隐私!,有些事情不想让别的网络知道。

拓扑:将互联网划分为n个自治系统(一个大的ISP就是一个自治系统,比如电信移动联通),自治系统之间用外部网关协议EGP(External Gateway Protocol,比如RIP、OSPF),它们之间的路由选择称为域间路由选择;自治系统内用内部网关协议IGP(Interior Gateway Protocol,比如BGP-4),它们之间的路由选择称为域内路由选择
在这里插入图片描述

4.5.2 内部网关协议RIP

1 工作原理
RIP(Routing Information Protocol):分布式的基于距离向量的路由选择协议。因为是分布式,所以每个路由器都要维护自己到每个目的网络的距离记录,这组距离即距离向量
RIP定义:路由器到自己直接连接的网络的距离为1,到目的网络的距离为经过的路由器数量加1。这个距离也叫跳数
RIP用途:规定一条路径只能15个路由器,因此跳数为16即网络不可达,适用于小型网络。
RIP特点
1) 仅和相邻路由器交换信息;
2) 交换信息是:本路由器到本自治系统每个网络的最短距离每个网络的下一跳路由器
3) 按固定时间间隔交换路由信息。
2 距离向量算法
  地址为X的路由器多本路由器发过来RIP报文(包含所有路由表项目),本路由器这样修改所有项目:下一跳地址字段都改为X;距离字段都加1。每条项目关键数据是目的网络N,距离d,下一跳地址X。
修改报文后针对每条项目的顺序步骤:
1)本路由器若无目的网络N。则本路由器的路由表增加含目的网络N的项目;
2) 本路由器若有目的网络N,且下一跳地址也是X。则不管距离字段怎么样,都更新本路由器目的网络为N的项目;
3) 本路由器若有目的网络N,且下一跳地址是P。则对比距离字段,若距离字段值更小,就更新本路由器的目的网络N的项目。
**例题4-5:**路由器R6对应下路由表4-9a,相邻的路由器R4向R6发送RIP报文对应下表4-9b。试更新R6的路由表。
在这里插入图片描述
:首先下一跳路由器都改为R4,距离都加1,如下表

Net14R4
Net25R4
Net32R4

Net1目的网络,R6没有,因此这项目直接加上;
Net2目的网络,R6下一跳地址也是R4,所以直接更新;
Net3目的网络,R6下一跳地址和报文不一样,且报文的距离为2更短,因此更新;
综上,R6更新路由表如下

Net14R4
Net25R4
Net32R4

3 RIP协议的报文格式
RIP报文使用运输层的UDP传送,采用520端口(端口在socket中呈现),个人理解0~65535端口的硬件原理是GPIO复用(“计算机资源皆可GPIO复用”,比如n个kvm虚拟机)。RIP2报文格式如下图
在这里插入图片描述
RIP报文:4字节的首部最多500字节的路由部分组成。
首部:命令表示RIP2报文什么功能,比如请求路由信息等;版本表示版本信息;后面填充0用于4字节对齐。
路由信息:20字节地址标识符表示使用什么地址协议,比如使用IP地址协议时值为2;路由标记填入自治系统号ASN(Autonomous System Number),考虑收到本自治系统外的路由信息;剩下的就是RIP2报文来自哪个网络地址子网掩码、该网络地址的下一跳路由地址以及该网络到本网络的距离
RIP问题:当网络出现故障,需要较长的时间才能将信息传送到所有路由器。

4.5.3 内部网关协议OSPF

OSPF(Open Shortest Path First):开放(公开发表)最短路径优先(最短路径算法SPF)。
是一种分布式的链路协议。
(1)洪泛法:除了刚刚发来消息的路由器外,对其他对所有路由器发送消息。
(2)发送的信息就是与本路由器相邻的所有路由器链路状态(比如和哪些路由器相邻、距离、时延、带宽等,由网关自定义)。
(3 )当链路状态发生改变,才通过洪泛法发送消息。
自治系统内只要发生链路状态的改变,那么就会通过洪泛法让自治系统内所有路由器交换链路状态信息,因此自治系统内每个路由器都有链路状态数据库,即自治系统的拓扑结构图。拓扑结构图在自治系统内是一致的,交换链路状态信息的过程称为链路状态数据库同步
为了将OSPF应用于规模很大的网络,OSPF通过32位标识符区分若干个区域,洪泛法局限于区域内,减少了网络通信量。如下图4-34
区域层次划分:主干区域和边界区域。
主干区域:含有用于连接边界区域的的主干路由器和用于连接其他自治系统的自治系统边界路由器。
边界区域:区域边界路由器,区域内路由器具有该区域的完整拓扑。
OSPF使用IP数据报发送,数据报很短,减少通信量。
在这里插入图片描述

OSPF协议格式如下图4-35
(1)版本:协议版本,当前为2。
(2)类型:5种分组类型之一。
(3)分组长度:包括OSPF首部的某分组类型长度,单位是字节。
(4)路由器标识符:标志发送本OSPF分组的路由器接口的IP地址。
(5)区域标识符:标志所属区域。
(6)检验和:检验分组差错。
(7)鉴别类型:两种,0不用;1口令。
(8)鉴别:鉴别类型为0不用,则鉴别填入0;鉴别类型为1口令,则填入8字符口令。
在这里插入图片描述

OSPF特点:
(1)1~65535个量级的代价。针对实时业务设置为高代价,非实时设置为低代价。
(2)若同一目的网络有多个相同代价的路径,那么将通信量分配给这多个路径,这叫做负载平衡。
(3)所有OSPF路由器间交换的分组都具有鉴别功能,因此保证仅在可信赖的路由器间交换链路状态信息。
(4)OSPF支持可变长度子网和无分类编址CIDR。
(5)每一个链路状态都带上32位序号,序号越大,状态越新。序号增长速率不超过5秒一次。

OSPF5个分组类型:
(1)问候(Hello)分组,维持邻站可达性。
(2)数据库描述(Database Description)分组,向邻站给出自己链路状态数据库中所有条目的摘要信息。
(3)链路状态请求(Link State Request)分组,向对方请求发送某些条目的详细信息。
(4)链路状态更新(Link State Update)分组,利用洪泛法对区域内所有主机更新链路状态。
(5)链路状态确认(Link State Acknowledgment)分组,对链路更新分组的确认。

洪泛法同步,如下图4-37
1 区域内路由器越多,OSPF效率越高
2 只要有一个路由器链路状态数据库发生改变,就发生一次洪泛,同步全区域的路由器
3 OSPF规定每30分钟,更新一次链路状态数据库
4 采用指定路由器的方法,减少广播通信量
在这里插入图片描述

4.5.4 外部网关协议BGP

为什么要有BGP?
1 互联网太大,不同自治系统间路由选择困难。就像发快递,你发一个,我发一个,快递员得累死;设个菜鸟驿站,区域内都发到菜鸟驿站形成“快递数据库”,然后通过菜鸟驿站发到外区域。
2 自治系统间的路由选择必须考虑有关策略。比如有的自治系统网络性能很差、不安全,BGP不选择该自治系统通过。如下图4-38
在这里插入图片描述

BGP怎么工作?
1 因为自治系统间的网关协议,所以路由信息很少,使用路径向量进行路由,比如AS4到AS5的路径是(AS4,AS1,AS3,AS5)
2 BGP发言人即边界路由器
3 BGP发言人收到其他BGP发言人的路径通知,排除掉含有自己的路径,否则会兜圈子

BGP格式?
1 OPEN(打开)报文。与另一个BGP发言人建立通信
2 UPDATE(更新)报文。通告某一路由的信息,以及列出要撤销的路由
3 KEEPALIVE(维持)报文。周期性证实邻站的连通性
4 NOTIFICATION(通知)报文。发送检测到的差错

BGP用途?
主要是UPDATE报文相较于距离向量路由选择算法而言,解决了“坏消息传播慢”的问题。报文格式如下图4-41
在这里插入图片描述
由格式也可看出BGP报文是基于TCP数据报;而RIP基于UDP数据报;OSPF基于IP数据报。

4.5.5 路由器的构成

1 路由器的结构
路由器:具有多组输入和输出硬件端口的专用计算机,用于转发分组。如下图4.42
在这里插入图片描述
路由器分为路由选择分组转发
路由选择:核心构件是路由选择处理机,根据所选的路由协议构造路由表,并定期和相邻路由器交换路由信息,更新路由表。
分组转发:交换结构、硬件输入端口、硬件输出端口。交换结构根据转发表将某个输入端口的分组从合适的输出端口转发出去。
线速:输入端口的处理速率更够跟上线路把分组传到路由器的速率。
有以下两种情况会产生时延,并以队列的形式存储在缓冲区(比如ddos攻击使缓冲区溢出):
1 当输入端口的处理速率跟不上线路传过来的速率时;如下图4-43
2 当输出端口的发送速率跟不上交换结构传过来的速率时;如下图4-44
在这里插入图片描述
在这里插入图片描述
2 交换结构
1 通过存储器交换。若存储器带宽为每秒M个分组,那么路由器的交换速率一定小于M/2,因为输入端口写进入存储器、输出端口从存储器读的速率是一样的;
2 通过总线交换。受限于总线速率;
3 通过内部连接网络交换。像极了基于FPGA的CPLD;
如下图4-45
在这里插入图片描述

IPv6

4.6.1 IPv6基本首部

IPv6数据报:基本首部有效载荷。有效载荷含有n个扩展首部。但扩展首部并部属于IPv6数据报的首部。如下图
在这里插入图片描述
IPv6特点如下:
1 2^128个地址空间。主打一个大而多;
2 扩展的地址层次。地址空间大,分辨率越高;
3 灵活的首部格式。定义了扩展首部,提供更多功能,而路由器又不处理扩展首部,因此提高路由器处理效率;
4 改进的选项。允许数据报包含选项的控制信息,可有更多选项,但IPv6基本首部长度固定,因此更多选项放在有效载荷中;
5 允许协议扩充。新硬件的出现会催生出新的协议,主打一个向后兼容;
6 即插即用PnP。自动配置,无需DHCP;
7 支持资源预分配。实时视频等要求带宽和时延的应用;
8 基本首部8字节对齐
IPv6格式如下图
在这里插入图片描述
(1)版本(version):4bits。协议版本,IPv6该字段为6。
(2)通信量类(traffic class):8bits。区别不同IPv6数据报的类别或优先级。
(3)流标号(flow label):20bits。资源预分配有关。流🈯️互联网络上源地址到目的地址的一系列数据报(音视频传输),流所经过的路径上的路由器都保证特定的服务质量。
(4)有效载荷长度(payload length):16bits。除基本首部外的字节数65536bytes(包含扩展首部)。
(5)下一个首部(next header):8bits。无扩展首部时,表示将数据交给IP的上层某个协议TCP(值为6)或UDP(值为17);有扩展首部时,表示第一个扩展首部的类型。
(6)跳数限制(hop limit):8bits。防止数据报在网络中无限期存在,类似IPv4中的TTL值,最大为255。
(7)源地址:128bits。数据报源IP地址。
(8)目的地址:128bits。数据报目的IP地址。
扩展首部:(1)逐跳选项;(2)路由选择;(3)分片;(4)鉴别;(5)封装安全有效载荷;(6)目的站选项。作用是按需处理选项,大大提高路由器处理效率。

4.6.2 IPv6的地址

(1)单播:传统一对一通信。
(2)多播:一对多通信,IPv6将广播看作特殊的多播。
(3)任播:IPv6新类型,终点是一组计算机,但只交付改组中的一个,通常是距离最近的一个。
冒号16进制表示法:即每16位用冒号隔开:
比如IPv6地址fe80:0000:0000:0000:f0d2:55ff:fece:eed1–>fe80::f0d2:55ff:fece:eed1。
冒号隔开的16位全是0,则可进行缩略:
比如12ab:0000:0000:cd30:0000:0000:0000:0000–>12ab::cd30:0:0:0:0。
多个冒号隔开的16位全是0,则缩略成2个冒号:
比如1111:0000:0000:0000:0000:0000:0000:1111–>1111::1111。
IPv6地址分类如下表
在这里插入图片描述
未指明地址:16个字节全0。::128,类似IPv4的0.0.0.0。
环回地址:::1。作用和IPv4的127.0.0.1类似。
多播地址:功能和IPv4一样。占IPv6地址总数的1/256。
本地链路单播地址(Link-Local unicast address):连接在这样网络的主机都可以使用本地地址进行通信,但不能和互联网其他主机通信,占IPv6地址总数的1/1024。
全球单播地址:既可把128bit作为地址;也可n bit作为子网前缀,128-n bit作为接口标识符(相当于IPv4主机号);还可n bit全球路由选择前缀(适用于外部网关协议BGP),m bit 子网标识符, 128-n-m bit接口标识符。
在这里插入图片描述

4.6.3 IPv4向IPv6过渡

1 双协议栈
即一个主机或路由器既有IPv4地址又有IPv6地址。通过DNS域名系统来判断IPv4还是IPv6。缺点是存在信息损失。如下图4-49
在这里插入图片描述
2 隧道技术
IPv4数据报中封装IPv6数据报,但IPv4协议字段值需为41。
在这里插入图片描述

4.6.4 ICMPv6

IPv6,ARP协议和IGMP协议都合入了ICMPv6中。报文分类如下图4-52
ND(neighbor-discovery)邻站发现协议;MLD(multicast listener delivery)多播听众交付协议。
在这里插入图片描述

4.7 IP多播

4.7.1 IP多播基本概念

只对某个多播组的所有成员发送数据报叫做多播;在互联网进行多播叫做IP多播
能运行多播协议的路由器叫做多播路由器
如下图4.53(b),只在多播路由器时有复制动作,节约资源。当到达目的局域网后,由于局域网的硬件多播(广播是特殊的多播)功能,局域网的多播组成员都能收到数据报。
在这里插入图片描述
1 多播组成员的IP地址与多播标识符关联起来,即加入多播组。
2 多播标识符即D类地址224.0.0.0~239.255.255.255。
3 1个多播地址即1个多播组。
4 多播数据报使用D类地址作为目的地址,且首部的协议字段是2,表示IGMP网际组管理协议。
5 由于多播地址不能作为源地址,所以多播数据报不会产生ICMP差错报文。

4.7.2 在局域网上进行硬件多播

1 IANA(Internet Assigned Numbers Authority)拥有的地址块为00-00-5E,即00-00-5E-00-00-00~00-00-5E-FF-FF-FF。
2 以太网硬件地址第一个字节的最低位为1,为硬件多播地址,即01-00-5E-00-00-00~01-00-5E-7F-FF-FF。
3 如下图5-54,32位的IP多播地址和48位的硬件多播地址不能一一对应,比如224.128.64.32即(E0-80-40-20)和224.0.64.32(E0-00-40-20)转换硬件多播地址01-00-5E-00-40-20。
在这里插入图片描述

4.7.3 网络组管理协议IGMP和多播路由选择协议

加入多播组的拓扑,如下图4-55
在这里插入图片描述
多播四要素
多播组(多播地址):将本机IP和多播地址绑定,从而加入多播组。
多播路由器:可以转发多播消息的路由器。
IGMP网络组管理协议:让多播路由器知道局域网内哪些主机加入或退出了多播组。
多播路由协议:多播路由器之间协同合作,以最小代价将数据报传送给所有的组成员。ß

多播三规则
1 多播转发必须动态适应多播组成员的变化(即使网络拓扑未变化),即只要有成员加入或退出,都要转发分组。
2 多播路由器在转发数据报时,既要知道从哪来,又要知道去哪。
3 多播数据报可以由未加入多播组的主机发出,也可以通过没有组成员的网络。

1 IGMP协议
IGMP协议看作IP协议的一部分。
第一阶段:主机给多播地址发送IGMP报文,声明要成为组成员,本地多播路由器把组成员关系发送给其他多播路由器。
第二阶段:多播路由器周期检测本地主机是否有组成员,若无,则不在转发组成员关系给其他多播路由器。
设计:
1 未加入IP多播的主机不会收到IGMP报文;
2 多播路由器每125秒,只需对所有组发送一个请求信息的询问报文,无需对每个组发送指定报文;
3 一个网络连接多个多播路由器时,能快速选择一个来探询主机的组成员关系;
4 IGMP询问报文有最长响应时间N默认为10,若主机加入多个多播组,时延在0~N,优先响应最小时延;
5 同一多播组内所有主机都要监听响应,主要有一台主机响应了多播路由器,自己就无需再响应;
有一点强调!!!播数据报的发送者和接受者无法找出一个多播组成员有多少,成员是哪些主机;任何主机的任何进程可在任何时候向任何多播组发送多播数据报而无需加入多播组!!
暗…暗网?
2 多播路由协议
多播路由选择:找出以源主机为根结点的多播转发树。
(1)洪泛与剪除。采用路反向路径广播RPB(Reverse Path Broadcasting)的策略,适用于较小的多播组。第一点:本路由器只接受本路由器到源点的最短路径上的多播数据报;第二点:若存在多个最短路径,则在相邻路由器中选择IP地址更小的路由器传来的多播数据报;第三点:若某路由器发现它的下游树枝无多播成员,则把它和下游树枝剪除。如下图4-57
在这里插入图片描述
(2)隧道技术。适用于地理位置分散的情况。比如下图4-58中,网络1和网络2支持多播,但从路由器R1 到路由器R2的链路不支持,因此R1将多播数据报封装到单播数据报中,再由R2剥去首部,恢复成多播数据报。
在这里插入图片描述
(3)基于核心的发现技术。每个多播组G指定一个核心路由器,给出IP单播地址。核心路由器R2创建属于G的多播转发树。若路由器R1发送多播数据报到核心路由器,那么途中经过的路由器都要检查内容。当数据报到达多播组G的R2时,R2处理该数据报,若R1发送的是多播数据报,R2则向多播组G的成员转发;若R1发送的是请求加入多播组的数据报,则R2把信息加入路由,并用隧道技术转发每个多播数据报给R1。
几种多播路由选择协议:距离向量多播路由选择协议DVMRP(Distance Vector Multicast Routing Protocol)、基于核心的转发树CBT(Core Based Tree)、开发最短通路的多播优先扩展MOSPF(Multicast extension to OSPF)、协议无关多播-稀疏方式PIM-SM(Protocol Independent Multicast-sparse Mode)、协议无关多播-密集方式PIM-DM(Protocol Independent Multicast-dense Mode)。

4.8 虚拟专用网VPN和网络地址转换NAT

4.8.1 虚拟专用网VPN

专用地址(private address):互联网中所有路由器,对目的ip地址是专用地址的数据报一律不进行转发。地址范围如下:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
采用这些IP的网络叫做专用互联网,或专用网
利用公用的互联网作为通信载体,这样的专用网成为VPN(vitual private network)。
固定场所A和B使用VPN进行通信,如下图4-59
A需要R1路由器125.1.2.3可通公网;
B需要R2路由器194.4.5.6可通公网;
数据报也需要加密;
即需要每个场所都有软硬件支持。
在这里插入图片描述
流动员工和公司总部VPN通信
使用远程接入VPN(remote access VPN)更方便,通过VPN软件在个人电脑(可访问互联网)和公司主机(可访问互联网)建立VPN通道。举个栗子:wireguard。

4.8.2 网络地址转换NAT

专用网的路由器安装了NAT软件并至少有一个公网IP,这种情况使得专用网内所有主机都可访问公网,这叫NAT(network address translation)。
NAT实现要素
1 NAT地址转换表:将专用网IP和公网IP互相转换,如下表4-11
在这里插入图片描述
2 NAPT网络地址与端口转换:将多个专用IP转换成路由器公网IP的不同端口,提升利用率。如下表4-12
在这里插入图片描述
注意:由于NAT的性质,通信必须由专用网内主机发起,所以NAT内主机无法作为服务器为互联网的主机直接提供服务,但是间接绑定公网IP 什么的还是可以的。

4.9 多协议标记交换MPLS

什么是MPLS?
MPLS(MultiProtocol Label Switching):一种较底层的协议,在MPLS的上层可以采用多种协议。
MPLS怎么工作的?
利用面向连接,使每个分组携带小整数的标记,即打标记。分组到达标记交换路由器时,通过标记值检索分组转发表。
MPLS的优点?
比路由表查询快得多,标记值相当于“八百里加急”。支持面向连接的服务质量;支持流量工程,负载均衡;有效支持虚拟专用网VPN。

4.9.1 MPLS的工作原理

标记交换路由器LSR(Label Switching Router):同时具有标记交换和路由选择的路由器。
MPLS domain域:域中相邻的路由器都是LSR。
面向连接:根据标记确定一条标记交换路径,就像虚连接。
标记交换:一个标记仅在两个LSR之间有效,LSR作转发和更新标记操作,入标记更新为出标记,数据记录在标记转发表中。比如1,9—9,2—2,8—8,3—3,7。
在MPLS域的入口处,给每个IP数据报打上标记,然后对数据报硬件转发,转发时根据标记在链路层用硬件进行转发,在出口处去除标记,之后以普通路由器转发。支持协议PPP、以太网、ATM、帧中继等。如下图4-61
在这里插入图片描述
显式路由选择:由入口LSR确定进入MPLS域以后的转发路径。

**转发等价类FEC(**Forwarding Equivalence Class):路由器按照同样方式对待的IP数据报集合。比如文件传输是低优先级的一类、音视频传输是高优先级的一类,同类的IP数据报采用相同的标记。

通过FEC使网络通信负载均衡,可由网络管理员自由定义。如下图4-62
在这里插入图片描述

4.9.2 MPLS首部的位置和格式

MPLS要么使用专用电路进行传输;要么通过封装IP数据报在常用的以太网上传输。封装的MPLS标记位置如下图4-63
在这里插入图片描述

MPLS首部占4个字节。MPLS格式如下图4-64
在这里插入图片描述

标记值:20位。表示有2^20个流,多如牛毛。
试验:3位。保留用于试验。
栈S:1位。在有“标记栈”时使用。
生存时间TTL:8位。防止MPLS分组在MPLS域中兜圈。

5 运输层

5.1 运输层协议概述

5.1.1进程之间的通信

1 只有主机的协议栈才有运输层,网络中的路由器只用到下三层;
2 运输层的角度看,端到端的通信是进程间的通信。而由于操作系统的多进程并发,运输层也有复用和分用。复用就是端口复用(0~65535),可以有多个进程发送传输。分用就是接收方进行解复用的过程,将接收方的某个端口对应到发送方的某端口;
3 运输层将通信过程抽象成一条逻辑上的直线,网络层为主机间提供逻辑通信;运输层为进程间提供逻辑通信。如下图5-1;
在这里插入图片描述

4 网络层只对IP数据报的首部校验,而运输层会对数据部分进行差错检测;

5.1.2 运输层的两个主要协议

运输层的两种协议:面向连接的可靠传输的TCP(Transmission Control Protocol),无连接的不可靠的UDP(User Datagram Protocol)。TCP是双向奔赴,而UDP是狂轰滥炸,就像深情和舔狗,深情发起3次邀请还没连上,就暂时不连了,而舔狗不管连没连上,都一直发。协议栈位置如下图5-3
在这里插入图片描述

TPDU(Tranport Protocol Data Unit):两个对等运输实体在通信时传输的数据单位叫传输协议数据单元。而根据两种协议分别叫做TCP报文段和UDP用户数据报。由于ping命令的一个数据报是网络层的ICMP协议,所以,ping的一个包不等价于一个传输协议数据单元。

5.1.3 运输层端口

1 应用层所有进程可以通过运输层传送到IP(网络层),即复用。运输层从IP收到发送给各应用进程的数据后,交付给各个指定的应用进程,即分用。而端口复用的硬件基础是网卡的时钟频率足够高。
2 由于操作系统上的应用进程是动态创建和删除的,因此应用进程无法通过进程号进行通信,就从软件层面抽象了协议端口号。软件端口是各个应用层协议进程与运输实体进行交互的一种地址。硬件端口是不同硬件设备进行交互的接口。
3 端口分为源端口和目的端口,顾名思义,源端口是本机出去的端口,目的端口是对方到达的端口。端口又分为熟知端口号(0~1023),即有了规定端口号是用于什么应用协议的,如下表5-2;登记端口号(1024~49151),不广为人知的应用所使用的端口号;短暂端口号(49151~65535),客户端进程运行时使用的随机的临时端口号,进程退出,则端口号注销。
在这里插入图片描述

5.2 UDP用户数据报协议

5.2.1 UDP概述

(1) udp发送数据前无需连接。
(2)udp是不可靠交付的。
(3)udp面向报文的。即不管报文长短,都一次发送一个报文,若报文过于长,会在IP网络层进行分片,但降低了效率;但过于短,IP数据报首部相对长,也降低了效率。如下图5-4
在这里插入图片描述

(4)UDP没有拥塞控制,网络拥塞不会降低源主机的恒定发送速率,多用于IP电话、实时视频等。
(5)UDP支持1对1、1对多、多对1、多对多通信,1对多比如主播的直播视频发送;多对多比如实时弹幕。
(6)UDP首部开销小,8个字节。
由于UDP的特性,适合传输一些模拟的连续性数据,比如音频、视频等;但会容易导致网络拥塞;所以,一般应用进程在不影响实时性的情况下会采用些提高可靠性的措施如前向纠错、重传。

5.2.2 UDP的首部格式

UDP首部格式如下图5-5
在这里插入图片描述

(1)源端口号:需要对方回信时使用,不需要则为0。
(2)目的端口:在终点交付报文时必须使用。
(3)长度:UDP用户数据报的长度,最短为8bytes(仅首部)。
(4)检验和:检验UDP用户数据报传输,若出错,则丢弃。
伪首部用于检验,计算检验和时临时添加,既不向下传递也不向上递交。检验方式和IP数据报类似都是CRC检验,但是IP数据报只检验首部,而UDP全部检验。例子如下图5-7
在这里插入图片描述
注意检验和字段先临时全0填充,得出的检验和结果最后再填进去。无效数据部分也全0填充。

5.3 传输控制协议TCP概述

5.3.1 TCP的主要特点

(1)面向连接的运输层协议。应用程序使用TCP协议前,必须先建立TCP连接;传送数据完毕后必须释放TCP连接。
(2)每一条TCP连接只能有两个端点,只能1对1连接。
(3)TCP提供可靠交付。“慢工出细活”,TCP传送的数据无差错、不丢失、不重复、有序到达。
(4)TCP提供全双工通信。由于双方都设有发送、接受缓存,因此双方可同时发送接受。
(5)面向字节流。这个流指流入到进程或从进程流出的字节序列,发送方的TCP可能10个数据块,但接收方可能4个数据块就接收了。但能保证字节数是一样的。如下图5-8
在这里插入图片描述

TCP根据对方的窗口值和网络拥塞情况来决定1个报文段有多少字节。

5.3.2 TCP的连接

1 TCP连接的端点叫套接字。
2 套接字 socket = (IP:端口号),比如192.168.1.31:80。
3 每一条TCP连接被两个唯一的套接字确定。
4 TCP连接 = {socket1, socket2} = {(IP1:port1), (IP2:port2)},同一个IP地址可以有多个不同的TCP连接,同一个端口号也可以有多个不同的TCP连接。因为socket可以看作一块缓存,所以在机器来说,socket属于分时发送;在人体感受来说,是同时的。
5 其它socket含义,比如socket函数接口、socket调用返回符等等。

5.4 可靠传输的工作原理

TCP层下的网络都是不可靠传输。但我们使用一些可靠传输协议,当出现差错时重传,同时接收方来不及接收时告知发送方适当降低速率。

5.4.1 停止等待协议

停止等待协议即每发送一个分组就等待确认,收到确认后再发送下一分组。
无差错情况和有差错情况如下图5-9

1 无差错即收到确认后再发送下一分组;
2 有差错即A过了指定时间没有收到B的确认信息则超时重传。因此,TCP每发送1个分组就要设置超时计时器。
(1)发送完1个分组后,必须暂时保留已发送的分组的副本,在收到确认信息后才能清除。
(2)分组和确认分组必须编号,才能明确哪个分组收到了确认。
(3)超时计时器的重传时间应该比分组来回时间的平均值高,但受网络拥塞、路由选择等影响。
3 确认丢失和确认迟到
在这里插入图片描述
如上图5-10
确认丢失:A发送M1,B返回“确认M1”的途中首先不确定是丢失还是迟到,反正A在计时器时间内没收到确认M1;A超时重传M1,B第二次收到M1,丢弃这个重复的M1并重传确认M1;A收到确认M1后发送M2。
确认迟到:A发送M1,B返回“确认M1”,但A在在计时器时间内没收到确认M1;A超时重传M1,B第二次收到M1,丢弃这个重复的M1并重传确认M1;A收到B第二次发的确认M1,开始发送M2;之后收到了B第一次发的M1,此时A丢弃迟到的M1。
使用上述重传和确认机制,在不可靠的传输网络上实现可靠通信。这种可靠传输协议叫自动重传请求ARQ(Auto Repeat Request),因为有定时器所以实现了自动。
4 信道利用率
在这里插入图片描述在这里插入图片描述
如上图5-11
TD是A发送分组数据消耗的时间;RTT是传输分组和返回确认的往返时间;TA是发送确认数据的消耗时间;那么信道利用率可得

因此,采用流水线传输,不必等待确认消息,即连续ARQ协议和滑动窗口协议。

5.4.2 连续ARQ协议

在这里插入图片描述
如上图5-13
发送方:发送窗口大小是5,那么在窗口内的5个分组不用等待确认,直接连续发送5个分组。且发送方每收到1个确认,就滑动1个分组位置。
接收方:一般采用累计确认的方式,即不必每接收1个分组就返回1个确认,而是在收到几个分组后,对最后1个分组返回确认,表示窗口内,到该分组为止的分组都确认收到了。
但假设第3个分组丢失了,接收方只能返回前2个分组的确认,发送方无法知道后3个分组的下落,只要重传后3个分组,这种情况叫Go-back—N(回退N),因为前2个分组确认了,所以窗口滑动到3-4-5-6-7,因此,此时窗口的前3个分组重传了,即N<=3。

5.5 TCP报文段的首部格式

TCP面向字节流,但传输的数据单元却是报文段。首部固定长度有20字节,选项占4n字节。TCP格式如下图5-14
在这里插入图片描述
(1)源端口和目的端口:各占2字节,分别填入源端口号和目的端口号。
(2)序号:4字节。0~232-1。序号增加到4294967295后回到0,即mod 4294967296。在一个TCP连接中传送的字节流中每个字节都要按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段的值是本报文段数据部分第1个字节的序号。比如本报文段的序号字段的值是301,数据部分有100个字节。表明数据部分第一个字节的序号是301,最后1个字节的序号是400;那么下一个报文段的序号字段的值则是401,即下一报文段的数据部分的第一个字节序号也为401。
(3)确认号:4字节。期望收到对方下一报文段的第一个数据字节的序号,即下一报文段的序号字段的值。所以,若确认号为N,则表明到序号N-1的字节都正确收到。
(4)数据偏移:4bits。指出数据部分起始处至TCP报文段起始处有多远,即TCP首部的长度。但注意:数据偏移是以4字节为单位计算,而4bits最多表示十进制15,因此TCP首部最长为60字节,即首部的选项最多40字节。
(5)保留:6bits。保留以后使用,目前都置0。
(6)紧急URG(URGent):1bit。URG=1,表示紧急指针字段有效。表明该数据为紧急数据,具有高处理优先级,比如用户键盘输入中断命令Control+C。URG=1的数据会插入到当前在处理的报文段数据的前面,要与紧急指针字段配合。
(7)确认ACK(ACKnowledgment):ACK=1,确认号字段才有效。TCP规定,建立连接后所有报文段ACK都置1。
(8)推送PSH(PuSH):发送方应用进程希望尽快得到响应,则PSH=1,接收方收到PSH=1的报文段会尽快将该报文段交付接收方应用进程。我说:比紧急数据优先级低,比普通数据优先级高。
(9)复位RST(ReSeT):当RST=1时,表明TCP连接出现差错(如主机崩溃)而必须释放连接,而重新建立连接。还可以用来拒绝非法报文段或拒绝连接。
(10)同步SYN(SYNchronization):在连接建立时用来同步序号。SYN=1而ACK=0时,表明这是连接请求报文段。对方若同意,则在响应报文段中设置SYN=1、ACK=1。
(11)终止FIN(FINis):用于释放连接。当FIN=1时,表明此报文的发送方的数据发送完毕,并要求释放运输连接。
(12)窗口:2bits。窗口值0~65536-1。窗口指本报文段的发送方的接收窗口,窗口值告诉对方接收方目前允许对方发送的数据量。比如发送一个报文段,确认号是700,窗口值是1000,告诉对方发送的窗口大小是1000个字节,再多了我就接收异常了。窗口字段明确指出现在允许对方发送的数据量,且窗口值是动态变化的。
(13)检验和:2字节。首部和数据部分都检验,且计算时,在TCP报文段前加上12bytes伪首部,伪首部格式和UDP图5-5一样,但第4字段的17改为6(TCP协议号是6),第5字段的UDP长度改为TCP长度。
(14)紧急指针:2字节。表明紧急数据的字节数。也就指出了紧急数据末尾在报文段中的位置。注意,即使窗口值为0,也可发送紧急数据。
(15)选项:长度可变,最大40字节。选项有比如最大报文长度MSS(Maximum Segment Size)(考虑到信道利用率)、窗口扩大选项(考虑到卫星网络)、时间戳选项(考虑到计算往返时间RTT、区分新报文和迟到报文)、选择确认选项。

TCP可靠传输的实现

5.6.1 以字节为单位的滑动窗口

在这里插入图片描述
如上图5-15
A收到的B的确认报文段中蕴含的信息有确认号为31;窗口大小20字节。
那么A做的处理有:
(1) 清除确认号31之前的字节,因为已经收到确认了,无需保留了;
(2) 31~50的字节都可以发送给B,因为窗口大小为20;
(3) 31~50的字节会保留,因为这个范围的字节还没有收到确认,以便传输失败后,重传;
且A的发送窗口有2中变化可能:
(1)没有收到新的确认报文段,那么A的发送窗口不移动;
(2)收到了新的确认报文段,且窗口值还是20,那么A的发送窗口整体前移;
(3)收到了新的确认报文段,但窗口值小于20,那么可能A的发送窗口后沿前移,而前沿不移动甚至后移。
在这里插入图片描述
如上图5-16
A的三个指针描述发送窗口状态,的含义如下:
(1) 小于P1数据为已收到确认的字节,可清除;大于P3的是不允许发送的字节。
(2) P3-P1=窗口大小。
(3) P2-P1=已发送但未收到确认报文段的字节数,为11个字节。
(4) P3-P2=窗口内允许发送但尚未发送的字节数,9个字节。称为可用窗口。
B虽然收到了32和33两个字节,但不是按顺序收到,且31仍未收到,因此B发送给A的确认报文段的确认号仍是31。
在这里插入图片描述
假设又如上图5-17
A收到确认报文段的确认号是34,代表B已经收到了序号31的字节,那么A的发送窗口整体前移,可用窗口增大,但指针P2不动。
B收到了序号37、38和40的字节,但不是按顺序到达,因此只能暂存到B的接收窗口。
在这里插入图片描述
假设又如上图5-18
A的发送窗口内都是已发送的但未收到确认的字节,可用窗口减小到0,必须停止发送。可能是
1 都发送了但B还都没收到或部分没收到,至少B没收到序号34
2 B都收到了,但确认报文段因网络异常未抵达A
那么A都视作B未收到,直到超时计时器时间到了,重传这部分数据,直到收到确认报文段。
在这里插入图片描述
如上图5-19
发送窗口通常是发送缓存的一部分。
(1)发送缓存用来暂时存放:发送窗口已发送但未确认的字节+发送窗口未发送的字节+发送窗口外不能发送的字节。
(2)发送窗口已发送且确认的字节,发送缓存会清除,即发送窗口的后沿和发送缓存的后沿重合。
(3)发送应用程序最后写入发送缓存的字节数-发送串口最后被确认的字节数=发送缓存中剩下的字节数,因为发送缓存也有大小限制,所以需要控制写入到发送缓存的速率,以免发送缓存没有存放数据的空间。
接收窗口通常是接收缓存的一部分。
(1)接收缓存暂时存放:按序到达但未被接收应用程序读取的字节+未按序到达的字节。
(2)如果接收到字节的速率比接收应用程序读取的速率快,则接收窗口会逐渐减小。因此A的发送窗口大小不一定和B的接收窗口大小一样。
(3)接收方应有累计确认的功能,但时间不应超过0.5秒,不然接收到几个字节就发送确认的话,消耗网络资源;时间太长的话,可能会导致发送方重传。

5.6.2 超时重传时间的选择

TCP记录报文段的发送时间和收到确认的时间,两者之差即往返时间RTT。
RTT的加权平均往返时间即平滑的往返时间RTTS。
第一次测量的RTT即为RTTS,之后的RTTS都按下面公式计算:

0≤α<1。α接近0,则RTT值更新较慢;α接近1,则RTT值更新较快。RFC建议取为0.125。
超时重传时间RTO应略大于RTTS。公式如下:

RTT的偏差的加权平均值即RTTD。公式如下:

β < 1。推荐使用0.25。
为了数据的准确性,采取一下两个措施:
(1)不采集重传报文的样本。
(2)报文每重传一次,新的超时重传时间取为旧的超时重传时间的2倍。

5.6.3 选择确认SACK

选择确认SACK:接收方收到的报文无差错,只是中间缺少一些序号的数据,利用TCP选项字段来选择只重传缺少序号的数据。这个需要双方协定好,发送方怎么响应SACK,RFC文档并未提及。如下图5-21
在这里插入图片描述

5.7 TCP流量控制

5.7.1 利用滑动窗口实现流量控制

在这里插入图片描述
如上图5-22
第一阶段A发送序号201~300,B出现丢失情况,B的确认报文段的窗口字段rwnd=300
第二阶段A由于窗口值是300,只能发送300个字节,B又返回窗口字段rwnd=100
第三阶段A由于窗口值是100,只能发送100字节,B又返回窗口字段rwnd=0
第四阶段A由于窗口值是0,所以无法再发送
第五阶段B由于接受缓存有空间了,返回窗口字段rwnd=400,但丢失了,那么A一直等待非0窗口值,而B一直等待A的数据,死锁了!而时间会解决所有问题,设置持续计时器,只要有一方收到0窗口值,则启动持续计时器,计时器时间一到,就发送0窗口探测报文段(1字节),对方就返回确认时就给出当前的串口值,如果仍是0,则计时器仍然计时,继续发送0窗口探测报文段。

5.7.2 TCP的传输效率

为了提高TCP传输效率,有以下几种方式
(1)最大报文段长度MSS:发送缓存达到MSS,则组成报文段发送出去。
(2)推送:发送方应用进程指明要求发送报文段。
(3)计时器:计时器时间到了,就发送报文段,但长度不能超过MSS。
(4)Nagle算法:先发送1个字节,收到确认后再将发送缓存的所有数据组成1个报文段发送,之后每收到一次确认,才发送报文段。还规定,应用到达发送缓存的数据为发送窗口的一般或为MSS的长度时,立即发送1个报文段。
(5)糊涂窗口综合症:接收方等待一段时间或接受窗口空余一半时,接受方才发送确认报文,并想发送方通知窗口大小。

5.8 TCP的拥塞控制

5.8.1 拥塞控制的一般原理

在计算机网络中的链路容量(带宽)、交换节点中的缓存和处理机等网络资源,若对某一资源的请求超出该资源所能提供的,这种叫拥塞。而防止拥塞的方式就是让网络中的资源都非常均衡,都处于同一能力层、同一频道。
拥塞控制:防止过多数据注入网络中,是网络中的链路和路由器不过载。它是网络整体性的。而流量控制是端对端的,是个体性的。
拥塞过程如下图5-23
在这里插入图片描述
由图可知,并不是提供的负载越大,吞吐量就越高。
计算机网络太复杂,大致可从开环控制和闭环控制。开环控制设计时将网络拥塞因素考虑周全系统运行后就不再改动。闭环控制基于反馈来动态调整,基于计算机网络的动态性,我认为闭环控制更香。

5.8.2 TCP的拥塞控制方法

方法有慢开始(slow-start)、拥塞避免(congestion avoidence)、快重传(fast retransmit)和快回复(fast recovery)。
拥塞控制也是基于窗口的拥塞控制。拥塞窗口的大小取决于网络的拥塞程度。发送方让自己的发送窗口等于拥塞窗口。由于现在通信质量很好,所以,一般出现超时就说明网络拥塞了。
慢开始算法:发送窗口由小逐渐增大,且初始拥塞窗口根据发送方最大报文段SMSS(Sender Maximum Segment Size)来定,RFC 5681规定如下:
SMSS > 2190 bytes,则初始窗口 = 2 x SMSS bytes;
SMSS > 1095 bytes,则初始窗口 = 3 x SMSS bytes;
SMSS ≤ 1095 bytes,则初始窗口 = 4 x SMSS bytes;
之后每收到一个新的报文段的确认后,增加量如下:
拥塞窗口cwnd每次的增加量 = min(N,SMSS)
N是原先未被确认、现在收到的确认报文段所确认的字节数。
拥塞避免算法:每经过1个动态变化的往返时间RTT,就把发送方的拥塞窗口加1。所以需要设置动态阈值sstresh规定如下:
cwnd < sstresh,使用慢开始算法;
cwnd = sstresh,慢开始算法和拥塞避免算法都可;
cwnd > sstresh,使用拥塞避免算法;
如下图5-25
在这里插入图片描述
快重传算法:让发送方尽快知道丢失的报文段,而不是网络拥塞。规定接收方不要等待自己发送数据才返回确认,而是立即发送确认,即使收到失序的报文段也要对该报文段立即发出重复的确认。发送方只要连续收到3个重复的确认,则立即进行快重传。
快恢复算法:发送方调整sstresh的值为拥塞窗口的值的一半,sstresh=cnwd/2。
在拥塞避免算法期间,拥塞窗口线性增大。而一旦出现连续的3个重复确认,sstresh的值就要设为拥塞窗口的值的一半,两者合一即为AIMD算法。流程图如下5-27
在这里插入图片描述
然而接收方的窗口值也限制着发送方的大小,那么根据如下取值
发送方窗口的上限值 = min[rwnd,cwnd]
rwnd是接收方返回的单个确认报文段的窗口值;cwnd是拥塞窗口的值。

5.8.3 主动队列管理

网络层策略对TCP拥塞控制影响最大的就是路由器的分组丢弃策略。路由器的队列通常是“FIFO先进先出”规则来处理分组,当队列已满,则丢弃,即尾部丢弃策略。
在网络中通常有很多TCP连接,若发生尾部丢弃,则影响到很多TCP连接,这许多TCP连接进入慢开始状态,这叫全局同步。
而主动队列管理AQM是为了避免这种现象,设置警惕值,不等队列溢出,达到警惕值就主动丢弃分组,这样就提醒来发送方减慢速率,减轻或不出现网络拥塞。具体实现有多种,经典的有随机早期检测RED(Random Early Detection)。
实现RED需要路由器维持2个参数,即队列最小值和队列最大值。当每一个分组到达时,RED按照规定算法计算平均队列长度
(1)若平均队列小于队列最小值,则把新分组放入队列;
(2)若平均队列大于队列最小值,则把新分组丢弃;
(3)若平均队列在最小值和最大值之间,则按照某一概率p把新分组丢弃。
经实践,该算法不理想,弃之!

5.9 TCP的运输连接管理

TCP面向连接的,所以运输连接有三个阶段:连接建立、数据传输、连接释放。
TCP连接建立解决3个问题:
(1)双方能确知对方的存在,即“双向奔赴”;
(2)允许双方协商一些参数如窗口值、时间戳等,即“互相沟通”;
(3)能够对运输实体资源进行分配如缓存大小等,即“私人空间”;
TCP连接的建立采用客户服务端方式,主动发起连接建立的应用进程叫客户(client),而被动等待连接建立的进程叫服务器(server)。

5.9.1 TCP的连接建立

TCP建立连接的过程叫握手,三报文握手需要交换3个TCP报文段。如下图5-28
在这里插入图片描述
(1)B的TCP服务器进程创建传输控制块TCB,进入LISTEN监听状态,等待客户连接;
(2)A的TCP客户进程创建传输控制块TCB,向B发送SYN报文段(不能携带数据),首部中同步控制位SYN=1,消耗1个序号并设置序号seq=x,进入SYN-SENT同步已发送状态;
(3)B的TCP服务器进程接收到SYN-SENT报文段后,若同意连接,则返回一个同步响应报文段,SYN=1,响应控制位ACK=1,确认号ack=x+1,消耗1个序号seq=y。进入SYN-RCVD同步收到状态;
(4)A的TCP客户进程收到B的响应报文段后,发送确认报文段,ACK=1,seq=x+1,ack=y+1。
确认报文段可以携带数据,并进入ESTABLISHED已连接状态。B收到确认报文段后也进入已连接状态。
三报文握手是为了确定A和B属于“双向奔赴”。

5.9.2 TCP的连接释放

在这里插入图片描述
如上图5-29
(1)A发送连接释放报文段,首部终止位FIN=1,序号seq=u,进入FIN-WAIT-1状态。
(2)B返回确认报文段,ACK=1,序号seq=v,确认号ack=u+1,进入CLOSE—WAIT状态。
(3)A收到确认报文段,进入FIN-WAIT-2状态,等待B的连接释放报文。
(4)B发送连接释放报文段,FIN=1,ACK=1,seq=w,ack=u+1,B进入LAST-ACK状态。
(5)A收到连接释放报文段,返回确认报文段,ACK=1,seq=u+1,ack=w+1,时间等待计时器(TIME_WAIT timer)开始计时,进入TIME-WAIT状态,等待2MSL(最长报文段周期),然后进入CLOSED状态。
(6)B收到确认报文段,进入CLOSED状态。
等待2MSL的理由:
第一,最后A发送给B的确认报文段如果丢失,在2MSL的时间里B可以进行重传连接释放报文段。
第二,防止“已失效的连接请求报文段”出现在本连接中。经过2MSL,本连接持续时间内产生的所有报文段从网络消失,不在传输过程中。
TCP连接释放是四报文握手。TCP还有一个保活计时器(keepalive timer),TCP连接中客户端故障,服务器端启动保活计时器(通常2小时),2小时后每隔75秒发送探测报文,发了10个仍无客户端响应则关闭连接。

5.9.3 TCP的有限状态机

在这里插入图片描述
如上图5-30
方框表示TCP标准状态;粗实线箭头表示客户进程的状态变迁;粗虚线箭头表示服务器进程的状态变迁;细箭头表示异常变迁。
由状态机可知,连接建立时,只需要主动一方发送SYN请求连接报文段和双方的确认报文段,即三报文握手;连接释放时,却需要双方发送FIN连接释放报文段和双方的确认报文段。

第6章 应用层

6.1 域名系统DNS

6.1.1 域名系统概述

WHO?
域名系统DNS(Domain Name System):互联网使用的命名系统。
域名服务器程序:域名到IP地址的解析。
域名服务器:运行域名服务器程序的机器。
WHAT?
DNS用来把名字转换成IP地址。
WHY?
因为对于IP地址的记忆非常困难,所以DNS将名字和IP的转换,便于人们记忆。而处理数据报时,由于IP地址是定长的,便于机器处理。DNS采用联机分布式数据库系统。因为互联网非常庞大,单个DNS系统损坏则导致整个网络瘫痪。
WHERE?
因为是数据库形式,所以DNS在本地解析,仅少量解析需要在互联网通信。并且是分布式,所以单个计算机故障不会影响整个网络。
WHEN?
当某个应用进程需要将主机名解析为IP地址时。
HOW?
应用进程调用解析程序(resolver)并成为DNS的客户,把待解析的域名放入DNS请求报文中,以UDP方式(减少开销)发给本地域名服务器。本地域名服务器查找域名后,把对应的IP地址放在回答报文中。应用进程获得解析后的IP后即可通信。

6.1.2 互联网的域名结构

WHAT?
域名:任何一个连接在互联网的上的主机或路由器,都以一个唯一层次结构的名字。域还可划分子域,所以分为顶级域、二级域、三级域等。
域名由多个标号(label)组成,标号之间由小数点隔开。
标号由字母和数字组成,不超过63个字符,不区分大小写。标号除连字符号-外,不能使用其它符号。
级别最低的域名在最左边,级别最高的域名在最右边。完整域名的字符不超过255个。
各级域名由上一级域名管理机构管理。顶级域名由ICANN(Internet Corporation for Assignment of Names and Numbers)管理。
顶级域名分3类:
(1)国家顶级域名:如cn表示中国、us表示美国等。
(2)通用顶级域名:com公司、net网络服务器机构、org非盈利组织、int国际组织、edu美国专用教育机构等。
(3)基础结构域名:arpa用于反向域名解析,又叫反向域名。
ICANN在2013启用新顶级域名,任何公司机构都可申请(有钱就行)。
国家域名下的二级域名由该国自行确定。我国二级域名分为类别域名7个(如ac科研机构、com企业、edu教育、org非盈利组织等)和行政域名34个(如bj北京、js江苏等)。
域名空间结构如下图6-1
在这里插入图片描述

6.1.3域名服务器

区(zone):一个服务器所负责管辖的范围。
权限域名服务器(authoritative name server):每个区有一个,保存该区中所有主机域名到IP地址的映射。区小于等于域。如下图6-2
在这里插入图片描述
适当减少域名服务器的个数,使得域名系统运行效率更高。
域名服务器分四种类型:
(1)根域名服务器:最高层次的域名服务器,所有根域名服务器都知道所有顶级域名服务器的域名和IP。任何本地域名服务器如果无法解析,就要求助于根服务器。几百个根域名服务器只使用13个不同的IP和域名,一个(一组)根域名服务器只有一个IP和域名,但会有n个机器。采用任播(anycast)技术,根域名服务器尽可能均匀分布在世界各地。如下图6-4
在这里插入图片描述
(2)顶级域名服务器:负责管理注册在该顶级域名服务器的二级域名,直接返回解析或下个要寻找的域名服务器IP。
(3)权限域名服务器:负责一个zone区的域名服务器。当一个权限域名服务器无法解析时,会告诉查询主机去找下一个权限域名服务器。
(4)本地域名服务器:一台主机发出DNS查询请求时,查询请求报文就发给本地域名服务器。每个ISP、大学甚至是系都可以拥有本地域名服务器。windows配置IP时的首选DNS服务器比如114.114.114.114和备用DNS服务器就是指本地域名服务器。本地域名服务器一般距离不超过几个路由器。当要查询的主机属于同一个本地域名服务器时,直接返回解析,无需询问别的域名服务器。
为了可靠性,DNS域名服务器都把数据复制到几个域名服务器保存,一个为主域名服务器(master name server),其它为辅助域名服务器(secondary name server)。

第一,主机向本地域名服务器使用递归查询(recursive query),即如果本地域名服务器查询不到,则本地域名服务器作为DNS客户,向其它根域名服务器发出查询请求报文。
第二,本地域名服务器向根域名服务器使用迭代查询(iterative query),即如果根域名服务器查询不到,则告诉本地域名服务器,下一步要查询的域名服务器。一般先给出顶级域名的IP,若查不到,则顶级域名服务器给出权限域名服务器的IP,再查询。
也就是说递归查询是1对1,迭代查询是1对多。如下图6-5
在这里插入图片描述
为了提高效率,设置连高速缓存,用于保存最近查询过的域名以及从哪里获得域名映射信息的记录。由于域名和IP的映射不常变化,因此高速缓存可以设置计时器比如两天来定时删除缓存。甚至许多主机启动时从本地域名服务器下载名字和地址的全部数据库,维护自己的高速缓存,缓存中没有时才请求本地域名服务器。

6.2 文件传送协议

6.2.1 FTP概述

FTP(File Transfer Protocol):提供交互访问,允许客户指明文件类型和格式如是否使用ASCII码,允许文件的权限设置。适合异构网络中任意计算机间传送文件。

基于TCP的FTP和基于UDP的TFTP都是文件共享协议中的一大类,即复制整个文件,特点是先下载、再修改、后上传。
另一大类是联机访问。多个程序可以同时对一个文件存取。由操作系统提供(透明存取)对远程共享文件访问,就像访问本地文件一样。比如基于TCP的网络文件系统NFS(Network File System)。

6.2.2 FTP的基本工作原理

远程复制文件的难题:
(1)存储数据的格式不同
(2)目录结构和文件命名规则不同
(3)对于相同的文件存取,操作系统使用的命令不同
(4)访问控制方式不同
FTP使用客户服务端方式。一个FTP服务端进程(一个接受新请求的主进程,多个处理单个请求的从属进程),多个客户端进程。
在这里插入图片描述
如上图6-6
客户端和服务端都有控制进程和数据传送进程,控制进程通过21端口保证控制连接,数据传送进程通过20端口来进行传输数据。

FTP每次都要传送整个文件,当文件很大且改动很少时,就显得没有效率了。
而NFS允许应用进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。
非常适合在网络上传送少量的修改数据。
linux中客户端使用ftp命令连接ftp服务器。如下图
在这里插入图片描述
linux中客户端使用sftp命令连接ftp服务器。如下图
在这里插入图片描述

6.2.3 简单文件传送协议TFTP

TFTP(Trivial File Transfer Protocol):基于UDP,所以需要自己的差错改正措施。不支持交互。没有命令集、无法列出目录、无法对用户鉴别。
优点有2个:
(1)可用于UDP环境,比如需要将程序或文件向许多机器下载时。
(2)代码占内存少,对嵌入式机器很重要,将TFTP、UDP、IP固化在只读存储器中即可。嵌入式机器接通电源后,广播TFTP请求,TFTP服务器就响应,发送可执行二进制文件。嵌入式机器收到文件后放入内存,开始运行程序。比如TFTP 加载uboot程序

TFTP特点:
(1)每次传输的数据报文为512字节,最后一个可不足512字节
(2)数据报文按序编号,从1开始
(3)支持ASCII码或二进制发送
(4)可对文件读写
(5)首部简单
TFTP很像停止等待协议,收到确认再发下一报文。
TFTP客户进程通过69端口给TFTP服务器发送请求读或写报文。TFTP服务器选择一个新端口进行通信,若文件数据恰好是512字节整数倍,则文件传送完后,最后发送只有首部的数据报文;若不然,则最后一个报文中一定不满512字节,正好作为结束标志。
linux使用tftp客户端连接服务端,并获取文件。如下图
在这里插入图片描述

6.3 远程终端协议TELNET

TELNET:终端仿真协议,将远端主机的输出透明传输到本机。
网络虚拟终端NVT:规定一个虚拟统一接口来传输数据和命令。如下图6-7
在这里插入图片描述
可打印字符和ASCII码一样。控制字符33个,其中只有几个和ASCII一样,其它是自定义的。因此,TELNET客户端和服务端需要将控制字符转换为机器可识别的字符。
ubuntu安装服务端软件包后,可通过客户端telnet命令登录。如下图
在这里插入图片描述

6.4 万维网WWW

6.4.1 万维网概述

WWW(World Wide Web):分布式超文本系统、超媒体系统。通过点击超链接获取文本和媒体资源。客户服务器方式通信。

  1. 怎么标志整个互联网的文档?万维网使用统一资源定位符URL
  2. 怎么实现万维网的链接?超文本传送协议HTTP(HyperText Transfer Protocol),TCP连接。
  3. 怎么显示链接?超文本标记语言HTML(Hyper Text Markup Language)。
    如下图6-8
    在这里插入图片描述
6.4.2 统一资源定位符
  1. URL格式
    URL一般形式由以下四部分组成:
    <协议>://<主机>:<端口>/<路径>
    协议有http、ftp等;
    主机是网络上的域名或ip;
    端口和路径有时省略。
  2. 使用http的URL
    URL不区别大小写。比如下图的URL
    在这里插入图片描述
6.4.3 超文本传送协议HTTP
  1. HTTP的操作过程如下图6-9
    在这里插入图片描述
  2. 代理服务器
    代理服务器是一个网络实体,又称为万维网高速缓存
    将最近请求过的页面暂存,提供给客户访问。如下图6-11
    在这里插入图片描述
  3. HTTP报文结构
    请求报文:客户到服务端。
    响应报文:服务端到客户端。
    如下图6-12
    在这里插入图片描述
    开始行:区分请求报文还是响应报文。
    请求报文的一些方法即一些操作命令。如下表6-1
    在这里插入图片描述
    请求报文的例子如下图
    在这里插入图片描述
    状态码都是3位数,有5大类。如下图
    在这里插入图片描述
  4. 在服务器上存放用户的信息
    使用一个cookie识别码来标记用户,并以此为索引在后盾啊数据库产生一个项目,如果用户输入了姓名、银行卡账号等信息都会被记录。所以网站一般会提醒你是否开启cookie的使用。
    ubuntu搭建一个简单的http服务器,供下载文件。如下图
    在这里插入图片描述
6.4.4 万维网的文档

1.超文本标记语言HTML
*超文本标记语言(HypeText MarkUp Language)*是一种制作万维网页面的标准语言。以下文本显示的内容如下图

<HTML>
<HEAD>
<TITLE>这只是HTML的例子,啊哈!</TITLE>
</HEAD>
<BODY>
<H1>有点意思</H1>
<P>第一段</P>
<P>第二段</P>
</BODY>
</HTML>

在这里插入图片描述
HTML还允许插入图像,即内含图像。格式一般是GIF和JPEG。
HTML规定了链接的起点和终点,起点即页面中的字、图等,链接的终点即其它网站的页面,叫做远程链接,这时必须指定URL。链接指向本机中的某个文件或某个位置,叫本地链接
还有其它浏览器相关语言。XML设计宗旨是传输数据;*XHTML(Extensible HTML)逐渐取代HTML;HTML用于结构化内容,而CSS(Cascading Style Sheets)*用于格式化结构化的内容。

2.动态万维网文档
上面讨论的是静态文档,用于每次读取文档返回的内容都相同。
动态文档是指文档内容是浏览器访问服务器时由应用程序动态创建。浏览器请求到达,万维网服务器运行另一个应用程序,该应用程序处理请求数据,并输出HTTP格式的文档,万维网服务器将程序输出作为对浏览器的响应。
有2个问题
1)需要编程人员编写应用程序处理浏览器请求并创建动态文档
2)增加机制,使得万维网服务器将浏览器发过来的数据传给应用程序,且能解释应用程序的输出,并返回HTML文档给浏览器
机制是通用网关接口CGI(Common Gateway Interface)。是一种标准,定义动态文档如何创建,输入数据如何给应用程序,输出结果如何使用。
符合CGI标准的程序即CGI程序,可由任何语言编写。有一些定义好的变量和调用供其它CGI程序使用。如下图6-14
在这里插入图片描述
CGI程序又叫CGI脚本,常用的脚本语言有Perl、JavaScript、PHP等。因为脚本语言需要解释器,所以比直接执行的二进制程序慢很多。脚本不一定是独立程序,也可以是动态库甚至是服务器的子程序。

3.活动万维网文档
1 服务器推送技术,服务器不断更新并定期发送文档,对服务负荷很大。
2 活动文档技术,工作都转给浏览器请求端,每当浏览器请求一个活动文档,服务器就返回活动文档程序的副本,使该程序副本在浏览器端运行。这样,活动文档程序直接与用户交互,并可连续改变屏幕显示。如下图6-15
在这里插入图片描述

这特么要是发个病毒程序不得完?

6.4.5 万维网的信息检索系统

1.全文检索搜索与分类目录搜索
如果不知道URL就需要搜索工具,万维网的搜索工具叫搜索引擎。分为全文检索搜索引擎和分类目录搜索引擎。
全文检索搜索引擎原理是通过Spider蜘蛛程序到互联网各网站收集信息,找到一个网站后从该网站链接到另一个网站,按照一定规则建立很大的在线索引数据库供用户查询。优点是量大;缺点是准确性不够。
分类目录搜索是网站收录各种类别的URL并分门别类,供用户搜索。优点是更准确;缺点是量小。
如下图6-16
在这里插入图片描述

目前基本上网站对两种搜索方式都提供。
垂直搜索引擎返回结果更倾向于信息、条目、价格等,比如购物平台。
元搜索引擎把检索请求发送到多个独立引擎,并将结果集中处理,以统一格式提供给用户,因此查全率和查准率都比较高。
2.谷歌搜索技术特点
对指向的网页链接进行加权统计,指向A网页的链接最多就排第一,而互联网的网站链接假设有1亿,那么需要计算1亿x1亿的二维矩阵,通过稀疏矩阵计算和迭代解决了计算量问题。

6.4.6 博客和网站

1.博客blog记录自己个人的文章、笔记等,供他人浏览下载。比较容易为广大网友上手。
2.微博发表一些短的感想、生活图片、图像等。

6.4.7 社交网站

在线社区、Facebook、优酷、Twitter、YouTube、领英等。目前我国最常用是微信:聊天、视频、转账、各种微应用等等。

6.5 电子邮件

6.5.1 电子邮件描述

电子邮件是网上最受欢迎的应用。把邮件发到收件人的邮件服务器,并放在收件人邮箱中。即电子信箱
电子邮件两个重要标准:简单邮件传送协议SMTP(Simple Mail Tranfer Protocol)互联网文本报文格式
为了传输音频、视频图像,提出了通用互联网邮件扩充MIME(Multipurpose Internet Mail Extensions)。
电子邮件系统三个组成:用户代理邮件服务器邮件发送协议SMTP和邮件读取协议POP3(Post Office Protocol 3)。如下图6-17
在这里插入图片描述

用户代理UA(User Agent)就是运行在用户电脑的程序,又称为电子邮件客户端软件。网络上常见的有微软Outlook Express,张小龙的Foxmail。基本需要具备以下4个功能:
1)编辑
2)显示
3)处理
4)通信
格式:
用户名@邮件服务器的域名
比如xyz@abc.com,且用户名在邮件服务器中必须唯一。

6.5.2 简单邮件传送协议SMTP

发送邮件的是SMTP客户,接受邮件的是SMTP服务器。SMTP规定了14个命令和21种应答信息。命令由字母组成,应答信息由3位数字加简单文字说明(或不加)。
1.连接建立
不使用SMTP中间服务器。
2.邮件传送
3.连接释放

6.5.3电子邮件的信息格式

格式介绍如下图
在这里插入图片描述

6.5.4 邮件读取协议POP3和IMAP

IMAP(Internet Message Access Protocol)是网际报文存取协议。邮件存储在IMAP服务器,浏览操作服务器的邮件。
POP3邮件存储在本地客户端,浏览操作在本地客户端。主要功能比较如下表6-2
在这里插入图片描述

IMAP和POP3都是邮件读取协议,SMTP是邮件发送协议,只不过这3个协议有客户端和服务端程序。

6.5.5 基于万维网的电子邮件

在浏览器登录邮件网页,就可以使用电子邮件比如main.163.com。只是浏览器和邮件服务器之间使用http协议;而各邮件服务器之间使用SMTP协议。

6.5.6 通用互联网邮件扩充MIME

1.MIME概述
SMTP缺点如下
1)无法传送可执行文件或其它二进制对象
2)只能传送7位的ASCII码
3)SMTP服务器会拒绝超过一定长度的邮件
4)某些SMTP的实现没有完全遵循SMTP互联网标准
MIME兼容SMTP,所以程序和协议可继续使用。关系如下图6-18
在这里插入图片描述

MIME主要完成以下3个功能:
1)5个新的首部字段,包含在原来的邮件首部中
2)定义了许多邮件内容格式,对多媒体电子邮件的表示方法进行标准化
3)定义了传送编码,可对任何内容格式进行转换

5个首部字段如下:
1)Content-Description:可读字符串,描述邮件主体是图像、音频、视频
2)Content-Id:邮件唯一标识符
3)Content-Transfer-Encoding:编码方式
4)Content-Type:邮件主体的数据类型和字类型

2.内容传送编码
Content-Transfer-Encoding常用有3种。
1)7位ASCII码。每行不超过1000字符,不进行转换
2)quoted-printable。对于可打印的常见ASCII码不转换。特殊ASCII码“=”,不可打印的ASCII码以及非ASCII数据(各种文字)编码方法:每个字节的高4位和低4位二进制用1位十六进制表示,然后在每个字节前加上等号“=”。比如汉字“系统”的二进制编码是“11001111 10110101 11001101 10110011”,十六进制则为“CFB5CDB3”。quoted-printable编码则为“=CF=B5=CD=B3”,数据量是原来的3倍。
3)base64编码。先把二进制代码划分为一个个24位长的单元,每个单元分为4个6位二进制码,每个6位二进制码转换成ASCII码,方式是:6位二进制码可表示64种不同的值,从0到63。0表示A,1表示B等。先表示大写,再表示小写,再表示数字,“62”表示“+”,63表示“/”。“==”表示最后一个单元只有8位;“=”表示最后一个单元只有16位。例子如下图
在这里插入图片描述

3.内容类型
MIME标准规定Content-Type必须有两个标识符,即内容类型字类型,中间用“/”分开。如下表6-3
在这里插入图片描述
在这里插入图片描述

multipart四种字类型:
1)mixed,允许单个报文含有多个相互独立的报文,每个子报文可有自己的类型和编码。比如,在单个报文中附上文本、图形和声音
2)alternative,允许单个报文含有同一数据的多种表示。比如用户可查看普通的ASCII文本和格式化形式(图形化)
3)parallel,允许单个报文含有可同时显示的各个字部分。比如图像和声音必须一起播放
4)digest,允许单个报文含有其它报文。比如,从评论中收集电子邮件报文

6.6 动态主机配置协议DHCP

DHCP(Dynamic Host Configuration Protocol):提供一种机制,称为即插即用连网(Plug and Play networking),允许一台计算机加入新的和获取IP地址而不用手动设置。
DHCP采用客户服务器方式,DHCP客户对网络广播发送发现报文(DHCPDISCOVERY)即目的IP地址为255.255.255.255,源IP地址为0.0.0.0,只有DHCP服务器会应答。DHCP服务器先在数据库查找之前是否配置过,若有,返回信息;若无,从IP地址池(address pool)取空闲ip分配给DHCP客户。DHCP的回答叫提供报文(DHCPOFFER)
DHCP中继代理用于大型网络(有许多小网络),避免设置太多DHCP服务器。它接受DHCP客户的广播报文,以单播形式像DHCP服务器发送DHCPDISCOVER发现报文。如下图6-19。实际上报文还需要加上UDP首部、IP首部和MAC帧的首尾部。
在这里插入图片描述

DHCP服务器分配的IP地址是临时的,因此DHCP客户只能在一段时间内使用这个IP地址,DHCP把这个时间叫做租用期(lease period)。租用期由DHCP服务器决定。工作过程如下图6-20。客户端UDP端口是68,服务器UDP端口是67。
在这里插入图片描述

上图编号解释如下:
1)DHCP服务器打开UDP端口67,等待客户端报文
2)DHCP客户端从UDP端口68发送DHCP发现报文
3)凡收到DHCP发现报文的DHCP服务器都发出DHCP提供报文,因此DHCP客户可能收到多个DHCP提供报文
4)DHCP客户从几个DHCP服务器中选择一个,并发送DHCPREQUEST请求报文
5)被选择的DHCP服务器发送DHCPACK确认报文,此时,DHCP客户端就可以使用这个IP地址,这种状态叫已绑定状态。DHCP客户端根据租用期T设置超时定时器T1和T2,分别是0.5T和0.875T,超时定时器计时到了,就要请求更新租用期
6)租用期时间过了一半,DHCP客户端发送请求报文,请求更新租用期
7)DHCP服务器若同意,则发回确认报文。DHCP客户得到新的租用期并重新设置超时定时器
8)DHCP若不同意,则发回否认报文DHCPNACK。此时DHCP客户立即停止使用原来的IP地址,而重新申请IP地址(回到步骤2)
9)DHCP客户可以随时终止服务器所提供的租用期,只需要向DHCP服务器发送释放报文DHCPRELEASE

6.7 简单网络管理协议SNMP

6.7.1 网络管理的基本概念

网络管理包括对硬件、软件和人力的使用、协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,以合理的价格满足网络需求,如实时性能、服务质量等。网络管理简称为网管。
管理站又称为管理器,是整个网络管理系统的核心,通常是有着良好图形界面的工作站,由网络管理员直接控制。管理站所在部门常称为网络运行中心NOC(Network Operation Center)。管理站中的关键构件是管理程序。运行时的管理程序即管理进程。拓扑如下图6-21
在这里插入图片描述

被管设备可以是主机、路由器、打印机、集线器、网桥或调制解调器等。被管对象可以是硬件或软硬件配置参数的集合。被管设备中运行的程序叫代理
SNMP中的管理程序和代理程序以客户服务器方式工作。管理程序运行SNMP客户程序,代理程序运行SNMP服务器程序
网络管理基本原理:若要管理某个对象,就必然会给该对象添加一些软件或硬件,但这种“添加”对原有对象的影响必须尽量小
SNMP基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。在网络正常工作时,SNMP可实现统计、配置和测试等功能。当网络出故障时,可实现各种差错检测和回复功能。
SNMP的网络管理由三个部分组成,即SNMP本身、管理信息结构SMI(Structure of Management)管理信息库(Management Information Base)
SMI定义命名对象和定义对象类型的通用规则,以及把对象和对象的值进行编码的规则
MIB在被管理的实体中创建了命名对象,并规定其类型。

6.7.2 管理信息结构SMI

SMI的功能规定如下:
1)被管对象命名方式
2)被管对象的数据类型有哪些
3)在网络上传送的管理数据应如何编码
1.被管对象的命名
所有被管对象都必须处在对象命名树上。如下图6-22
在这里插入图片描述

根无名字,0对应itu-t,1对应iso,org对应3,dod对应6,internet对应1,mgmt对应2,mib-2对应1,所以1.3.6.1.2.1对应名字iso.org.dod.internet.mgmt.mib-2。mib-2下面包含了所有被SNMP管理的对象。
2.被管对象的数据类型
数据类型有2类:简单类型和结构化类型。简单类型如下表6-4
在这里插入图片描述

结构化数据类型有sequence(类似c语言结构体,成员不一定是同一类型)和sequence of(类似数组,成员是同一类型)。
3.编码方法
SMI使用基本编码规则BER进行编码。数据类型和数据值的定义使用3个字段组成的序列:T-L-V。T(Tag)字段定义数据的类型,L(Length)字段定义数据的长度,V(Value)字段定义数据的值。如下图6-23
在这里插入图片描述

1)T又叫标记字段,占1字节。T又分为以下3个字段:
类别2bit:通用类00,ASN.1定义的类型;应用类01,SMI定义的类型;上下文类10,上下文所定义的类型;专用类11,特定厂商定义的类型。
格式1bit:简单数据类型0;结构数据类型1。
编号5bit:标志不同的数据类型,0~30,大于30,T就要扩展多个字节。
T字段数据类型编码如下表6-5
在这里插入图片描述

2)L又叫长度字段,单字节或多字节。L为单字节时,最高位为0,低7位定义V字段的长度;L为多字节时,最高位为1,低7位定义L后续字节数,后续字节的值定义V字段的长度。如下图6-24
在这里插入图片描述

3)V又叫值字段,定义数据元素的值。
综上举例。INTEGER 15:由表6-5得T字段是02;由表6-4得INTEGER占4字节,得L字段是04;由值是15,得V字段是00 00 00 0F,综合TLV为02 04 00 00 00 0F。
比如IPAddress 192.1.2.3:IPAddress得,T字段是40;由192.1.2.3知,V需要4字节,得L字段是04,V字段是C0 01 02 03,综合TLV为40 04 C0 01 02 03。
V字段还可以层层嵌套其它数据元素的TLV字段。

6.7.3 管理信息库MIB

管理信息指在互联网的网管框架中被管对象的集合。被管对象构成了虚拟信息存储器,所以才称为信息库MIB。管理程序就使用MIB中这些信息的值对网络进行管理(如读写这些值)。
由图6-22可知,节点mib-2下的ip对象数值是1.3.6.1.2.1.4。
在这里插入图片描述

ip节点下有个InReceives的MIB变量,表示收到的IP数据报数。标号是3,所以数值是1.3.6.1.2.1.4.3。变量名是iso.org.dod.internet.mgmt.mib-2.ip.ipInReceives。后缀为0则是该MIB变量的实例,数值是1.3.6.1.2.1.4.3.0。

6.7.4 SNMP的协议数据单元和报文

SNMP基本只有2种管理功能:
(1)读操作,Get报文获取被管对象的状况
(2)写操作,Set报文改变被管对象的状况
这些操作使用探询来实现,但一直探询却没有得到有用信息就不礼貌了,因此还允许不探询发送某些信息,这种信息称为陷阱(trap)。当被管对象的代理检测到有事件发生,就检查门限值,代理就只向管理程序报告达到门限值的事件,即过滤
SNMP使用UDP传输。服务端被管对象的代理程序使用161端口接受Get报文、Set报文和响应报文,客户端的管理程序使用临时端口;但是客户端的管理程序使用162端口接受被管对象代理程序的trap报文。
SNMP定义协议数据单元类型如下表6-8
在这里插入图片描述

SNMP报文没有固定的字段,由4个部分组成:版本、首部、安全参数和数据部分。首部包括报文标识(identification)、最大报文长度、报文标志(flag)。如下图6-25
在这里插入图片描述

(1)请求标识符(request ID),管理进程设置的4字节整数值。被管对象的代理进程发送响应报文时也要返回此标识符。
(2)差错状态(error status),在请求报文中,这个字段是0。被管对象的代理进程发送响应报文时,填入0~18中的一个数字,表示状态。0表示noError,1表示tooBig,2表示noSuchName等等。
(3)差错索引(error index),在请求报文中,这个字段是0。被管对象的代理进程发送响应报文时,出现noSuchName、badValue或readOnly的差错时,代理进程就设置1个整数,指明差错变量在变量列表中的偏移。
(4)变量绑定(variable-bindings),指明一个或多个变量的名称和值。在请求报文中,变量的值应忽略(类型是NULL)。
在这里插入图片描述

例子:假设管理者发送GetRequest-PDU,获取代理进程的“收到UDP数据报数目”的信息。如下图
在这里插入图片描述

InDatagrams变量是第1个,所以节点标识符为1.3.1.1.2.1.7.1.0(因为变量处于叶节点,所以7后面加个0)。可得出GetRequest-PDU的ASN.1编码图如下图6-26
在这里插入图片描述
最终的16进制编码如下图
在这里插入图片描述
世上本无书,实践多了,就总结成书!我以有涯学无涯:碰到了再找书,从而理论指导实践!
简而言之,就是看书太无聊了,实操有意思点!!!不看了!我顿悟了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值