计网-基础

总结计算机网络基础面试题目和知识点

1、OSI 七层模型、TCP/IP 五层模型以及各层的代表协议

  

  一文读懂OSI七层模型和TCP/IP五层模型

  

  网络接口层的传输单位是(frame),IP 层的传输单位是(packet),TCP 层的传输单位是(segment),HTTP 的传输单位则是消息或报文(message)

为什么协议分层?是为了解决什么问题?

  总结原因: 简化、灵活、易维护、标准化

  每日一道面试题-为什么要对网络协议分层?

两台计算机通信过程

  💻 一文读懂两台计算机之间是如何通信的

2、浏览器中输入URL到返回页面的全过程

总步骤

  • 1.根据域名,进行DNS域名解析;
  • 2.拿到解析的IP地址,建立TCP连接;
  • 3.向IP地址,发送HTTP请求;
  • 4.服务器处理请求;
  • 5.返回响应结果;
  • 6.关闭TCP连接;
  • 7.浏览器解析HTML;
  • 8.浏览器布局渲染;

查找域名: 本-根-顶级-权威

  

  浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去 hosts 文件看,也没有,才会去问「本地 DNS 服务器」

协议栈

  通过 DNS 获取到 IP 后,就可以把 HTTP 的传输工作交给操作系统中的协议栈

  协议栈的内部分为几个部分,分别承担不同的工作。上下关系是有一定的规则的,上面的部分会向下面的部分委托工作,下面的部分收到委托的工作并执行。

  

  • ICMP 用于告知网络包传送过程中产生的错误以及各种控制信息。
  • ARP 用于根据 IP 地址查询相应的以太网 MAC 地址。

ICMP协议

  ping/traceroute 命令是基于 ICMP 协议来实现的。

  ICMP是 Internet Control Message Protocol 的缩写,即互联网控制消息协议。它是互联网协议族的核心协议之一。它用于 TCP/IP 网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问题。

  从 ICMP 的报文格式来说,ICMP 是 IP 的上层协议。但是 ICMP 是分担了 IP 的一部分功能。所以,他也被认为是与 IP 同层的协议

  虽然 ICMP 是网络层协议,但是它不像 IP 协议和 ARP 协议一样直接传递给数据链路层,而是先封装成 IP 数据包然后再传递给数据链路层。所以在 IP 数据包中如果协议类型字段的值是 1 的话,就表示 IP 数据是 ICMP 报文。IP 数据包就是靠这个协议类型字段来区分不同的数据包的。

  在 IP 通信中如果某个包因为未知原因没有到达目的地址,那么这个具体的原因就是由 ICMP 负责告知。而 ICMP 协议的类型定义中就清楚的描述了各种报文的含义。

  ICMP协议的类型分为两大类,查询报文差错报文

  ping命令原理

  1. 向目的服务器发送回显请求 :主机会构建一个 ICMP 回显请求消息数据包(类型是8,代码是0),在这个回显请求数据包中,除了类型和代码字段,还被追加了标识符(填写进程号)和序号字段(每送出一个数据包数值就增加1)。
  2. 目的服务器发送回显应答 :(类型是0,代码是0)
  3. 源服务器显示相关数据: 记住发送回显请求数据包的时间,与接收到回显应答数据包的时间差,就能计算出数据包一去一回所需要的时间。这个时候ping命令就会将目的服务器的 IP 地址,数据大小,往返花费的时间打印到屏幕上。

  traceroute命令原理

  利用ICMP差错报文,原理就是利用 IP 包的 TTL 从 1 开始按照顺序递增的同时发送 UDP 包,强制接收 ICMP 超时消息的方法。

  (1)首先 traceroute 会将 IP 包的 TTL 设置 为 1,然后发送 UDP 包,他会填入一个端口号作为 UDP 目标端口号(默认是:33434-33534)

  (2)当目的主机收到 UDP 包后,会返回 ICMP 差错报文消息(类型 3,代码 3)。该报文类型是端口不可达,说明发送方发出的 UDP 包到达了目的主机。

  这样的过程,traceroute 就可以拿到了所有的路由器 IP,这样子就可以看到从源主机到目的主机过程中的所有路由信息。

  

  traceroute 在类 Unix/Linux 系统中默认使用的是 UDP 协议,也可以通过参数修改为使用 ICMP 协议;Windows 操作系统中只使用 ICMP 协议。

