本文旨在总结在个人学习自认为比较重要且可作为常识来记忆的内容,外加一些个人理解。另外比如传输层、链路层各协议帧结构等虽是重要内容,但因其不好记忆就不在这里总结了,具体还是看书吧~
计算机网络主要性能指标
带宽
通信线路中允许通过的信号频带范围,单位赫兹(Hz),亦表示网络通信线路传输数据的能力,“最高数据传输速率”的同义语,单位比特/秒(b/s)
时延
数据从网络一端传送到另一端所需要的总时间,4部分组成:发送时延、传播时延、处理时延和排队时延。
发送时延
结点将分组所有比特推向链路所需的时间,也称传输时延。发送时延=分组长度/带宽
传播时延
比特以电磁波的形式在链路中的传播耗时。传播时延=信道长度/电磁波在信道的传播速率(光速)
处理时延
数据在交换结点为存储转发而进行的一些必要的处理时间。如分析分组首部、从分组中提取数据、差错检验、查找路由等。
排队时延
分组进入路由器后在输入队列、输出队列的排队时延
综上,总时延=发送时延+传播时延+处理时延+排队时延
时延带宽积
发送端发送的第一个比特即将到达终点时,发送端发送了多少比特,又称以比特为单位的链路长度。时延带宽积=传播时延*带宽
往返时延(Round-Trip Time, RTT)
从发送端发送数据开始,到发送端收到来自接收端的确认,总共经历的时延。往返时延包含处理时延、排队时延、发送时延、传播时延。
信道利用率
某一信道有百分之多少的时间是有数据通过的,信道利用率=有数据通过的时间/(有+无)数据通过的时间
计算机网络之物理层
码元
一个固定时长的信号波形用于表示一位k进制数字,比如2进制码元只有0状态和1状态。
波特(Baud)
码元传输速率(波特率),单位时间内信号变化的次数(单位时间内传输的码元个数)
奈氏准则(奈奎斯特定理)
信号在传输过程中存在衰减,导致接收端收到的信号波形失去码元之间的清晰界限,这种现象称之为码间串扰。即可以理解为频率越高,若发生衰减,码元之间的界限越模糊,信号的频率(码元传输速率)是有限的。奈氏准则规定,在理想低通(没有噪声,带宽有限,不失真的通过信道)信道中,为避免码间串扰,极限码元传输速率为2W波特,W为信道带宽。其推倒过程已超纲,属通信范畴,不必纠结。
极限传输速率=2Wlog2V,单位b/s,V表示码元的离散电平个数,比如4个二进制位表示一个码元,则V=16
香农定理
香农定理给出了信道极限传输速率与信噪比(传输信号的平均功率/噪声功率)、带宽之间的关系。
极限传输速率=Wlog2(1+S/N),S为信道传输信号平均功率,N为信道噪声功率。
个人总结:若一个码元对应的二进制位数越多,其信道传输功率越低,继而传输速率越低。故香农定理表明一个码元对应的二进制位数是有限的。
编码与调制
把数据变为模拟信号的过程称为调制,把数据变为数字信号的过程称为编码。
个人总结:模拟信号是连续的,比如波形,适合远距离传输,比如远距离传输信号出现衰减、干扰,可以通过物理层设备放大器、中继器再生与还原。但数字信号是离散的【0,1,0,1】,若出现干扰或衰减,无法修复。所以远距离传输需要调制解调器,来进行数字/模拟信号的转换。
数字数据编码为数字信号
个人总结:仅了解曼彻斯特编码/差分曼彻斯特编码即可,位中间的跳变既可作为时钟信号(时钟信号根据跳变可以界定信号的起止,比如非归零编码,若没有同步时钟,当出现多个1或0的信号时,无法区分又多少个1和0,所以需要额外的同步时钟),又作为数据信号,但它所占的频带宽度是原始基带宽度的两倍。 以太网应用的是曼彻斯特编码。
基带传输、频带传输和宽带传输
基带传输
计算机内部或相邻设备之间近距离传输,可以不经过调制就在信道上直接进行传输,常用于局域网。传输媒体的整个带宽都被基带信号占用,双向地传输信息。常用不归零编码和曼彻斯特编码。用高低电平表示二进制数,如1010,低电平代表0,高电平代表1.
频带传输
将基带信号进行调制,适用于远距离以码元的方式传输。
宽带传输
借助频带传输,可将链路容量分解成多个信道,比如频分复用的方式互补干扰地发送信号。
物理层设备
中继器
结果上看是将信号整形并放大转发出去,以消除信号经过传输产生的失真和衰减。中继器有两个端口,输入和输出。其原理是信号的再生而非简单地将衰减信号放大。
集线器
集线器(Hub)实质上是一个多端口的中继器,除信号再生外,会将信号转发到其他所有端口,扩大网络传输范围。
计算机网络之数据链路层
链路层功能
- 帧定界、帧同步与透明传输。
- 流量控制、可靠传输与滑动窗口机制(可选的)
- 差错控制
- 介质访问控制
组帧
发送方将网络层递交的分组封装成帧,组帧主要解决帧界定、帧同步、透明传输等问题
字符填充的首尾定界符号法
以特殊字符界定帧的开始与结束,若数据内容中有特殊字符,则在前面填充转义字符。接收方会删除第一个转义字符。
零比特填充的首尾标志法
以01111110来标志帧的开始和结束,数据内容中每遇到5个连续的“1”,自动在后面插入一个“0”,接收方逆操作即每收到5个连续的“1”时,自动删除后面的“1”。零比特填充法很容易由硬件来实现,性能优于字符填充法。
字符计数法/违规编码法
不重要,略
差错控制
奇偶校验码/循环冗余码/海明码
流量控制与可靠传输机制
过去OSI的观点是必须让数据链路层向上提供可靠传输,这种方法在历史上曾起到很好的作用。但现在通信线路质量提高,由通信链路质量不好引起差错的概率大大降低,所以现在区分对待:
对于通信质量良好的有线传输链路,由传输层提供可靠传输服务。
对于通信质量较差的无线传输链路,由数据链路层提供可靠传输服务。
这里只是把可靠传输机制放在了链路层,传输层的可靠传输服务与此原理相同,可靠传输服务放于哪一层不必纠结。
可靠传输机制主要分三种协议:
- 单帧滑动窗口-停等协议
- 多帧滑动窗口-后退N帧协议(GBN)
- 多帧滑动窗口-选择重传协议(SR) 这三种协议其实就是发送窗口和接收窗口的大小不同而已
- 停等协议,发送窗口=1;接收窗口=1
- 后退N帧协议,发送窗口=n;接收窗口=1
- 选择重传协议,发送窗口=n;接收窗口=n 说多无益,这里以选择重传协议的一张图为例,另外俩协议自然就懂了~
介质访问控制(Medium Access Control,MAC)
主要解决多点在互不干扰的前提下共用一个信道,它主要分两大类
- 静态划分信道,这块了解即可
- 动态媒体接入控制,也称多点接入控制(Multiple Access)、随机介质访问控制。CSMA/CD协议比较重要。
静态划分信道
- 频分多路复用(FDM,Frequency Division Multiplexing)
- 时分多路复用(TDM,Time ..)
- 波分多路复用(WDM,Wavelength ..)
- 码分多路复用(CDM,Code ..)
个人总结:前两项看名字就知道什么意思,这里说一下波分多路复用和码分多路复用 波分多路复用就是光的频分多路复用。可见光的频率与波长是唯一映射的关系,可见光不同波长的复用其实就是光在不同频率的复用。
码分多路复用更常用的名次是码分多址(CDMA,Code Division Multiple Access),每个站点被指定一个码片序列(比如00011011),发送1即映射成00011011,0映射成其反码11100100。其具体原理涉及线性代数知识,这里知道个大概意思,了解即可。
动态媒体接入控制
信道上的多个用户根据自己意愿随机发送信息,若多个用户同时发送则发送冲突碰撞,此时按照一定规则失败重发,直到发送成功为止。常用的协议有ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议。重点是CSMA/CD协议。他们的核心思想都是:争用信道,获得信息发送权,因此又称为争用型协议。
ALOHA协议(呃喽哈)
Additive Link On-line HAwaii System的缩写,同时ALOHA也是夏威夷当地方言“你好”的意思。
它的思想是每个站点自由地发送数据,若发送成功则会收到确认,否则则任务发送冲突,需等待一个随机时间后重新发送,直至发送成功。
可见,纯ALOHA网络吞吐量很低,人们在原ALOHA协议基础上进行改进,产生了时隙ALOHA协议。时隙ALOHA协议是把所有站点在时间上同步起来,划分一段段等长时隙。规定只能在每个时隙开始时才能发送一帧。从而避免发送数据的随意性,减少冲突可能性。
CSMA(Carrier Sense Multiple Access)
载波侦听多路访问协议,就是在发送前监听信道是否空闲。其实总线上并没有什么“载波”,这里只是借用这个词而已。CSMA协议分三种
| 信道状态 | 1-坚持 | 非坚持 | p-坚持 |
|---|---|---|---|
| 空闲 | 立即发送数据 | 立即发送数据 | 概率p发送数据,否则推迟到下一个时隙 |
| 忙 | 继续坚持侦听 | 放弃侦听,等待一个随机时间后再侦听 | 继续坚持侦听 |
即使有信道侦听,还是可能会发生冲突,因为信道是有传播时延的。比如结点A在某一时刻发送数据,此时该信号还未到达B,B即侦听到信道空闲,反方向也发送数据,那么在传播的过程中发生冲突,并且数据还在继续发送,此时带宽是被浪费的,于是就有了CSMA/CD协议。
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
载波侦听多路访问/碰撞检测协议。CSMA/CD的思想为“先听后发,边听边法,冲突停发,随机重发”。其随机重发的机制利用的是二进制指数退避算法。
协议机制如下:
- 适配器(网卡)从网络层获得一分组,封装成以太网帧,放入适配器缓存,准备发送。缓存用于若冲突或失败可重新发送。
- 若适配器侦听到信道空闲,发送帧,否则持续侦听。
- 在发送过程中,适配器持续检测信道,若发现冲突,则中止数据发送,并发送一个拥塞信号,将冲突放大,让所有用户直到。
- 中止发送后,适配器执行指数退避算法,返回步骤2。 碰撞检测机制,参考下图意会。
CSMA/CA(Carrier Sense Multiple Access with Collision Avoid)
碰撞避免。在无限网络中实现碰撞检测比较困难,且存在隐蔽站问题,所以使用避免算法。其机制为监听信道,若空闲则广播告知其他结点,某段时间点不要发送数据,即预约信道,从而实现碰撞避免。
轮询访问介质控制:令牌传递协议
协议内容如协议名,可意会。不是很重要。
广域网的数据链路层协议
- PPP协议与HDLC协议 PPP协议只保证帧无差错,但不保证可靠传输(HDLC是可靠传输)。实现可靠传输开销增大,且数据帧上升到网络层后仍有可能因网络拥塞而被丢弃。因此数据链路层的可靠传输并无保证网络层的可靠传输。了解即可。
数据链路层设备
网桥,互联扩展网络的设备,过滤帧、存储转发帧,可以隔离冲突域,但不能隔离广播域。
交换机,多端口的网桥。
计算机网络之网络层
网络层功能
- 异构网络互联。使用物理层或链路层的中继系统时(中继器、集线器、网桥、交换机),只是把一个网络扩大了,从网络层角度看仍是一个网络,一般不称为网络互联。
- 路由与转发
- 拥塞控制
IP分组
数据链路层有个最大传输单元MTU,例如以太网MTU为1500B,许多广域网MTU不超过576B,当IP数据报的总长度大于MTU时,就需要分片即分组。
IPv4地址
连接到因特网上的每台主机或路由器都分配一个32位比特的全球唯一标识符。它分为A,B,C,D,E五类。
IPv4地址由网络号和主机号两部分组成,即IP地址={<网络号>,<主机号>}。
分类的IP地址如下
IP地址由以下重要特点
- 每个IP地址都由网络号和主机号组成,是一种分等级的地址结构,其好处是:1⃣️IP地址管理机构在分配地址时只分配网络号,而主机号由网络下的单位自行分配,方便了IP地址管理;2⃣️路由器仅根据主机所连接的网络号来转发分组,从而减小了路由表所占的存储空间。
- IP地址是标志一台主机或路由器与一条链路的接口。路由器有多个IP地址,每个端口一个IP地址
- 用交换机连接的LAN仍是同一个网络,因此该LAN中所有主机IP地址的网络号都相同。
网络地址转换NAT
将专用网络地址转换为公共网络地址,从而对外隐藏了内部管理的IP地址。它使得整个专用网络只需要一个全球IP地址就可以与因特网联通,这样专用网络的IP地址就可以重用,所以NAT大大节省了IP地址的消耗,同时它隐藏了内部网络结构,从而降低了内部网络受攻击的风险。
因此IP地址划分除了私有IP地址,私有IP地址不能直接用于Internet,必须利用NAT把私有IP地址转换为公网IP地址才能用于Internet,并允许私有IP地址可被LAN重用,有效解决了IP地址不足问题。私有IP地址也称为可重用地址。
私有IP地址网段如下: A类:1个A类网段,10.0.0.0 ~ 10.255.255.255 B类:16个B类网段,172.16.0.0 ~ 172.31.255.255 C类:256个C类网段,192.168.0.0 ~ 192.168.255.255 这几个网段是否很熟悉?在学校机房或实验室里。
普通路由器在转发IP数据报时不改变IP地址,而NAT路由器会更换IP地址,并且NAT路由器还涉及传输层端口号。
子网划分与子网掩码
两级IP地址空间利用率低,不够灵活。子网划分纯属一个单位内部的事情,划分子网只是把主机号这部分再划分,子网掩码由一串1后面跟随一串0,三级IP地址结构如下:
IP地址 = {<网络号>,<子网号>,<主机号>}
e.g.
如果单要给网络划分6个子网,以C类地址为例
子网掩码为11111111.11111111.11111111.11100000(255.255.255.224), 111共划分了8个子网,只用了其中6个子网
CIDR(Classless Inter Domain Routing)
无分类域间路由,是一种更有效地分配IP地址的划分方法。与A、B、C类网络及子网划分不同,IP地址的无分类两级编址为:{<网络前缀>,<主机号>}。比如一个单位需要2000个地址,那么就给他分配1个2048地址的块,此时主机号11位,网络前缀21位。 CIDR斜线记法:128.14.23.5/21
PS:这里与子网掩码除了概念、写法不同,应该没什么区别。
综上,解决IPv4地址不够用的策略有
- NAT
- 子网掩码
- CIDR
- IPv6(从根本上解决问题)
地址解析协议ARP(Address Resolution Protocol)
无论网络层使用什么协议,在实际网络链路上传送数据帧时,最终必须使用硬件地址(MAC地址),所以需要一种方法来完成IP地址到MAC地址的映射,每个主机都设有一个动态维护的ARP高速缓存,存放局域网各主机、路由器IP地址到MAC地址的映射。若ARP缓存中不存在,则广播发送ARP请求来获取目的MAC地址。
本来还有个RARP协议,但现在已被淘汰不使用了。
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)
常用于给主机动态分配IP地址,即插即用的联网机制,它允许一台计算机加入新的网络和获取IP地址而不用手工参与。
DHCP原理:需要IP的主机向DHCP服务器广播发送报文,只有DHCP服务器才回答此报文。DHCP服务器现在其数据库中查找该计算机的配置信息,若找到则返回,否则从服务器的IP地址池取一个地址分配给该计算机。
DHCP是应用层协议,它是基于UDP的,其分配的IP地址是临时的,租用期由DHCP服务器决定。
网际控制报文协议ICMP(Internet Control Message Protocol)
网络层使用ICMP协议来让主机或路由器报告差错和异常情况。其又分两种报文,差错报告报文和询问报文。比如
- 终点不可达。数据报无法交付
- 源点抑制。路由器或主机拥塞而丢弃数据报
- 时间超时。路由器收到TTL=0的数据报时,丢弃报文并向源点发送时间超时报文
- 参数问题。报文首部不正确等
- 改变路由 另外还有ICMP询问报文,比如两个常用命令
- ping命令,traceroute命令
IPv6
相较Ipv4的32位增大到128位,16B。从根本上解决IP地址耗尽问题。
路由协议
路由协议分两大类
- 内部网关协议(Interior Gateway Protocol, IGP)
- 外部网关协议(External Gateway Protocol, EGP) 内部网关协议即在一个自治系统(一个行政单位,如公司、大学)内部使用的路由选择协议,如RIP和OSPF。
外部网关协议即自治系统间的路由选择协议,如BGP-4
路由信息协议RIP(Routing Information Protocol)
其原理是:最初每个路由器仅知道与自己相连结点路由,每30秒,进行一次RIP广播即相邻两个路由器互相将自己的路由表发给对方。于是经过第一次RIP广播,每个路由器知道自己跳数为1的路由表。同理第二次RIP广播,每个路由器知道自己跳数为2的路由。以此类推,最终会收敛直到所有路由器知道整个自治系统的路由表。
相邻路由器发送的路由地址A跳数+1,与当前路由表比较,若不存在则写入,若存在取跳数小的,所以路由表中都是跳数最少的路径,但不一定是时间最短的。RIP是应用层协议,它使用UDP传送数据。
开放最短路径优先协议OSPF(Open Shortest Path First)
“开放”表明OSPF不受某一家厂商控制,SPF即Dijkstra提出的最短路径算法。
特点与机制
- 和谁交换?各路由器使用洪泛法向自治系统内所有路由器发送信息
- 发送什么?链路状态即本路由器和哪些路由器相邻及其链路上的度量/代价(距离、时延等)
- 多久交换?链路状态发生变化时 由此,经过一系列分组交换后,每个路由器就建立了全网同步的链路数据库。每个路由器根据链路数据库就可以利用Dijkstra算法构造路由表
边界网关协议BGP(Border Gateway Protocol)
- 和谁交换?BGP发言人(与外部网络交互的路由器)与其他相邻自治系统交换
- 交换什么?由于因特网规模太大,获取最佳路由困难,仅交换可达性信息,即要达到某个网络要经过的AS
- 多久交换?发生变化时,更新变化部分 这里了解即可
组播(多播)
把一个分组发送给多个目的主机,不是让源主机给每个目的主机发送一个分组,二是让源主机把分组发给一个组播地址,组内把分组的副本投递给该组中的每台主机。组播一定仅应用于UDP,比如视频会议、直播等场景。在IPv4中,组播地址在D类地址空间分配。 了解即可,详情可看书。
移动IP
为满足结点在移动中保持其连接性而设计。移动结点以固定IP地址实现跨越不同网段的漫游功能,并保证在漫游过程中网络权限没有变化。了解即可,详情可看书。
网络层设备
路由器是具有多个输入输出端口的计算机,其任务是路由选择、转发分组
路由表根据路由选择算法得出来的,总用软件来实现。包括目的IP、子网掩码、下一跳IP、路由器接口。
转发表是由路由表得来,可用软件、硬件实现。转发表包含MAC地址。
计算机网络之传输层
TCP
TCP三次握手
A给B发送连接请求报文段,B收到请求知道A可以发送数据
B给A返回确认报文段,A收到确认知道B能接收数据也能发送数据
A收B的确认报文段后再向B发送确认报文段,B收到确认报文段后知道A可以接收数据
所以,三次握手确认了A和B既能接收数据也能发送数据
TCP四次挥手
最后一步,客户端发送确认报文后,需经过2个MSL(最长报文段寿命)才会进入连接关闭状态,因为客户端发送的确认报文段可能丢失,若服务端未收到确认请求,则一直会给客户端发送连接释放报文段,无法进入关闭状态。所以等待2个MSL可以保证若确认报文丢失,可以再次接收到服务端的释放连接请求。
UDP
UDP仅在IP数据报服务之上增加了两个最基本的服务:复用分用和差错检测
复用:所有应用进程都可以通过传输层传输到网络层。
分用:传输层从网络层收到数据后交付到指明的应用进程。
复用/分用是传输层基本功能,首部格式都含有端口号,以找到对应应用进程。
计算机网络之应用层
DNS解析过程
以如下图意会即可
以迭代查询为主,即先查询本地域名服务器,本地域名服务器请求根域名服务器,根域名服务器将顶级域名服务器地址返回给本地域名服务器,本地域名服务器再次请求顶级域名服务器,顶级域名服务器将权限域名服务器地址返回给本地域名服务器,本地域名服务器再请求权限(权威)域名服务器。
不过域名服务器中广泛使用了高速缓存。
Keep-Alive与非Keep-Alive
在此之前的 HTTP 版本的默认连接都是使用非持久连接,如果想要在旧版本的 HTTP 协议上维持持久连接,则需要指定connection的首部字段的值为 Keep-Alive。 对于每一个这样的连接,客户机和服务器都要分配TCP的缓冲区和变量(比如报文段发送失败需要重传,发送的报文段都需要缓存一份)。
在HTTP/1.1中默认使用持久连接,当TCP连接在传送完最后一个HTTP响应,该连接会保持keepalive_timeout秒,之后就开始关闭这个连接接。
GET请求长度限制
限制GET请求长度的是浏览器。
IE浏览器对URL的最大限制为2000多个字符,2KB左右。
FireFox对URL最大长度限制为65536个字符。
Chrome对URL最大长度限制为8182个字符。
当然服务端同样影响 URL 的最大长度限制
参考文献
[1]《计算机网络》谢希仁
[2]《王道考研复习指导》
[3]LeetBook