计算机网络原理 自用面试向

第一章 概述

1.1 三种交换方式:

电路交换:建立连接,通话,释放连接,e.g:电话(计算机使用效率低)

分组交换:发送一个个分组报文到网络之中,从而传输给接收者

报文交换:早期电报通信网使用,不再详细说明

主要使用分组交换。其优点很明显:无需建立连接,线路利用率高,加速传输,减少了重传的数据量…,缺点:转发时延,需要传输额外的头部信息,对于数据报服务存在失序,重复分组等问题;对于虚电路服务,存在建立传输释放等过程。

1.2 计算机网络的性能指标

速率(MB/s):比特率,表示单位时间内传输多少个二进制位;

带宽(MB/s):数据的最大传输能力,可以类比为一根水管的粗细;

吞吐量(MB/s):实际传输的速率;

时延:数据包从源到目的端需要多少时间 往返时间RTT:从发送端出发,到达接收端并收到返回信息所需的总时间;

利用率:吞吐量/带宽;

丢包率:发送的数据包中,有多少没有成功到达。

1.3 为什么要使用分层的思想设计计算机网络系统

1.容易定位问题。可以快速知道哪一层出现了错误。

2.某一层出现问题不影响其他服务。

3.易于设计,减轻了设计的压力。易于统一标准。

1.4 OSI参考模型

层级 名称
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
1 物理层

7:直接为应用程序提供网络服务

6:处理数据格式、编码、压缩和加密

5:建立、管理和终止通信会话

4:提供进程到进程的端到端传输

3:提供主机之间的通信

2:负责同一条链路或者同一个局域网内的通信

1:真正传输0/1

1.5 TCP/IP参考模型

层级 名称 对应 OSI 层级
4 应用层 应用层、表示层、会话层
3 传输层 传输层
2 网际层 网络层
1 网络接口层 数据链路层、物理层

4:应用服务、数据格式和会话管理

3:进程间端到端通信

2:提供主机之间的通信

1:局域网传输和物理信号传输

第二章 物理层

2.1 物理层实现了什么功能?

在物理媒体上为数据端的设备透明的传输原始的比特流。有机械特性、电气特性、功能特性与过程特性。

2.2 物理层的设备不阻隔冲突域也不阻隔广播域

2.3 有什么常见的传输媒体?

导引形:双绞线、同轴电缆、光纤

非导引形:无线电波、微波、红外线、可见光

设备:中继器(失真的信号放大、整形),集线器(多端口中继器)

第三章 数据链路层

3.1 数据链路层的功能

加强物理层传输原始比特流的能力,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路。

封装成帧、差错检测、可靠传输(超时重传)三个方面,是数据链路层最大的问题。

3.2 封装成帧需要完成什么任务?

帧定界:发送方给一个帧添加上开头和结尾

帧同步:接收方判断一个帧的开头和结尾

透明传输:数据部分恰好出现了与帧定界符相同的内容,接收方不能把它误认为帧结束。

3.3 数据链路层如何实现差错检测与控制?

检错编码(CRC,奇偶校验码),海明码。

后退N帧:某帧出错,从其开始批量重传

选择重传:只重传出错帧

3.4 数据链路层如何实现流量控制?

1.停等方式 发送一个等待ACK再发送;

2.滑动窗口 可以允许发送方连续发送多个帧,但限制“尚未确认的帧”的数量。

3.5 数据链路层的随机访问介质控制机制

CSMA/CD(碰撞检测),适合有线网络。发送前监听信道,如果忙则持续等待,如果空闲就传输数据。发送的时候检测碰撞,如果有碰撞就发送碰撞信号,随机等待一段之间之后再发送。

CSMA/CA(碰撞避免),适合无线网。发送前监听信道,如果持续一段时间空闲,随机选择退避时间,退避倒计时结束后发送。若收到ACK认为发送成功,否则扩大竞争窗口并重传。

为什么无线网要用CSMA/CA?首先,其自身发送信号太强,难以监听碰撞。其次,有可能无法感知到对方的存在,因此导致碰撞。

第四章 网络层

4.1 网络层的任务是什么?

实现主机之间的通信,主要任务有逻辑寻址(IP地址标识主机)、路由选择(数据包网络之间怎么走)、分组转发。其提供无连接,尽力而为的交付。

4.2 IP地址与MAC地址

IP地址是动态分配的,类似于人的住址。MAC地址是静态的,类似于人的身份证。

4.3 IPV4和IPV6协议是什么?区别?

这两个都是网络层的协议,用于IP寻址和数据包转发。IPV6基于IPV4的32位地址不足而做出设计,同时安全性也更强。

这两者不能直接进行通信,解决方案:1.双栈 设备同时运行两种协议。2.隧道 把一种协议的数据包封装进另一种协议。

4.4 子网划分的目的?子网掩码怎么计算子网?

子网划分的目的是提高公有IP的利用率,同时分配不同子网可以减小广播范围,方便安全控制(部门之间隔离)。

