常考的面试题:计算机网络篇(自行总结)

  1. 主机之间的通信方式

    客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。

    对等(P2P):不区分客户和服务器

  2. 五层协议

    应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。

    传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的 应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报 文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提 供完整性服务,UDP 主要提供及时性服务。

    网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递 下来的报文段或者用户数据报封装成分组。

    数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同 一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。

    物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽 传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

  1. OSI

    表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。

    会话层 :建立及管理会话。

  2. TCP/IP

    它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。

    TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。

  3. 物理层通信方式

    单工通信:单向传输

    半双工通信:双向交替传输

    全双工通信:双向同时传输

  4. 网络层

    使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。

  5. IP数据报格式

版本 : 有 4(IPv4)和 6(IPv6)两个值;

首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度 为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。

区分服务 : 用来获得更好的服务,一般情况下不使用。

总长度 : 包括首部长度和数据部分长度。

生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。

协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。

首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算 的工作量。

标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。

片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。

  1. IP地址编值方式

    分类:

    由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。 IP 地址 ::= {< 网络号 >, < 主机号 >}

子网划分:

通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址

IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >} 

要使用子网,必须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那 么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。

注意,外部网络看不到子网的存在。

无分类:

无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编 码,网络前缀的长度可以根据需要变化。

IP 地址 ::= {< 网络前缀号 >, < 主机号 >} CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀。

CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为网络前缀的长度。

一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路 由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚 合,也称为 构成超网 。 在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹 配来确定应该匹配哪一个。
  1. 地址解析协议 ARP

    网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP数据报的源地址和目的地址始终不变,而MAC地址随着链路的改变而改变。

每个主机都有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到MAC地址的映射表。

​ 如果主机A知道主机B的IP地址,但是ARP高速缓存中没有该IP地址到MAC地址的映射,此时主机A通过广播的方式发送AARP请求分组,主机B收到该请求后发送ARP响应分组给主机A告知其MAC地址,随后主机A向其高速缓存中写入主机B的IP地址到MAC地址的映射。

  1. 网际控制报文协议 ICMP

    ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。

ICMP 报文分为差错报告报文和询问报文。

Ping

Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。 Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间 和成功响应的次数估算出数据包往返时间以及丢包率。

Traceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。 Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。

源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一 个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超 过差错报告报文;

源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收 下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。

不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。

  1. 虚拟专用网 VPN

    由于 IP 地址的紧缺(原因),一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所 有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。

    有三个专用地址块:

    10.0.0.0 ~ 10.255.255.255

    172.16.0.0 ~ 172.31.255.255

    192.168.0.0 ~ 192.168.255.255

    VPN 使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信;虚 拟指好像是,而实际上并不是,它有经过公用的互联网。 下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址 是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加 上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。

  1. 网络地址转换 NAT

    专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。 在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机 接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网 内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。

image-20210410171409845

  1. 路由器的结构

    路由器从功能上可以划分为:路由选择和分组转发。

    分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。

  1. 路由器分组转发流程

    从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。

    若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付;

    若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器;

    若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;

    若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;

    报告转发分组出错。

  1. 路由选择协议

    路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。

    互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。

    可以把路由选择协议划分为两大类:

    自治系统内部的路由选择:RIP 和 OSPF

    自治系统间的路由选择:BGP

  2. UDP 和 TCP 的特点

    用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对 于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交 互通信。

    传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提 供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一 条 TCP 连接只能是点对点的(一对一)。

  3. UDP首部格式

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。

  1. TCP首部格式

序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字 节,那么下一个报文段的序号应为 401。

确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据 长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。

数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。

确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。

同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立 连接,则响应报文中 SYN=1,ACK=1。

终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。

窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空 间是有限的。

  1. TCP的三次握手

假设 A 为客户端,B 为服务器端。

首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。

A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。

B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选 择一个初始的序号 y。

A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。

B 收到 A 的确认后,连接建立。

  1. 三次握手的原因

    第三次握手时为了防止失效的连接请求到达服务器,让服务器错误打开连接。

    客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

  2. 域名系统DNS

    DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保 留它自己的那部分数据。

    域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。

  1. 文件传送协议FTP

    FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件:

    控制连接:服务器打开端口号 21 等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传 送给服务器,并传回服务器的应答。

    数据连接:用来传送一个文件数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值