计算机网络面试易考知识总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44346035/article/details/99427602

1. 计算机网络体系结构

在这里插入图片描述

2. 各层描述

描述
应用层 应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。
传输层 第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。
网络层 在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。此外还有一些路由协议和地 址解析协议(ARP)。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、RIP、OSPF等。
数据链路层 在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。
物理层 考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。数据的单位称为比特(bit)。

3. 各层层协议首部详述

https://blog.csdn.net/sty124578/article/details/79085608

4. MAC

MAC(Media Access Control,介质访问控制)地址
或称为MAC位址、硬件地址,用来定义网络设备的位置。MAC集成在网卡,MAC地址是48位的(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如08:00:20:0A:8C:6D就是一个MAC地址

5. 路由器和交换机的区别

路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
交换机:(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。发生在数据链路层。

  1. 工作层次不同:
    最初的交换机数据链路层,也就是第二层,而路由器则工作网络层。,交换机一般都是采用硬件电路实现数据帧的转发,而路由器工作在网络层,要实现更加复杂的协议,具有更加智能的转发决策功能,一般都会在在路由器中实现复杂的路由算法,更偏向于软件实现其功能。
  2. 数据的转发对象不同:
    交换机是根据MAC地址转发数据帧,而路由器则是根据IP地址来转发IP数据报/分组。数据帧是在IP数据包/分组的基础上封装了帧头(源MAC和目的MAC等)和帧尾(CRC校验码)。
  3. ”分工“不同
    交换机主要是用于组建局域网,而路由器则是负责让主机连接外网。多台主机可以通过网线连接到交换机,这时就组建好了局域网,就可以将数据发送给局域网中的其他主机。局域网的所有主机使用的都是私网的IP,所以必须通过路由器转化为公网的IP之后才能访问外网。
  4. 冲突域和广播域
    交换机分割冲突域,但是不分割广播域,而路由器分割广播域。由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播。而连接在路由器上的网段会被分配不通的广播域,路由器不会转发广播数据。
  5. 最后需要说明的是:
    路由器一般有防火墙的功能,能够对一些网络数据包选择性过滤。现在的一些路由器都具备交换机的功能,一些交换机具备路由器的功能,被称为3层交换机,广泛使用。相比较而言,路由器的功能较交换机要强大,但是速度也较慢,价格昂贵,三层交换机既有交换机的线性转发报文的能力,又有路由器的良好的路由功能因此得到广泛的使用。

6. ARP 地址解析协议

ARP 实现由 IP 地址得到 MAC 地址。每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。
如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。

7. ICMP 网际控制报文协议

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。


Ping
Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。
Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
Tracert
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 地址以及到达每个路由器的往返时间。
在这里插入图片描述

8. 网络地址转换 NAT

专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

9. UDP 和 TCP 的特点

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

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

9.1 TCP报文格式

在这里插入图片描述

9.2 TCP报文格式

在这里插入图片描述

9.3 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 的确认后,连接建立,状态为已连接。

三次握手的原因

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

9.4 TCP的四次挥手

在这里插入图片描述
以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。
A 发送连接释放报文,FIN=1。
B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。
当 B 不再需要连接时,发送连接释放报文,FIN=1。
A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。
B 收到 A 的确认后释放连接。

四次挥手的原因

客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

TCP 可靠传输

TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。

10. 动态主机配置协议

DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的连网方式,用户不再需要去手动配置 IP 地址等信息。
DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、网关 IP 地址。

DHCP 工作过程如下:
客户端发送 Discover 报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理。
DHCP 服务器收到 Discover 报文之后,发送 Offer 报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个 DHCP 服务器提供的信息,因此客户端需要进行选择。
如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。
DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。

11. HTTP 与 HTTPS

http的中文叫做超文本传输协议,它负责完成客户端到服务端的一系列操作,是专门用来传输注入HTML的超媒体文档等web内容的协议,它是基于传输层的TCP协议的应用层协议.
https:https是基于安全套接字的http协议,也可以理解为是http+ssl/tls(数字证书)的组合

http和https的区别:
HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
在 OSI 网络模型中,HTTPS的加密是在传输层完成的,因为SSL是位于传输层的,TLS的前身是SSL,所以同理
HTTP无需认证证书,而https需要认证证书

11.1 SSL/TLS握手

第一次握手:客户端先向服务器发出加密通信的请求,并且提供自己的一些信息(加密方法等),这被叫做ClientHello请求。
第二次握手:服务器收到客户端请求后,向客户端发出回应,并且提供服务器证书、确认的加密方法等,这叫做SeverHello。
第三次握手:客户端收到服务器回应以后,首先验证服务器证书,如果没问题的话会向服务器发送用于加密的随机数、编码改变通知、客户端握手结束通知。
第四次握手:服务器收到客户端的随机数之后,计算生成本次会话所用的"会话密钥",然后向客户端发送编码改变通知和服务器握手结束通知。

在这里插入图片描述

12. HTTP协议各版本的不同

版本 不同
http1.0 无连接,无状态,一次请求一个tcp连接
http1.1 持久连接,请求管道化(有一些缺陷) ,增加了host字段,缓存,断点续传
http2.0 二进制分帧(多路复用的实现基础), 多路复用,头部压缩

13. Web 页面请求过程

  1. DHCP 配置主机信息
    假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。
    主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。
    该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。
    该数据报则被放置在 MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。
    连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。
    该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。
    主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。

  2. ARP 解析 MAC 地址
    主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。
    先查看浏览器的DNS缓存,如果没有,则查看本地DNS服务器的缓存。
    如果没有,主机DNS服务器生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。
    该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中。
    该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。
    DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。
    主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址。(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。
    网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机。

  3. DNS 解析域名
    知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。
    网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。
    到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。 因为DNS服务器是多级缓存查询 ,分布式分级管理 ,所以查询服务器的节点,会在本机保存整个分布式的管理结构的信息,这就是所谓的多级缓存!也就是说,它们并不一定非要保存域名和IP地址的直接对应信息,如果没有找到这个对应,它们会努力帮你找到离目标最近的管理服务器,比如他没有完整的域名映射.,但是它有cn.,这也算是一种命中。然后本地DNS服务器得到 cn 的 IP 映射,然后又访问cn这个域的DNS服务器,得到完整的域名和IP映射
    找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。

  4. HTTP 请求页面
    有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。
    在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。
    连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。
    HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。
    浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。
    一次完整的请求响应之后,双方并不会立即决定关闭此TCP连接,而是客户端会定期的向服务器发送Keep-Alive侦测包,来判断TCP的连接情况,如果在有效的发送次数内没有收到服务器的Keep-Alive应答,则客户端会丢弃此TCP连接,如果侦测一直成功,一直能收到服务器的应答,则客户端不会主动关闭连接。
    当服务器的keep-alive timeout时间到达,则服务器会主动申请此次TCP连接的断开,进行四次挥手操作
    在这里插入图片描述



参考:
https://baijiahao.baidu.com/s?id=1620169126251822734&wfr=spider&for=pc
https://blog.csdn.net/dog250/article/details/78568897
https://www.jianshu.com/p/184ebd448c7f?mType=Group

猜你喜欢

转载自blog.csdn.net/weixin_44346035/article/details/99427602
今日推荐