子网掩码和IP进行与操作就能得到网络地址。

4.5 有什么常见的路由协议?

AS内路由协议:基于距离向量的RIP(通过学习与它相邻的路由器的路由表,通过Bellman-Ford算法算出来到各个网络的最短距离),基于链路状态的OSPF(收集整个区域的拓扑信息,独立运行Dijistra算法算出最短路径)。

AS间路由协议:BGP边界网关协议。

4.6 ARP协议是干什么的?

ARP 用于将 IP 地址解析为物理 MAC 地址。每个网络设备都有一个唯一的 MAC 地址, 而 IP 地址则用于在互联网上进行通信。设备要发送到一个IP的时候,若不知道ARP地址,会发送ARP广播报文,接收的设备收到广播询问报文之后会返回自己的MAC地址。

4.7 ICMP协议是干什么的?

ICMP协议辅助报告网络状态和错误,用于检测目标是否可达(ping),辅助排查网络故障。

4.8 DHCP协议是干什么的?

分配IP地址、子网掩码、网关、DNS服务器地址。

DORA过程:

Discover:网络中有没有DHCP服务器?

Offer:收到D消息的给主机提供Offer,

Request:申请使用某一个Offer,

Acknowledge:知道你用这个了。

4.9 NAT协议是干什么的?

转换公网地址与私网地址。访问互联网时,出口路由器通过NAT把私有IP转换成公网IP。

第五章 传输层

5.1 简述TCP协议和UDP协议的区别?

1.TCP是面向连接的协议,需要在发送之前建立连接,而UDP可以直接发送;

2.TCP提供可靠的数据传输,有确认、重传等机制,UDP则直接发送;

3.TCP有流量控制拥塞控制等限制传输速度,UDP则没有,所以发送速度快;

4.TCP保证数据不会丢失、重复和乱序(虚电路),UDP则没有(数字报);

5.TCP首部开销大,UDP首部开销小。

5.2 TCP流量控制的机制?

流量控制,是为了确保对方的缓冲区能放的下自己发送过去的信息。

接收方通过TCP首部的接收窗口rwnd来汇报自己还能接收多少数据。

5.3 TCP拥塞控制的机制?

拥塞控制,解决的是过多数据进入网络,导致网络出现拥塞数据包无法正常到达。

TCP的拥塞控制主要有下面的四种机制:

1.慢启动。连接开始时,从cwnd=1开始,约经过一个RTT大小翻倍。

2.拥塞避免。cwnd增长到ssthresh之后,转为线性增长。

3.快重传。发送方收到多个重复ACK,收到三个重复的就判断丢失,直接重传。

4.快恢复。若出现丢包,将ssthresh与cwnd减半,重传报文后进入拥塞避免。

5.4 什么是流量控制引发的死锁?怎么避免发生?

收到一个窗口为0的应答报文,发送方就停止发送了。之后若接收方发送窗口不为0的报文,这个报文丢失了,就会一直等待。

解决方法:设置一个计时器。收到大小为0的窗口就启动计时器,时间到了就去主动询问窗口的大小。

5.5 为什么建立TCP要三次握手?

如果只有两次握手,服务器并不知道客户端是否收到了自己的回复报文。或者如果有旧的请求连接报文传过去,会错误地建立连接。

5.6 为什么释放TCP要四次挥手?

TCP是全双工通信,两个方向的数据流必须分别关闭。所以两个方向都必须经过“汇报自己停止发送”“对方收到汇报”这个过程。

有时候也可以三次挥手。服务器收到客户端地FIN时,如果自己也没有要发送的了,可以直接回复FIN+ACK。

第六章 应用层

6.1 关于HTTP协议

HTTP1.1:基础的HTTP协议,有队头阻塞问题(遵循FCFS,有可能HTML请求很快图片请求很慢,但是只能顺序去服务)

HTTPS:使用 SSL 或 TLS 协议对 HTTP 进行加密,使得传输过程更加安全可靠。

HTTP2.0:通过将大的整个请求分割成小的,缓解了队头阻塞问题,但是由于TCP连接还是只有一个,没有从本质上解决。

HTTP3.0:彻底解决了队头阻塞问题。使用基于UDP的QUIC协议(和UDP有不同,其保证可靠传输等性能),将不同的请求分为不同的stream来进行处理。

6.2 关于DNS协议

负责把方便人类记忆的域名转换成计算机通信所需的IP地址。

浏览器先检查自己的缓存,如果没有记录,本地计算机会向配置的本地域名服务器发送查询请求,之后进行递归或迭代查询。

6.3 其他的一些应用层协议的作用

FTP:文件传输协议,有控制连接和数据连接

SMTP:简单邮件传输协议,实现邮件的Push操作(用户-服务器,服务器-服务器)

POP3:邮局协议,实现邮件的Pull操作(服务器-用户)

6.4 应用层传输方式

C/S方式 ,P2P点对点方式