//2021.04.18
1、计算机网络概述
(1)ISP:(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务、信息业务、和增值业务的电信运营商。
在互联网应用服务产业链“设备供应商——基础网络运营商——内容收集者和生产者——业务提供者——用户”中,ISP/ICP处于内容收集者、生产者以及业务提供者的位置
互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。
目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。
(2)主机之间的通信方式有两种:
1>客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
2>对等(P2P):不区分客户和服务器
(3)总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延
1>. 排队时延
分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。
2>. 处理时延
主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据、进行差错检验或查找适当的路由等。
3>. 传输时延
主机或路由器传输数据帧所需要的时间。
4>. 传播时延
电磁波在信道中传播所需要花费的时间,电磁波传播的速度接近光速。
(4)网络七层模型/五层模型——
https://leetcode-cn.com/leetbook/read/tech-interview-cookbook/o9jljr/
2、物理层
(1)根据在传输线上的传送方式,可以分为三种通信方式:
单双工:单向传输
半双工:双向交替传输
全双工:双向同时传输
(2)带通调制(载波调制)
把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,经过载波调制后的信号为带通信号(仅在一段频率范围内能够通过信道),而使用载波调制的调制成为带通调制。
目的: 要传输的信号加载在载波信号上进行传输,因为载波信号传得远。
最基本的调制方法:
1.调幅(AM) 例如:0或1分别对应无载波或有载波输出。 2.调频(FM) 例如:0或1分别对应频率f1或f2。
3.调相(PM) 例如:0或1分别对应相位0度或180度。
https://qyliang.blog.csdn.net/article/details/78150808
https://blog.csdn.net/qq_33414271/article/details/78150822
(3)来自信源的信号常称为基带信号(即基本的频带信号)。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。但基带信号中常含有较多的低频成分,甚至有直流成分,
而许多信道不能传输这种低频分量或直流分量。所以必须对基带信号进行调制。
调制可分为两大类。一是仅仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号(将一种形式的数字信号转化为另一种数字信号)。
这类调制成为基带调制,常称为编码。另一类调制需要使用载波进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,
经过载波调制后的信号为带通信号(仅在一段频率范围内能够通过信道),而使用载波调制的调制方式称为带通调制。
常见编码技术:
· 不归零制:正电平代表1,负电平代表0
· 归零制:正脉冲代表1,负脉冲代表0
· 曼彻斯特:位周期中心向上跳代表0,位周期中心向下跳表示1(也可以反过来定义)
· 差分曼彻斯特:在每一位的中心处始终都有跳变。位开始边界有跳变代表0,位开始边界没有跳变代表1
4、链路层
(1)数据链路层的三个基本问题:封装成帧 透明传输 差错检测
封装成帧的四种方式:字符计数法、字符填充法、零比特填充法、违规编码法
透明传输:不管什么样的组合都可以在链路中组合
差错检测:
差错原因:噪声干扰
差错分类:位错、帧错
检错编码:奇偶校验码、循环冗余码CRC
纠错编码:海明码
https://www.jianshu.com/p/58dec9767b90
https://blog.csdn.net/azsx02/article/details/69387317
(2)广播信道:
1> 一对多传输:会发生冲突,有两种方法进行协调:一是使用信道复用技术,另一个是使用CSMA/CD协议
2> 一对一通信:不会发生冲突,采用PPP协议进行控制
一对多:
信道复用技术:频分复用、时分复用、统计时分复用、波分复用、码分复用/码分多址
https://blog.csdn.net/qq_28602957/article/details/53467950
CSMA/CD协议:表示载波监听多点接入 / 碰撞检测。
多点接入 :说明这是总线型网络,许多主机以多点的方式连接到总线上。
载波监听 :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
碰撞检测 :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 {0, 1, .., (2^k-1)}
中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。
https://www.pianshen.com/article/1077776135/
点对点:
PPP 协议:互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
PPP 的帧格式:
F 字段为帧的定界符
A 和 C 字段暂时没有意义
FCS 字段是使用 CRC 的检验序列
信息部分的长度不超过 1500
https://blog.csdn.net/u011857683/article/details/84703473
(3)MAC地址:(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),
MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。
一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。
https://baike.baidu.com/item/MAC%E5%9C%B0%E5%9D%80/1254181?fr=aladdin
(4)局域网:局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。
主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。
可以按照网络拓扑结构对局域网进行分类:星型、环型和直线型
https://blog.csdn.net/qq_41587740/article/details/104563824
(5)以太网:以太网是一种星型拓扑结构局域网,目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。
以太网帧格式:
目的地址:
源地址:
类型 :标记上层使用的协议;
数据 :长度在 46-1500 之间,如果太小则需要填充;
FCS :帧检验序列,使用的是 CRC 检验方法;
https://blog.csdn.net/weixin_44682507/article/details/103388495
(6)交换机:交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。
正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,
此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,
就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
(7)虚拟局域网:虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上
加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。
5、网络层
(1)因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。
使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络
与 IP 协议配套使用的还有三个协议:
地址解析协议 ARP(Address Resolution Protocol)
网际控制报文协议 ICMP(Internet Control Message Protocol)
网际组管理协议 IGMP(Internet Group Management Protocol)
(2)IP 数据报格式:首部+数据部
IP数据报的分片和重组
https://leetcode-cn.com/leetbook/read/tech-interview-cookbook/oe8wf7/
https://blog.csdn.net/wangzhen209/article/details/74453548
(3)IP地址编码方式
IP 地址的编址方式经历了三个历史阶段:
分类
子网划分
无分类
1> 分类
由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。
IP 地址 ::= {< 网络号 >, < 主机号 >}
2> 子网划分
通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。
IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}
3> 无分类
无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。
IP 地址 ::= {< 网络前缀号 >, < 主机号 >}
CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀。
https://blog.csdn.net/qq_32642107/article/details/105462471
https://www.cnblogs.com/juankai/p/11468455.html
(4)地址解析协议ARP:实现由 IP 地址得到 MAC 地址
https://blog.csdn.net/windeal3203/article/details/50672643
https://www.cnblogs.com/sxiszero/p/11053027.html
---------------------------------------------------------------------------------------------------------------------------// 若有需要,可以再查询一下相关网址
(5)网际控制报文协议 ICMP
<1> ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会,它封装在 IP 数据报中,但是不属于高层协议
<2> ICMP 报文分为差错报告报文和询问报文
1>Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性
2>Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径;经过多次转发和回传,源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间
(6)虚拟专用网络
<1>功能:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN可通过服务器、硬件、软件等多种方式实现虚拟专用网络_百度百科
(7)网络地址转换 NAT
<1>介绍:专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。
<2>在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,
现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT
(8)路由器的结构
<1> 介绍:路由器从功能上可以划分为:路由选择和分组转发
1>路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。
互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。
可以把路由选择协议划分为两大类:
自治系统内部的路由选择:RIP 和 OSPF
自治系统间的路由选择:BGP
2>内部网关协议 RIP——RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。
3>开放最短路径优先 表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。
4> BGP(Border Gateway Protocol,边界网关协议):
AS 之间的路由选择很困难,主要是由于:
互联网规模很大;
各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;
AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。
BGP 只能寻找一条比较好的路由,而不是最佳路由。
每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。
<2> 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口
路由分发流程:
1>从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。
2>若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付;
3>若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器;
4>若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;
5>若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
6>报告转发分组出错。
5、传输层
(1)用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),
支持一对一、一对多、多对一和多对多的交互通信。
传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,
面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。
(2)TCP和UDP的头部信息
https://leetcode-cn.com/leetbook/read/tech-interview-cookbook/oecwis/
(3)TCP三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。
(4)四次挥手的原因
客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
(5)TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。
(6)超时重传
TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段;
一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下:
RTTs=(1-a)*(RTTs)+a*RTT
(7)TCP 滑动窗口/流量控制
(8) TCP拥塞机制
<1>流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。
<2>TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复
参考链接:https://leetcode-cn.com/leetbook/detail/tech-interview-cookbook/