从Typora导过来图片全丢了…又从头插一遍
需要md文件或者思维导图的可以评论,后续会上传到gitee和github上,欢迎star
计算机网络是互连的、自治的计算机集合。
互连:互通互联,通信链路(双绞线、同轴电缆、光纤)
自治:无主从关系
速率:数据率,数据传输率,比特率
速率进率为103
单位有: b/s、kb/s、Mb/s、Gb/s、Tb/s
存储容量:进率为210
1 Byte(字节) = 8 bit(比特)
1 KB = 210 B = 1024 B = 1024 * 8 b
带宽:单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,单位b/s
是传送数据的能力,不是速率
带宽:原本指某个信号具有的频带宽度,单位是Hz
吞吐量:单位为时间内通过某个网络(或信道、接口)的数据量
时延
发送时延:发送数据帧的时间
发送时延=数据长度/信道带宽
传播时延:电磁波在信道中传播一定距离需要花费的时间
传播时延=信道长度/传播速率
排队时延
处理时延
时延带宽积
时延带宽积=传播时延*带宽
往返时间RTT:从发送方发送到发送方接收到接收方的确认
RTT = 往返传播时延 * 2 + 末端处理时间(末端处理时间一般忽略)
利用率
实体:任何可发送或接收信息的硬件或软件进程,同一层的实体叫对等实体
协议:控制两个对等实体(或多个实体)进行通信的规则的集合
协议是水平的,服务是垂直的
接口(访问服务点SAP):上层使用下层服务的入口
服务:下层为相邻上层提供的功能调用
PCI 协议制信息 :控制协议操作的信息
PDU协议数据单元 :对等层次之间传送的数据单位
七层OSI参考模型:法定标准
四层TCP/IP参考模型:事实标准
五层体系结构
应用层:报文
传输层:报文段
网络层:IP数据报,分组
数据链路层:帧
物理层:比特流
数据:传送消息的实体
信号:数据在传输过程中的存在形式
数字信号:离散的
模拟信号:连续的
信源:产生和发送数据的源头
信宿:接收数据的终点
信道:信号的传输媒介
单工:只有一个方向的通信
半双工:都可以发送和接收,但是不能同时发送或接收
全双工:可以同时发送和接收
串行传输和并行传输
码元:一个固定时长的信号波形,1码元可以携带多个比特的信息量
二进制码元:log2 2 = 1个比特位表示两种状态0和1
四进制码元:log2 4 = 2个比特位表示四种状态 00 01 10 11
速率:数据的传输速率
码元传输速率:1 s传输的码元数(单位:波特Baud) 1波特 = 1码元 / 秒
信息传输速率:1 s传输的比特数
带宽:最高数据率
1 s传输了(8000/4)2000个码元,每个码元携带了(log2 4) 2个比特的数据
系统传输的是比特流,所以通常比较的是信息传输速率,后面的系统传输速率快
理想极限数据传输率 = 2 W log2 V(b/s)
W:带宽(Hz) V:几种码元/码元的离散电平数
最大数据传输率 = 2 * 3 k * log2 16 = 24 k b/s
信噪比:10 log10 (S/N) (dB)
**信道的极限数据传输速率 = W log2 (1+S/N) **
单位:(b/s)
W = 3k Hz; S/N = 1000
3k * log2 (1+1000) = 30k b/s
不归零码:高1低0
归零码:正脉冲代表1,负代表0(每个周期都要归零)
曼彻斯特编码:周期中心有跳变
差分曼彻斯特编码:每一处的中心始终有跳变,位开始边界有跳变代表0
因为物理层规定了电气特性,所以可以识别传送的比特流
中继器
功能:对信号进行再生和还原,放大信号,以增加传输距离
中继器两端是相同的网络,一定要是同一个协议,且速率要相同
不会存储转发,也不能检查差错
集线器(多口中继器)
功能:与中继器类似,是一个共享式的设备(广播)
四个站进行CDMA通信。四个站的码片序列为:
A:-1 -1 -1 +1 +1 -1 +1 +1 B:-1 -1 +1 -1 +1 +1 +1 -1
C:-1 +1 -1 +1 +1 +1 -1 -1 D:-1 +1 -1 -1 -1 -1 +1 -1
现接收到了-1 +1 -3 +1 -1 -3 +1 +1。问哪个站发送数据流?发送的是1还是0。
求内积:
设接收到的为X,
A ⋅ X = ( + 1 − 1 + 3 + 1 − 1 + 3 + 1 − 1 ) / 8 = 1 ( 符 号 相 同 则 为 正 , 不 同 为 负 ) 以 此 类 推 : B ⋅ X = − 1 C ⋅ X = 0 D ⋅ X = 1 A \cdot X = (+1 -1 +3 +1 -1 +3 +1 -1) / 8=1\\ (符号相同则为正,不同为负)以此类推:\\B \cdot X = -1\\ C \cdot X = 0 \\ D \cdot X = 1 A⋅X=(+1−1+3+1−1+3+1−1)/8=1(符号相同则为正,不同为负)以此类推:B⋅X=−1C⋅X=0D⋅X=1
则:A和D发送的是1,B发送的是0,C未发送
北美和日本:T1速率(1.544Mbit/s) 欧洲:E1速率(2.048Mbit/s)
非对称数字用户线ADSL 技术是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带数字业务。
光纤到X:FTTx技术
封装成帧:在一段数据的前后分别添加首部和尾部,构成一个帧。
透明传输:解决数据链路层错误地“找到帧的边界”,需使数据部分透明(实际存在的事物看起来不存在),可用字节填充
字节填充:在关键字前加上转义字符ESC
差错检测:广泛采用循环冗余检验(CRC)
CRC:
发送接收的双方事先定好一个(n+1)位的除数P,一般给出的P是一个公式,需要转换为二进制
例如:P = X4 + X +1 ===> 10011
发送端:将要发送的数据加上n位的冗余码再发送
冗余码(为检错而添加的冗余码又称帧检验序列(FCS)):发送的数据之后加上n个0,将这个数除以P(模2运算),得到的余数就是冗余码
接收端:将接收到的数据除以P(模2运算,10+11=01,不进位),然后检查余数R
数据正确时R=0,接收这个帧;反之则丢弃
1)令所有要校验的位异或(相同为0,不同为1)为0,Pi校验的位为第i位为1的数据位(0001~1010)
P1 ⊕ D1 ⊕ D2 ⊕D4 ⊕ D5 = 0 —> P1 = 0 同理:P2 = 0 P3 = 0 P4 = 1
2)得到海明码:0010011101
3)传输过程中出现错误,检错
4)和1相同,将得到的几位校验码从右往左排好,得到的二进制转化为十进制就知道是第几位出错了
p1=1 p2=0 p3=1 p4=0 —> 0101 —> 5 —> 第五位出错
(1)应满足的需求
简单、封装成帧、透明性、多种网络层协议(同一条物理链路上同时支持多种网络层协议)、多种类型链路、差错检测、检测连接状态、最大传送单元、网络层地址协商、数据压缩协商
(2)组成
一个将IP数据报封装到串行链路的方法。
一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
一套网络控制协议NCP,其中每一个协议支持不同的网络层协议。
字节填充(将信息字段的0x7E修改,0x7D)
零比特填充(ppp协议实现透明传输的方式)
连续五个1插入一个0
链路静止(设备间无链路)–>链路建立(物理链路)–>鉴别(LCP链路)–>网络层协议(已鉴别的LCP)–>链路打开(已鉴别的LCP和NCP链路)–>链路终止
局域网拓扑:星型网(集线器连接)、环形网、总线网
共享信道技术:
以太网的两个标准:DIX Ethernet V2和IEEE 802.3
适配器的作用
以太网提供无连接、不可靠的服务
先听后发,边听边发,冲突停止,延迟重发
CSMA/CD :载波监听多点接入/碰撞检测
争用期时间是51.2μs,对于10 Mbit/s的以太网,可发送512bit数据 512 bit = 64 B
MTU:1500
46 = 64 - 6 - 6 -2 - 4
A->B :A广播发送数据帧,先到达B,B收到;
交换机 1收到,表中没有A,记录A是从1号接口进入的;CD收到;
交换机 2收到,表中没有A,记录A是从1号接口进入的;EF收到;
E->C: E广播,交换机1和2中都没有E,交换机1和2接收并记录E是从2号接口进入的;
ABCDF都收到;
B->A: B广播,A收到;交换机1收到,查表发现表中没有B,记录B是从1号接口进入的;
发现表中有记录了A是从1号接口进入的,则丢弃帧;右侧不会收到该帧;
电路交换:建立连接–通信–释放连接
报文交换:源–存储转发–目的
报文:源应用发送的信息整体
分组交换:和报文交换类似
分组:把大块的数据块分割成小的数据块
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
首部:(1 Byte=8 bit = 1 B = 8位)
固定部分:20 Byte
版本:4 Byte,IPv4或者IPv6
首部长度:单位是4 Byte,最小为5个单位;5*4 = 20 B,满足固定首部长度20 B
总长度:首部+数据长度,单位是1 B;占16位,表明IP数据报最大长度为216 -1 = 65535 B(一般达不到,太长了会分片)
生存时间(TTL):IP分组的保质期,经过一个路由器就-1,为0时则丢弃
源IP地址和目的IP地址:均为32位
填充:全0,为了把首部补成4 B的整数倍
标识:同一数据报的分片使用同一标识
标志:占3位,只有前两位有用(x _ _)
片偏移:较长分组分片之后,某片在原分组中的相对位置,以8 B为单位
例:
3800 = 1400 + 1400 + 1000 (B)===> 分为三片总长度为:1400 + 20 + 1400 + 20 + 1000 + 20 = 3860 (B)
分片1: 0~1399 片偏移量 = 0 MF = 1 DF = 0分片2: 1400~2799 片偏移量 = 1400 / 8 = 175 MF = 1 DF = 0
分片3: 2800~3800 片偏移量 = 2800 / 8 = 350 MF = 0 DF = 0
路由器又称网关
最佳路由:相对某一种特定要求下得出的较为合理的最优路径
.
分隔开,并将该八位转化为对应的十进制数再写一遍,加深印象
后面的都类似了…
原因:
- IP地址空间的利用率有时很低
- 两级的IP地址不够灵活
首先是广播分组:主机号全1;排除A
再根据上一题的解题方法:
252 —> 1111 1100
77 —> 0100 1101
得到:0100 1100 —> 76 ,该网络所在子网号为:180.80.76.0
从子网掩码得知该网络前22位为网络号(因为180开头是B类地址,所以网络号应该为16位,子网号占6位),后10位为主机号
广播时要使用广播地址,即主机号全为1的地址;
此时将0100 1100的后两位改为1,再加上后8位全为1就是广播地址了
得出结果:0100 1111 —> 79,所以选D、180.80.79.255
记住每个位上的1是多少更方便计算
(1000 0000)2 = 128 (0100 0000)2 = 64
(0010 0000)2 = 32 (0001 0000)2 = 16
(0000 1000)2 = 8 (0000 0100)2 = 4
(0000 0010)2 = 2 (0000 0001)2 = 1
路由表包括:1)目的网络地址 2)目的子网掩码 3)下一跳地址
多个子网聚合成一个较大的子网,叫做构成超网或路由聚合
CIDR消除了传统的A类、B类、C类地址及划分子网的概念
IP地址 ::= {<网络前缀>,<主机号>}
CIDR记法或斜线记法:IP地址/网络前缀位数
CIDR地址块:网络前缀相同的IP地址组成的
子网掩码(地址掩码):网络前缀全1,主机号全0
最长前缀匹配:使用CIDR时,查找路由表是应选择具有最长网络前缀的路由。
因为第一个8位的132 ABC三个选项都包括,所以排除D(默认路由是找不到目的网络的时候才使用的)
看第二个8位,19—>0001 0011,当网络前缀位数为8时,目的地址的网络号为:132.0.0.0/8;
当网络前缀位数为8时,目的地址的网络号为:132.0.0.0/8;根据最长前缀匹配原则,排除A
C选项:当网络前缀数为22时,22-16=6,237 —> 1110 11**|**01,主机号全0表示本网络,所以目的地址的网络号为:132.19.236.0/22,和C不匹配,排除C
得出结果:B最合适
网络前缀为24,前三个字节都作为网络前缀,定长子网划分则是对最后一个字节进行子网划分(即8位里面取出一部分作为子网号)
从子网掩码可知,248 —> 1111 1000,网络号全1,主机号全0为子网掩码,所以最后8位里面有5位是子网号,3位是主机号
25 = 32;23 - 2 = 6(全0和全1的地址不可用),答案为B
APR高速缓存:IP地址与MAC地址的映射(10-20分钟更新一次)
ARP协议:完成主机或路由器IP地址到MAC地址的映射(解决下一跳走哪的问题)
- 检查ARP高速缓存,有对应的项则将其写入MAC帧,没有则用目的地址全1的帧封装并进行广播ARP请求分组,同一局域网内的主机都可以收到请求
- 目的主机收到请求后会向源主机单播一个ARP响应分组
- 源主机收到后会将此映射后会写入ARP缓存中
ICMP:允许主机或路由器报告差错情况和提供有关异常情况的报告,ICMP报文封装在IP数据报中。
使用IP协议传输
种类:ICMP差错报告报文,ICMP询问报文
ICMP差错报告报文:
ICMP询问报文
ICMP不发送的情况
应用
冒号十六进制记法:每四位用十六进制表示,并用冒号隔开
压缩形式:省略0
一个AS内部使用
目的网络 | 距离 | 下一跳 |
---|---|---|
Net2 | 1 | 直接交付 |
Net1 | 2 | R1 |
Net4 | 2 | R3 |
距离向量算法
- 修改相邻路由器发来的RIP报文的所有表项
- 对地址为X的相邻路由器,发来的RIP报文中的下一跳都改为X,距离+1
- 对修改后的RIP报文,和路由表中的每一项进行比对和替换,规则如下:
- 若原来的路由表中没有目的网络N,则直接添加到路由表
- 若有N,且下一跳是X,则修改路由表中的距离为最新的距离
- 若有N,下一跳不是X
- 如果距离小于路由表中的距离,则更新下一跳为X,更新距离为到X的距离
- 否则不作处理
先将c发来的信息修改
目的网络 距离 下一跳 N1 3 C N2 2 C N3 4 C N4 8 C 对比替换
1.2.3.4都有,所以不需要新添
N1: 4 > 3,从B到目的网络更远,下一跳修改为C
N2: 下一跳为C,更新为最新距离(这里距离没变,还是2)
N3: 下一跳为F,到达目的网络距离为1 < 4,不改变
N4: 下一跳为G,到达目的网络距离5 < 8,不改变
目的网络 | 距离 | 下一跳 |
---|---|---|
N1 | 3 | C |
N2 | 2 | C |
N3 | 1 | F |
N4 | 5 | G |
开放最短路径优先(OSPF)和最短路径优先算法(SPF)
BGP交换规则:(和谁交换,交换什么,多久交换)
BGP寻找的并不是最佳路由,是一条比较好的路由
BGP发言人往往是BGP边界路由器
BGP协议交换一般是一组路径向量
BGP-4四种报文
三种协议的比较
RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息
OSPF最主要的特征是使用分布式的基于链路状态的协议,使用IP协议交换信息
BGP是一个外部网关协议,基于路径向量,网络环境较复杂,需要保证可靠传输,所以使用TCP
只有主机才有的层次
运输层向它上面的应用层提供通信服务
使用网络层的服务
传输层提供进程和进程之间的逻辑通信
复用和分用
对收到的报文进项差错检验
端口也称协议端口号、软件端口:应用层各种进程与运输层进行层间交互的一种地址,且端口号只具有本地意义,因为两主机进程间通信是IP+端口。
端口分类:
UDP:
应用 FTP TELNET SMTP DNS TFTP 熟知端口号 21 23 25 53 69 TCP:
应用 HTTP SNMP HTTPS 熟知端口号 80 161 443
传送数据之前必须建立连接,数据传输结束之后要释放连接
不提供广播或组播服务
不可靠、无连接、时延小、适用于小文件
UDP是面向报文的,即无论应用层给UDP多长的报文,UDP都是完整的发送一个报文
UDP无拥塞控制(适合实时应用,如视频通话)
UDP首部开销小,8 B
UDP数据报的格式
面向连接的运输层连接
每一条TCP连接只能是点对点的
提供全双工通信
面向字节流(把数据当成一连串的无结构的字节流)
TCP连接的断点叫套接字(socket)或插口
套接字 socket = (IP地址:端口号)
源端口和目的端口:各占2个字节
序号:占4个字节,在一个TCP连接中传送的字节流中每一个字节都按顺序编号
序号则是本报文段所发送数据的第一个字节的序号
确认号:期望收到的下一个报文段的第一个数据字节的序号
若确认号=N,则表明到序号N-1为止的所有数据都已经正确收到
数据偏移(首部长度):以4字节为单位
6个控制位:
窗口:2字节,发送方的接收窗口,允许对方发送的数据量,且动态变化
紧急指针:2字节,URG=1时才有意义,用于指出本报文段中紧急数据的字节数,且指出了紧急数据的末尾在报文段中的位置
选项、填充:如果选项字段加上之后,TCP报文不是4字节的整数倍,则在填充字段添0来使它达到4字节的整数倍
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程是客户端,被动等待的是服务器
一次握手:
客户端发送连接请求报文段,无应用层数据
SYN=1,seq=x(随机产生的序号)
二次握手:
服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,无应用数据
SYN=1,ACK=1(确认位),ack=x+1(确认号),seq=y(随机产生的序号)
三次握手:
客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据
SYN=0,ACK=1,ack=y+1,seq=x+1
释放:参与TCP连接的两个进程中的任何一个都可以终止连接,然后主机中的缓存和变量都会被释放
一次握手:
客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接
FIN=1,seq=u
二次握手:
服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了(半关闭状态)
ACK=1,ack=u+1,seq=v
三次握手:
服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接
FIN=1,ACK=1,ack=u+1,seq=w(可能服务器段又发送了一些数据,所以为w)
这里ack没变,因为客户端并没有发送新的数据
四次握手:
客户端返回一个确认报文段,再等到时间等待计时器设置的2 MSL(最长报文段寿命)后,连接彻底关闭
ACK=1,ack=w+1,seq=u+1
每发送完一个分组就停止发送,等待对方确认,收到确认后再发送下一个分组
停等协议信道利用率太低
滑动窗口机制:
- 对数据逐个确认,收一个确认一个
- 只重传出错分组
- 接收方有缓存
滑动窗口的长度:2(n-1) ,n是用于标号的比特数
可靠:保证接收方进程从缓存区读出的字节流与发送发出的字节流是完全一样的
实现机制
校验:与UDP校验一样,校验时加上伪首部
序号:在一个TCP连接中传送的字节流中每一个字节都按顺序编号
确认:
重传:
让发送方发送速率不要太快,要让接收方来得及接收
滑动窗口实现流量控制
接收方根据自己的接收缓存大小,动态调整发送方的发送窗口大小(即接收窗口rwnd,receiver window,通过接收方设置报文段的窗口字段来告知)
发送方的窗口值取rwnd和cwnd(拥塞窗口)的最小值
滑动窗口进行流量控制
当rwnd=0的通知A收到之后,B的缓存又有了一些空间,但是此时新的通知报文丢失了,会造成一直互相等待的局面(类似死锁),为了解决这种情况,为TCP连接设置了一个持续计时器,只要一方收到零窗口通知,就启动计时器。计时器到期时就发送一个零窗口探测报文段,接收方收到时给出现在的窗口值
轻度拥塞 》》拥塞 》》死锁
一个传播轮次:发送了一批报文段,并收到它们的确认的时间(一个RTT)
ssthresh:慢开始门限值
后面的都是类似的进行
当收到三个相同的重复确认之后,执行快重传算法
不用使门限值降为1,而是降为原来的一半12即可(快恢复)
然后再用拥塞避免算法继续传输
应用层协议定义:
功能:
功能 | 协议 |
---|---|
文件传输、访问和管理 | FTP |
电子邮件 | SMTP、POP3 |
虚拟终端 | HTTP |
查询服务和远程作业登录 | DNS |
域名 —(DNS)—> IP —(ARP)----> MAC
SMTP,POP3都是使用TCP进行传输
内容:
首部:
Subject: Hello!
用户代理:Fox Mail、Outlook
邮件服务器功能:发送接收邮件,向发件人报告结果
基于万维网的电子邮件使用HTTP协议发送接收邮件(邮件服务器之间依然使用SMTP协议)
用户点击超链接获取资源,资源通过超文本传输协议(HTTP)传送给使用者
Cookie:记录一段时间内某用户的访问记录
HTTP是无状态的,但是采用TCP作为运输层协议