计算机网络问题合集版
介绍一下OSI参考模型应用层为应用程序提供服务表示层解决通信时的数据格式问题会话层负责在应用之间建立、维护、终止会话传输层负责端到端的数据传输网络层负责主机到主机之间的数据传输、路由与寻址数据链路层负责相邻节点直接传输比特帧进行差错检测物理层负责硬件之间通过物理媒介传输二进制比特流介绍一下TCP/IP模型应用层传输层网络层网络接口层网络模型为什么要分层网络是一个庞大的系统分层是为了将大化小实现解耦。每一层只需向上层提供服务并调用下层接口不需要关心下层的具体实现。极大的提高了系统的可扩展性与可维护性。什么是封装、解封装数据在发送端从上往下传每经过一层就会加上该层的控制信息首部这个过程叫封装在接收端从下往上传每过一层就剥离掉该层的首部最终还原出原始数据这个过程叫解封装。电路交换、报文交换、分组交换的优缺点1电路交换通信前端到端建立一条物理链路在通信过程中一直占用优点没有延迟、传输效率高缺点建立释放连接开销大独占链路利用率低不支持差错控制2报文交换数据以报文为单位进行存储转发优点1.通信前无需建立连接2.线路可以灵活分配无需占用一条线路利用率高3.支持差错控制缺点1.报文不定长不方便存储转发管理2.长报文存储转发开销大3.长报文容易出错重传开销大3分组交换数据以分组为单位进行存储转发优点无需建立连接线路可灵活分配勿需占用一条线路利用率更高支持差错控制相比于报文交换1.分组定长便于存储转发2.分组存储转发开销小3.重传开销小缺点1.控制信息增加2.存在存储转发延迟3.传输过程可能存在丢包等现象信道的极限容量两个准则奈氏准则理想条件下C2*W码元/s香农公式CWlog1S/N是不是只要无限增大码元的离散电瓶数就能让传输速率无限大理论上在无噪信道可以但在实际有噪信道不行。若波特率过高则导致码间串扰即接收方无法识别码导致误码率飙升。MAC地址、IP地址、域名分别在哪一层有什么作用有哪些协议进行转换MAC地址在数据链路层IP地址在网络层域名在应用层。作用MAC地址作用区分网卡这个地址不能改变。IP地址作用区分用户为每个用户对应一个IP地址。域名便于记住网站。映射IP转MAC协议ARPMAC转IP协议RARP域名转换成IPDNSMAC 地址与 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和开放最短路径优先协议OSPFRIP基于距离向量的路由选择协议。一条RIP路径最多包含15个路由器当距离为16时表示不可达。该协议中路由器只和相邻路由器进行信息交换交换的信息是路由表。它适用于小型网络但在大型网络中存在收敛慢、更新频繁等缺点。OSPFOSPF是一种基于链路状态的路由选择协议。协议中路由器发送的信息是相邻路由器的链路状态并且使用洪泛法进行发送。最终每个路由器都将建立一个链路状态数据库即整个网路的拓扑结构。外部网关协议BGP什么是ARP协议说说ARP的工作流程以及四种典型情况。ARP是一个网络接口层数据链路层协议。客户端通过ARP协议获取目标IP的MAC地址。ARP解析的过程检查ARP缓存→局域网内发送ARP广播→目标设备回复ARP单播→更新ARP缓存。什么是滑动窗口协议和停止等待协议有什么区别滑动窗口有什么优点停止等待协议是发送方每发一个数据包就必须停下来等待确认确认到达后才能发下一个而滑动窗口协议允许发送方在未收到确认时连续发送多个数据包并随着确认的到达动态向后滑动窗口像“流水线”一样持续传输。两者的核心区别在于效率——滑动窗口通过批量发送和流水线机制显著提高了信道利用率尤其在长延迟网络中吞吐量远超停止等待协议而它的窗口大小并非越大越好实际受限于接收方缓存接收窗口和网络拥塞程度拥塞窗口取两者最小值才是有效窗口。网络层提供的两种服务区别是数据报服务不需要建立连接不可靠不保证有序到达出故障的节点不会影响其他节点每个分组都有完整的目的地址。虚电路服务有连接可靠保证有序到达所有经过故障节点的线路均不能工作为什么出现IPV6IPV6相比于IPV4有什么优点IPv6的可以解决IPv4地址短缺的问题。IPv6还增加了更多的功能和特性改进首部的格式快速处理/转发数据报提供更高效的路由和更好的网络配置灵活性同时还支持更多的安全特性。描述一下TCP和UDP的区别★★★★★TCP是面向连接的可靠的基于字节流的不确保可以按需到达首部开销大UDP是无连接的不可靠的基于数据报的确保按序到达首部固定开销小详细说说TCP的拥塞控制TCP阻塞控制的基本原理是通过监测网络的拥塞情况和调整发送速率来实现。以下是TCP阻塞控制的主要机制1慢开始和拥塞避免发送方会维持一个拥塞窗口刚开始拥塞窗口和发送窗口大小相同初值为1。每次收到一个确认就让拥塞窗口大小变为原来的两倍并以此类推形成指数增大。而当窗口值等于慢开始门限值时就会执行拥塞避免窗口值每次加1形成加法增大。若此时出现网络拥塞则将拥塞窗口值重新设置为1并且修改门限值为发生网络拥塞时的拥塞窗口值的一半2快重传和快恢复当发送方收到三个连续确认时发送方执行乘法减小策略将拥塞窗口设置为当前的一半同时对接收方请求的帧执行快重传算法立刻进行重传而不是等待超时并且直接执行快恢复算法即进入拥塞避免状态采取加法增大每次将拥塞窗口大小1。简述流量控制、拥塞控制、可靠传输的原理流量控制TCP使用滑动窗口大小来控制发送方的速率以防止接收方无法及时出路大量数据发送方根据接收方的窗口大小和缓冲区剩余空间来调整发送速率拥塞控制TCP通过拥塞窗口来避免网络拥塞。当网络拥塞时TCP会减少数据发送速率以减少数据包丢失和网络拥塞的可能性。可靠传输可靠传输是一种确保数据在通信过程中不丢失、不损坏且按正确顺序到达目标地的机制。实现可靠传输通常需要以下几个关键技术序号与确认、超时重传、滑动窗口、错误检测纠正什么是 TCP 的 SYN FloodSYN洪水攻击怎么防范def.攻击者伪造大量不存在的 IP 地址向服务器发送三次握手的第一步SYN 包。服务器收到后回传 SYNACK 并开辟缓存等待第三步确认但攻击者永远不回应。服务器的大量半连接队列Syn Queue会被占满导致正常用户无法连接。SYN Cookies 技术。服务器在收到 SYN 时不开辟内存而是根据时间、四元组等信息算出一个特殊的哈希值作为初始序号Cookie发回去。只有当对方真的回传合法的第三步 ACK 时服务器才通过计算验证并为其分配内存。TCP的三次握手过程第一次握手是客户端发送 SYN 包并随机生成初始序列号第二次握手服务端会返回 SYNACK 包既确认客户端的序列号也发送自己的初始序列号。第三次握手确认收到服务端的 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。2DHCP服务器收到后会发送 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。4DHCP服务器会发送DHCP确认报文进行响应。随后客户端就能够在租用期内使用分配的IP。请你说说HTTP的一些特性★★★1HTTP是无状态的不会保存客户端与服务器之间的交互状态。每次请求之间是独立的不会记忆上一次请求的信息。如果想要维护状态可以使用cookies和session。2HTTP是不安全的基于明文传输存在窃听、篡改和冒充的风险。【子问题为什么HTTP是无状态的】防止传输的数据被窃听、篡改、冒充如果每次都要携带状态信息会增加网络传输的压力也会客户端和服务器内存的压力。Cookie 与 Session 的区别Cookie服务器发给客户端并存储在客户端浏览器的一小段文本。下次请求时客户端自动带上。安全性较低易被窃取。Session数据存储在服务器端。服务器通过 Cookie 发给客户端一个 SessionID。客户端带着 ID 来认领自己的数据。安全性高但开销大。在浏览器里输入一个网址会发生什么★★★★★解析url缓存判断按照浏览器缓存-》操作系统缓存-》路由器缓存进行检查DNS解析将域名转换为IPARP解析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 端口的数据连接从而实现了极其优异的控制实时性。