ARP协议

  地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  **ARP表 **

  网络设备一般都有一个ARP缓存(ARP Cache),ARP缓存用来存放IP地址和MAC地址的关联信息。

  ARP表项又分为动态ARP表项和静态ARP表项。

  动态ARP表项

  动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期

  静态ARP表项

  静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。直到重新启动计算机为止。

  一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入。

  当希望设备和指定用户只能使用某个固定的IP地址和MAC地址通信时,可以配置短静态ARP表项,当进一步希望限定这个用户只在某VLAN内的某个特定接口上连接时就可以配置长静态ARP表项。

可靠传输-TCP

  

  SYN 是发起一个连接,ACK 是回复,RST 是重新连接,FIN 是结束连接等。TCP 是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方的状态变更。

  TCP有流量控制和拥塞控制

三次握手

  

  TCP 的连接状态查看,在 Linux 可以通过 netstat -napt 命令查看。

分割数据

  如果 HTTP 请求消息比较长,超过了 MSS 的长度,这时 TCP 就需要把 HTTP 的数据拆解成一块块的数据发送,而不是一次性发送所有数据。

  数据会被以 MSS 的长度为单位进行拆分,拆分出来的每一块数据都会被放进单独的网络包中。也就是在每个被拆分的数据加上 TCP 头信息,然后交给 IP 模块来发送数据。

  

  在双方建立了连接后,TCP 报文中的数据部分就是存放 HTTP 头部 + 数据,组装好 TCP 报文之后,就需交给下面的网络层处理。

远程定位-IP

  在 IP 协议里面需要有源地址 IP目标地址 IP

  • 源地址IP,即是客户端输出的 IP 地址;
  • 目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP。

  当存在多个网卡时,在填写源地址 IP 时,就需要判断到底应该填写哪个地址。这个判断相当于在多块网卡中判断应该使用哪个一块网卡来发送包。

  这个时候就需要根据路由表规则,来判断哪一个网卡作为源地址 IP。 掩码与运算

  有了MAC地址,为什么还要有IP地址?

  有了MAC地址,为什么还要有IP地址?或者说有了 IP 地址,为什么还要用 MAC 地址?_有了mac地址为什么还需要ip地址呢_天亮i的博客-CSDN博客

  有了IP为什么还要有MAC?

  有了IP地址,为何还要有MAC地址

  

两点运输-MAC

  在 MAC 包头里需要发送方 MAC 地址接收方目标 MAC 地址,用于两点之间的传输

  一般在 TCP/IP 通信里,MAC 包头的协议类型只使用:

  • 0800 : IP 协议
  • 0806 : ARP 协议

  至此,网络包的报文如下图:

  

出口-网卡

  网络包只是存放在内存中的一串二进制数字信息,没有办法直接发送给对方。因此,我们需要将数字信息转换为电信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。

  负责执行这一操作的是网卡,要控制网卡还需要靠网卡驱动程序

  网卡驱动获取网络包之后,会将其复制到网卡内的缓存区中,接着会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列

  

送别者-交换机

  交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有 MAC 地址

  交换机的 MAC 地址表主要包含两个信息:

  • 一个是设备的 MAC 地址,
  • 另一个是该设备连接在交换机的哪个端口上。

  交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口

  地址表中找不到指定的 MAC 地址,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上,无论该设备连接在哪个端口上都能收到这个包。

  此外,如果接收方 MAC 地址是一个广播地址,那么交换机会将包发送到除源端口之外的所有端口。

  以下两个属于广播地址:

  • MAC 地址中的 FF:FF:FF:FF:FF:FF
  • IP 地址中的 255.255.255.255

DNS出错,如何排查错误?

  如何排查DNS解析出错?这四步轻松搞定 - 知乎 (zhihu.com)

  1、通过whois查看域名状态

  2、验证网络连接

  3、ping主机

  4、NSLookup

客户端卡顿可能是什么问题? 如何排查?

  面试题|排查网页打开慢的方法有多少种? 我总结了15个 - 知乎 (zhihu.com)

  ‍


计网-基础
https://shanhainanhua.github.io/2023/08/11/计网-基础/
作者
wantong
发布于
2023年8月11日
许可协议