计算机网络基础常考面试题精华总结

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 计算机网络基础常考面试题精华总结

1.OSI、TCP/IP、五层协议的体系结构以及各层协议

OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。

五层协议(5层):物理层、数据链路层、网络层、运输层、应用层。

每一层的协议如下:

物理层:RJ45CLOCKIEEE802.3(中继器,集线器,网关)

数据链路:PPPFRHDLCVLANMAC (网桥,交换机)

网络层:IPICMPARPRARPOSPFIPXRIPIGRP (路由器)

传输层:TCPUDPSPX

会话层:NFSSQLNETBIOSRPC

表示层:JPEGMPEGASII

应用层:FTPDNSTelnetSMTPHTTPWWWNFS

每一层的作用如下:

物理层:通过媒介传输比特,确定机械及电气规范(比特 Bit

数据链路层:将比特组装成帧和点到点的传递(帧 Frame

网络层:负责数据包从源到宿的传递和网际互连(包 PackeT

传输层:提供端到端的可靠报文传递和错误恢复(段 Segment

会话层:建立、管理和终止会话(会话协议数据单元 SPDU

表示层:对数据进行翻译、加密和压缩(表示协议数据单元 PPDU

应用层:允许访问 OSI 环境的手段(应用协议数据单元 APDU更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

2.IP地址分类

  IP 地址是32位的二进制数值,用于在 TCP/IP 通讯协议中标记每台计算机的地址。通常我们使用点式十进制来表示,如192.168.0.5等等。

  每个 IP 地址又可分为两部分。即网络号部分和主机号部分:网络号表示其所属的网络段编号,主机号则表示该网段中该主机的地址编号。按照网络规模的大小,IP 地址可以分为 ABCDE 五类。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

A类地址:以0开头,第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);

B类地址:以10开头,第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);

C类地址:以110开头,第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);

类别         网络号                  /占位数      主机号             /    占位数    用途
A(以0开头)  1~126                 /  8      0~255 0~255 1~254 /     24      国家级
B(以10开头) 128~191 0~255        /  16     0~255 1~254        /     16      跨过组织
C(以110开头)192~223 0~255 0~255 /  24     1~254               /     8       企业组织

注意:

1)以下是留用的内部私有地址,Internet 上没使用的地址

  • A 类 10.0.0.0--10.255.255.255
  • B 类 172.16.0.0--172.31.255.255
  • C 类 192.168.0.0--192.168.255.255

2)IP 地址与子网掩码相与得到网络号

3)主机号,全为0的是网络号(例如:192.168.2.0),主机号全为1的为广播地址(192.168.2.255)更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

3.ARP是地址解析协议,简单语言解释一下工作原理

地址解析协议,即 ARPAddress Resolution Protocol),是根据 IP 地址获取物理地址的一个 TCP/IP 协议。

1.首先,每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。

2.当源主机要发送数据时,首先检查ARP列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机IP地址,源主机 MAC 地址,目的主机的 IP 地址

3.当本网络的所有主机收到该 ARP 数据包时,首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的 IPMAC 地址写入到 ARP 列表中,如果已经存在,则覆盖,然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。

4.源主机收到 ARP 响应包后。将目的主机的 IPMAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

注意:广播(255.255.255.255)发送 ARP 请求,单播发送 ARP 响应。

4.简单介绍几种协议

ICMP 协议:因特网控制报文协议。它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息

TFTP 协议:是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

HTTP 协议:超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统

NAT 协议:网络地址转换属接入广域网( WAN )技术,是一种将私有(保留)地址转化为合法 IP 地址的转换技术

DHCP 协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段,使用 UDP 协议工作。具体用途:给内部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

5.TCP三次握手四次挥手

三次握手

第一次握手:客户端发送 syn 包( seq=x )到服务器,并进入 SYN_SEND (发送)状态,等待服务器确认;

第二次握手:服务器收到 syn包,必须确认客户的 SYNack=x+1),同时自己也发送一个 SYN 包(seq=y ),即 SYN+ACK 包,此时服务器进入 SYN_RECV(接收)状态;

第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK ( ack=y+1 ),此包发送完毕,客户端和服务器进入 ESTABLISHED(已建立)状态,完成三次握手。

说明: 1)SYNACK 是标志位(0/1)(ACK=1表明 ack 有效),seq 是序列号,ack 是确认号。

2)给对方的确认方式就是把对方传来的 seq+1 并赋给 ack更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

四次挥手

第一次挥手:主动关闭方发送一个 FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在 fin 包之前发送出去的数据,如果没有收到对应的 ack 确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

第二次挥手:被动关闭方收到 FIN 包后,发送一个 ACK 给对方,确认序号为收到序号 +1。

第三次挥手:被动关闭方发送一个 FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到 FIN 后,发送一个 ACK 给被动关闭方,确认序号为收到序号 +1,至此,完成四次挥手。

说明:

1)SYN攻击:用众多伪造ip地址向服务器发送SYN=1(请求连接),让服务器处于SYN-RCVD状态,但都无法第三次握手(因为伪造 ip 不存在)

2)4次挥手中的 FIN 就相当于三次握手中的 SYN

3)序号 seq,确认序号 ack,确认标志位 ACK 作用还是一样的,就是确认作用(把 seq 加上1赋给 ack,并把 ACK 置1)

4)为什么一个3次1个4次不一样?

因为两端的数据并不是同时发送完,所以两端谁发送完数据都需要自己告诉对方一次,并且对方确认一次。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

6.在浏览器中输入 www.baidu.com[1] 后执行的全部过程

1、客户端浏览器通过 DNS 解析到 www.baidu.com[2]IP 地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个 HTTP 会话到 220.161.27.48,然后通过 TCP 进行封装数据包,输入到网络层。

2、在客户端的传输层(添加TCP头),把 HTTP 会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的 5000 端口。然后使用IP层的IP地址查找目的端。

3、客户端的网络层(添加IP头)不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

4、客户端的链路层(添加MAC头)包通过链路层发送到路由器,通过邻居协议查找给定 IP 地址的 MAC 地址,然后发送 ARP 请求查找目的地址,如果得到回应后就可以使用 ARP 的请求应答交换的 IP 数据包现在就可以传输了,然后发送 IP 数据包到达服务器的地址。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

7.TCP和UDP的区别

这是传输层的两个协议,先说一下传输层的两大功能:

1.复用:在发送端,多个应用进程公用一个传输层;2.分用:在接收端,传输层会根据端口号将数据分给不同的应用进程。

传输层和网络层的区别:

1.网络层为不同的主机提供通信服务,传输层为不同应用进程提供通信服务。2.网络层只对报文头部进行差错检测,而传输层对整个报文进行差错检测。

UDP(User Data Protocol)用户数据报协议

1.无连接2.不可靠(不能保证都送达)3.面向报文(UDP 数据传输单位是报文,不会对数据进行拆分和拼接操作,只是给上层传来的数据加个 UDP 头或者给下层来的数据去掉 UDP 头)4.没有拥塞控制,始终以恒定速率发送数据5.支持一对一、一对多、多对多、多对一6.首部开销小,只有8字节

TCP(Transmission Control Protocol)传输控制协议

1.有连接2.可靠的3.面向字节流4.全双工通信,TCP 两端既可以作为发送端也可以作为接收端5.连接的两端只能是两个端点,即一对一,不能一对多6.至少20个字节,比 UDP 大的多

什么是TCP连接

TCP 连接是一种抽象的概念,表示一条可以通信的链路。每个 TCP 连接有且仅有两个端点,表示通信的双方,且双方在任意时刻都可以作为发送者和接受者。

什么是套接字

一条 TCP 连接的两端就是两个套接字。套接字 = IP 地址:端口号 因此,TCP 连接 = (套接字1,套接字2)= (IP1:端口号1,IP2:端口号2)

8.TCP对应的协议和UDP对应的协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和 SMTP 对应,POP3 用于接收邮件。POP3 协议所用的是110端口。

(5)HTTP:是从 Web 服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

9.DNS域名系统,简单描述其工作原理。

  当 DNS 客户机需要在程序中使用名称时,它会查询 DNS 服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的 DNS 域名,指定的查询类型,DNS 域名的指定类别。基于 UDP 服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如 HTTPSMTP等在其中需要完成主机名到IP地址的转换。

10.面向连接和非面向连接的服务的特点是什么?

面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。


11.TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

答:建立连接的过程是利用客户服务器模式,假设主机 A 为客户端,主机 B 为服务器端。

(1)TCP 的三次握手过程:主机 AB 发送连接请求;主机 B 对收到的主机 A 的报文段进行确认;主机 A 再次对主机 B 的确认进行确认。

(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机 B,因而产生错误。失效的连接请求报文段是指:主机 A 发出的连接请求没有收到主机 B 的确认,于是经过一段时间后,主机 A 又重新向主机 B 发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机 A 第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机 B主机 B 以为是主机 A 又发起的新连接,于是主机 B 同意连接,并向主机 A 发回确认,但是此时主机 A 根本不会理会,主机 B 就一直在等待主机 A 发送数据,导致主机 B 的资源浪费。(这就是缺少第三次握手( A 再给 B 确认))

(3)采用两次握手不行,原因就是上面说的实效的连接请求的特殊情况。

12.了解交换机、路由器、网关的概念,并知道各自的用途

1)交换机

在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的 MAC 若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表 中。

交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的 CPU 会在每个端口成功连接时,通过 ARP 协议学习它的 MAC 地址,保存成一张 ARP表。在今后的通讯中,发往该 MAC 地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不 能划分网络层广播,即广播域。

交换机被广泛应用于二层网络交换,俗称“二层交换机”。

