介绍一下OSI参考模型
- 应用层:为应用程序提供服务
- 表示层:解决通信时的数据格式问题
- 会话层:负责在应用之间建立、维护、终止会话
- 传输层:负责端到端的数据传输
- 网络层:负责主机到主机之间的数据传输、路由与寻址
- 数据链路层:负责相邻节点直接传输比特帧,进行差错检测
- 物理层:负责硬件之间通过物理媒介传输二进制比特流
介绍一下TCP/IP模型
- 应用层
- 传输层
- 网络层
- 网络接口层
网络模型为什么要分层?
网络是一个庞大的系统,分层是为了将大化小实现解耦。每一层只需向上层提供服务,并调用下层接口,不需要关心下层的具体实现。极大的提高了系统的可扩展性与可维护性。
什么是封装、解封装?
数据在发送端从上往下传,每经过一层就会加上该层的控制信息(首部) ,这个过程叫封装;在接收端从下往上传,每过一层就剥离掉该层的首部 ,最终还原出原始数据,这个过程叫解封装。
电路交换、报文交换、分组交换的优缺点
(1)电路交换:通信前端到端建立一条物理链路,在通信过程中一直占用
优点:没有延迟、传输效率高
缺点:建立&释放连接开销大,独占链路利用率低,不支持差错控制
(2)报文交换:数据以报文为单位进行存储转发
优点:1.通信前无需建立连接
2.线路可以灵活分配,无需占用一条线路,利用率高
3.支持差错控制
缺点:1.报文不定长不方便存储转发管理;
2.长报文存储转发开销大;
3.长报文容易出错,重传开销大
(3)分组交换:数据以分组为单位进行存储转发
优点:无需建立连接;线路可灵活分配;勿需占用一条线路,利用率更高;支持差错控制;
相比于报文交换:1.分组定长便于存储转发;2.分组存储转发开销小;3.重传开销小
缺点:1.控制信息增加;2.存在存储转发延迟;3.传输过程可能存在丢包等现象;
信道的极限容量?两个准则
奈氏准则(理想条件下):C=2*W码元/s
香农公式:C=Wlog(1+S/N)
是不是只要无限增大码元的离散电瓶数,就能让传输速率无限大?
理论上在无噪信道可以,但在实际有噪信道不行。若波特率过高,则导致码间串扰,即接收方无法识别码导致误码率飙升。
MAC地址、IP地址、域名分别在哪一层?有什么作用,有哪些协议进行转换?
MAC地址在数据链路层,IP地址在网络层,域名在应用层。
作用:MAC地址作用:区分网卡,这个地址不能改变。
IP地址作用:区分用户,为每个用户对应一个IP地址。
域名:便于记住网站。
映射:IP转MAC协议:ARP
MAC转IP协议:RARP
域名转换成IP:DNS
MAC 地址与 IP 地址的区别?为什么有了 IP 还需要 MAC?
- 物理 vs 逻辑:MAC 地址是物理地址/硬件地址,烧录在网卡上,具有全球唯一性,负责相邻节点的寻址;IP 地址是逻辑地址,由网络管理员或 DHCP 分配,负责端到端的寻址和路由选择。
- 解耦与分层:如果只有 MAC 地址,网络将无法分层路由,全球路由器需要存储几十亿个 MAC 映射表,网络会直接崩溃。IP 地址具有层次结构(网络号+主机号),方便聚合路由。
- 现实比喻:IP 地址就像你的"收件地址",决定了包裹宏观上怎么走;MAC 地址就像你的"身份证号",当包裹到了学校传达室,大爷需要对准你的身份证号把包裹亲手交给你。
为什么要用vlan解决广播风暴?怎么解决的?
广播风暴:局域网内任何一点发出的广播帧均会被广播到所有节点
VLAN解决办法:VLAN通过软件配置的方式,将一个物理的局域网(LAN)在逻辑上划分成多个独立的、互不干扰的"虚拟局域网"。VLAN最大的核心作用就是:隔离广播域。
局域网中的数据是怎么传输的?无线网中呢?
局域网采用CSMA/CD协议,无线网采用CSMA/CA协议
简述一下CSMA/CD协议
"先听后发,边发边听,冲突停止,随机重发"
传输数据过程中,一边传输一边监听信道是否发生碰撞,发生碰撞则采用二进制指数退避算法等待一段时间后重发
简述一下CSMA/CA协议
"先听后发,忙则退避"
为什么无线局域网不能使用CSMA/CD协议?
隐蔽站问题:如下图所示,A 和 C 同时想给中间的 B 发数据。A 和 C 互相听不到对方(距离远或有墙阻挡),它们以为信道空闲同时发送,结果在 B 处发生惨烈碰撞。也就是说,发送端无法在自己这里检测到接收端那里的冲突。
信号干扰:无线局域网中,多个设备共享统一无线信道进行通信。由于无线信号的传播范围和干扰较大,相邻设备之间容易互相干扰,更多碰撞发生
简述一下与自治系统AS相关的内部网关协议和外部网关协议?
- 内部网关协议:路由信息协议RIP和开放最短路径优先协议OSPF
- RIP:基于距离向量 的路由选择协议。一条RIP路径最多包含15个路由器,当距离为16时表示不可达。该协议中路由器只和相邻路由器 进行信息交换,交换的信息是路由表。它适用于小型网络,但在大型网络中存在收敛慢、更新频繁等缺点。
- OSPF:OSPF是一种基于链路状态的路由选择协议。协议中路由器发送的信息是相邻路由器的链路状态,并且使用洪泛法进行发送。最终,每个路由器都将建立一个链路状态数据库,即整个网路的拓扑结构。
- 外部网关协议BGP
什么是ARP协议?说说ARP的工作流程以及四种典型情况。
ARP是一个网络接口层(数据链路层)协议。客户端通过ARP协议获取目标IP的MAC地址。ARP解析的过程:检查ARP缓存→局域网内发送ARP广播→目标设备回复ARP单播→更新ARP缓存。
什么是滑动窗口协议和停止等待协议?有什么区别?滑动窗口有什么优点?
- 停止等待协议是发送方每发一个数据包就必须停下来等待确认,确认到达后才能发下一个
- 而滑动窗口协议允许发送方在未收到确认时连续发送多个数据包,并随着确认的到达动态向后滑动窗口,像"流水线"一样持续传输。
- 两者的核心区别在于效率------滑动窗口通过批量发送和流水线机制,显著提高了信道利用率,尤其在长延迟网络中吞吐量远超停止等待协议;而它的窗口大小并非越大越好,实际受限于接收方缓存(接收窗口)和网络拥塞程度(拥塞窗口),取两者最小值才是有效窗口。
网络层提供的两种服务?区别是?
数据报服务:不需要建立连接,不可靠不保证有序到达,出故障的节点不会影响其他节点,每个分组都有完整的目的地址。
虚电路服务:有连接,可靠,保证有序到达,所有经过故障节点的线路均不能工作
为什么出现IPV6,IPV6相比于IPV4有什么优点?
IPv6的可以解决IPv4地址短缺的问题。
IPv6还增加了更多的功能和特性,改进首部的格式,快速处理/转发数据报,提供更高效的路由和更好的网络配置灵活性,同时还支持更多的安全特性。
描述一下TCP和UDP的区别★★★★★
TCP是面向连接的,可靠的,基于字节流的,不确保可以按需到达,首部开销大
UDP是无连接的,不可靠的,基于数据报的,确保按序到达,首部固定开销小
详细说说TCP的拥塞控制
TCP阻塞控制的基本原理是通过监测网络的拥塞情况和调整发送速率来实现。
以下是TCP阻塞控制的主要机制:
(1)慢开始和拥塞避免:
发送方会维持一个拥塞窗口,刚开始拥塞窗口和发送窗口大小相同,初值为1。每次收到一个确认,就让拥塞窗口大小变为原来的两倍,并以此类推,形成指数增大。而当窗口值等于慢开始门限值时,就会执行拥塞避免,窗口值每次加1,形成加法增大。若此时出现网络拥塞,则将拥塞窗口值重新设置为1,并且修改门限值为发生网络拥塞时的拥塞窗口值的一半;
(2)快重传和快恢复:
当发送方收到三个连续确认时,发送方执行乘法减小策略,将拥塞窗口设置为当前的一半,同时对接收方请求的帧执行快重传算法立刻进行重传而不是等待超时,并且直接执行快恢复算法,即进入拥塞避免状态,采取加法增大每次将拥塞窗口大小+1。
简述流量控制、拥塞控制、可靠传输的原理
- 流量控制
TCP使用滑动窗口大小来控制发送方的速率,以防止接收方无法及时出路大量数据(发送方根据接收方的窗口大小和缓冲区剩余空间来调整发送速率)
- 拥塞控制
TCP通过拥塞窗口来避免网络拥塞。当网络拥塞时,TCP会减少数据发送速率,以减少数据包丢失和网络拥塞的可能性。
- 可靠传输
可靠传输是一种确保数据在通信过程中不丢失、不损坏且按正确顺序到达目标地的机制。实现可靠传输通常需要以下几个关键技术:序号与确认、超时重传、滑动窗口、错误检测纠正
什么是 TCP 的 SYN Flood(SYN洪水攻击)?怎么防范?
def.攻击者伪造大量不存在的 IP 地址向服务器发送三次握手的第一步(SYN 包)。服务器收到后回传 SYN+ACK 并开辟缓存等待第三步确认,但攻击者永远不回应。服务器的大量半连接队列(Syn Queue)会被占满,导致正常用户无法连接。
SYN Cookies 技术。服务器在收到 SYN 时不开辟内存,而是根据时间、四元组等信息算出一个特殊的哈希值作为初始序号(Cookie)发回去。只有当对方真的回传合法的第三步 ACK 时,服务器才通过计算验证并为其分配内存。
TCP的三次握手过程
第一次握手是客户端发送 SYN 包并随机生成初始序列号
第二次握手服务端会返回 SYN+ACK 包,既确认客户端的序列号,也发送自己的初始序列号。
第三次握手确认收到服务端的 SYN 包,让服务端进入连接状态。
为什么是三次不是两次?
可能导致已失效的连接请求突然生效,比如客户端之前发的 SYN 包延迟到现在才到,两次握手服务端就直接建立连接,会浪费资源甚至引发数据错乱。
HTTPS 在 TCP 三次握手之后,还多了 TLS 握手,这个阶段主要解决什么问题?
TLS 握手核心是协商加密算法、交换会话密钥,同时验证服务端身份,防止数据在传输过程中被窃听或篡改
TCP 挥手为什么需要四次呢?
关闭连接时,客户端向服务端发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据。
服务端收到客户端的 FIN 报文时,先回一个 ACK 应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送 FIN 报文给客户端来表示同意现在关闭连接。
TCP 四次挥手过程中,为什么需要等待 2MSL, 才进入 CLOSED 关闭状态?
(1)保证第四次挥手的 ACK 报文能够到达服务端。 如果客户端发完最后一个 ACK 就直接闪退,而这个 ACK 在路上丢了,服务端就会因为收不到确认而不断重传 FIN。此时客户端已经死机,服务端将永远等不到回应而无法正常关闭。等待 2MSL 可以确保如果服务端重传 FIN,客户端还能在超时范围内收到并重新补发 ACK。
(2)防止"已失效的连接请求报文段"出现在下一个新连接中。 等待 2MSL 可以让本连接持续时间内产生的所有报文段都在网络中消失,确保下一个新连接不会收到上一个连接的残留死包。
MSL 是报⽂最⼤⽣存时间,它是任何报⽂在⽹络上存在的最⻓时间,超过这个时间报⽂将被丢弃。TIME_WAIT 等待 2 倍的 MSL,⽹络中可能存在来⾃发送⽅的数据包,当这些发送⽅的数据包被接收⽅处理后⼜会向对⽅发送响应,所以⼀来⼀回需要等待 2 倍的时间。
HTTP和HTTPS的核心区别?
HTTPS 在 HTTP 和 TCP 之间加了 SSL/TLS 层,把传输的数据加密了,能防窃听和篡改,而 HTTP 是明文传输的
HTTPS 核心加密流程(混合加密机制):
非对称加密建连:客户端向服务器索要 CA 数字证书,获取服务器的公钥。
验证证书:客户端验证证书合法性,然后本地生成一个随机数作为对称密钥(会话密钥)。
密钥传输:客户端用服务器的公钥加密这个对称密钥,发给服务器。服务器用自己的私钥解密,得到对称密钥。
对称加密通信:此后双方所有的网页内容,全部使用这个对称密钥进行极速加密传输(因为非对称加密太慢,混合加密兼顾了安全与速度)
流量控制引发的死锁?怎么避免死锁的发生?
当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。但是如果这个窗口不为0的应答在传输过程丢失,发送者一直等待下去,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。
为了避免流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。时间一到便主动发送报文询问接收者的窗口大小。若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生
DNS域名解析的过程?★★★★
DNS解析就是将域名转换为IP。按照本地DNS服务器→本地DNS服务器→根域名服务器→顶级域名服务器→权威域名服务器的顺序递归查询,得到IP。
DHCP的作用和工作原理?★★★★
DHCP属于应用层协议,传输层采用的是UDP协议,DHCP用于自动分配IP地址给网络中的主机。当客户端初次接入网络,或者网络发生变化时,会触发DHCP机制。
(1)客户端首先发起DHCP发现报文,使用UDP广播,目的IP为255.255.255.255,源IP为0.0.0.0。
(2)DHCP服务器收到后,会发送 DHCP提供报文响应。源IP为DHCP服务器的IP地址,目的IP为255.255.255.255,报文携带了可租约IP、子网掩码、默认网关、DNS服务器以及IP地址租用期。
(3)客户端选择一个服务器发送的DHCP提供报文,发送 DHCP请求报文。目的IP为255.255.255.255,源IP地址为0.0.0.0。
(4)DHCP服务器会发送DHCP确认报文进行响应。随后,客户端就能够在租用期内使用分配的IP。
请你说说HTTP的一些特性?★★★
(1)HTTP是无状态的,不会保存客户端与服务器之间的交互状态。每次请求之间是独立的,不会记忆上一次请求的信息。如果想要维护状态,可以使用cookies和session。
(2)HTTP是不安全的,基于明文传输,存在窃听、篡改和冒充的风险。
【子问题:为什么HTTP是无状态的?】
防止传输的数据被窃听、篡改、冒充;如果每次都要携带状态信息,会增加网络传输的压力,也会客户端和服务器内存的压力。
Cookie 与 Session 的区别
Cookie:服务器发给客户端并存储在客户端浏览器的一小段文本。下次请求时客户端自动带上。安全性较低,易被窃取。
Session:数据存储在服务器端。服务器通过 Cookie 发给客户端一个 SessionID。客户端带着 ID 来认领自己的数据。安全性高,但开销大。
在浏览器里输入一个网址,会发生什么?★★★★★
解析url
缓存判断(按照浏览器缓存-》操作系统缓存-》路由器缓存进行检查)
DNS解析将域名转换为IP
ARP解析IP转换为MAC
建立TCP连接
发送http/https请求和响应
浏览器渲染
一个TCP连接可以供多少HTTP连接使用?
- 在HTTP/1.0和HTTP/1.1协议中,一个TCP连接可以供一个HTTP连接使用。
- HTTP/1.0属于非持久连接,通常每个HTTP请求都会打开一个新的TCP连接,请求完成后关闭连接。
- HTTP/1.1引入了持久连接,这使得单个TCP连接可以在发送完一个HTTP响应后保持打开状态,用于传输后续的HTTP请求和响应。尽管用管道机制,HTTP/1.1没有内建真正的并行请求处理机制。
- HTTP/2引入了多路复用,允许在单个TCP连接上并行发送多个HTTP请求和响应。
- HTTP/3不再使用TCP,而改为使用UDP,且在UDP和应用层之间新增一层QUIC协议。
当视频突然卡帧,是什么原因?★★★★
(1)客户端:客户端网络带宽不够,或者CPU、GPU、内存等资源不足,或解码器问题。
(2)服务器:服务器负载量过大,或配置不当,或硬件故障。
(3)网络链路拥塞:网络中的数据流量过大,导致出现丢包。如果两端使用UDP进行传输,丢失的包并不会重传。
访问一个网页时一直在转圈圈,分析是什么原因?★★★★
(1)服务器
可能是服务器连接数过多,CPU、内存、带宽的压力过大;或者服务出现了异常,例如码错误、配置不当、或者受到限流/熔断/降级;或服务器遭受了DoS攻击。
(2)客户端
可能是客户端连接数过多,CPU、内存、带宽的压力过大;或者WIFI信号弱,有限网卡出故障了。
(3)网络:DNS解析失败;TCP连接异常,没有建立三次握手;网络链路拥塞,或被防火墙拦截。
为什么 FTP 要设计成控制与数据分离的双通道,而不是像 HTTP 那样用单通道?
这属于经典的"带外信令"设计。数据连接和控制连接
而双通道设计中,控制连接一直保持空闲且畅通。即使数据连接正在满载传输大文件,用户发出的"终止/中断"控制命令也能通过 21 端口瞬间到达服务器,服务器收到后立刻强行关闭 20 端口的数据连接,从而实现了极其优异的控制实时性。