交换机的种类有:二层交换机、三层交换机、四层交换机、七层交换机分别工作在 OSI 七层模型中的第二层、第三层、第四层盒第七层,并因此而得名。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

2)路由器

路由器Router)是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过 的路由路径( hosthost 之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议。

路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于 OSI 第三层的产品,交换器是 OSI 第二层的产品(这里特指二层交换机)。

3)网关

网关Gateway),网关顾名思义就是连接两个网络的设备,区别于路由器(由于历史的原因,许多有关TCP/IP 的文献曾经把网络层使用的路由器(Router)称为网关,在今天很多局域网采用都是路由来接入网络,因此现在通常指的网关就是路由器的IP),经常在家庭中或者小型企业网络中使用,用于连接局域网和 Internet。网关也经常指把一种协议转成另一种协议的设备,比如语音网关。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
23天前
|
缓存 算法 网络协议
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
这篇文章详细介绍了计算机网络中数据链路层的概念、基本问题、点对点信道和广播信道的数据链路协议(如PPP和CSMA/CD),以及局域网和以太网的相关知识。
55 0
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
|
23天前
|
存储 网络协议 网络性能优化
一文详细理解计算机网络体系结构(考试和面试必备)
这篇文章提供了C++基础知识的快速概述,包括C++的特点、面向对象设计、组成部分、标准、学习建议、应用领域、源文件、编译器、类与对象、编译执行步骤、分号与块、标识符、基本数据类型、typedef、枚举类型、变量定义与声明等。
40 0
一文详细理解计算机网络体系结构(考试和面试必备)
|
2月前
|
网络协议 网络架构
OSPF邻居关系建立失败?揭秘网络工程师面试中最常见的难题,这些关键步骤你掌握了吗?网络配置的陷阱就在这里!
【8月更文挑战第19天】OSPF是网络工程中确保数据高效传输的关键协议。但常遇难题:路由器间无法建立OSPF邻居关系,影响网络稳定并成为面试热点。解决此问题需检查网络连通性(如使用`ping`),确认OSPF区域配置一致(通过`show running-config`),校准Hello与Dead计时器(配置`hello`和`dead`命令),及核查IP地址和子网掩码正确无误(使用`ip address`)。系统排查上述因素可确保OSPF稳定运行。
65 2
|
4月前
|
缓存 JSON 网络协议
Android面试题:App性能优化之电量优化和网络优化
这篇文章讨论了Android应用的电量和网络优化。电量优化涉及Doze和Standby模式,其中应用可能需要通过用户白名单或电池广播来适应限制。Battery Historian和Android Studio的Energy Profile是电量分析工具。建议减少不必要的操作,延迟非关键任务,合并网络请求。网络优化包括HTTPDNS减少DNS解析延迟,Keep-Alive复用连接,HTTP/2实现多路复用,以及使用protobuf和gzip压缩数据。其他策略如使用WebP图像格式,按网络质量提供不同分辨率的图片,以及启用HTTP缓存也是有效手段。
78 9
|
4月前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
45 5
|
4月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
58 2
|
4月前
|
缓存 网络协议 Android开发
Android网络面试题之Http1.1和Http2.0
HTTP/1.1 引入持久连接和管道机制提升效率,支持分块传输编码和更多请求方式如PUT、PATCH。Host字段指定服务器域名,RANGE用于断点续传。HTTP/2变为二进制协议,实现多工处理,头信息压缩和服务器推送,减少延迟并优化资源加载。HTTP不断发展,从早期的简单传输到后来的高效交互。
55 0
Android网络面试题之Http1.1和Http2.0
|
4月前
|
缓存 网络协议 Java
Android面试题之Java网络通信基础知识
Socket是应用与TCP/IP通信的接口,封装了底层细节。网络通信涉及连接、读写数据。BIO是同步阻塞,NIO支持多路复用(如Selector),AIO在某些平台提供异步非阻塞服务。BIO示例中,服务端用固定线程池处理客户端请求,客户端发起连接并读写数据。NIO的关键是Selector监控多个通道的事件,减少线程消耗。书中推荐《Java网络编程》和《UNIX网络编程》。关注公众号AntDream了解更多。
40 2
|
4月前
|
XML JSON Java
Android面试题 之 网络通信基础面试题
序列化对比:Serializable码流大、性能低;XML人机可读但复杂;JSON轻量、兼容性好但空间消耗大;ProtoBuff高效紧凑。支持大量长连接涉及系统限制调整、缓冲区优化。select/poll/epoll是IO多路复用,epoll在高连接数下性能更优且支持边缘触发。水平触发持续通知数据,边缘触发仅通知新数据。直接内存减少一次拷贝,零拷贝技术如sendfile和MMAP提升效率。关注公众号"AntDream"了解更多技术细节。
33 1
|
4月前
|
网络协议 Java 网络安全
架构面试题汇总:网络协议34问(2024版)
架构面试题汇总:网络协议34问(2024版)