网络面试题及答案(99%面试官必问必考)

网络面试题及答案(99%面试官必问必考)-mikechen

网络面试题是经常在面试被问到的问题,下面给大家总结了常考的网络面试题及答案@mikechen

什么是 OSI 模型?它有哪些层级?

OSI模型,全称是Open Systems Interconnection模型,是一个用于理解和描述计算机网络体系结构的概念框架。

OSI模型包括七个不同的层级,如下图所示:

网络面试题及答案(99%面试官必问必考)-mikechen

  • 物理层(Physical Layer):负责传输原始比特流,包括物理媒介和数据编码。
  • 数据链路层(Data Link Layer):处理数据帧的传输和错误检测/纠正,包括以太网和Wi-Fi等。
  • 网络层(Network Layer):负责数据包的路由和寻址,以及跨网络的数据传输,包括IP协议。
  • 传输层(Transport Layer):提供端到端的数据传输,包括TCP和UDP协议。
  • 会话层(Session Layer):管理会话的建立、维护和终止,以确保数据的可靠传输。
  • 表示层(Presentation Layer):负责数据的编码、解码和加密,以确保不同系统之间的数据格式兼容。
  • 应用层(Application Layer):提供各种网络应用程序和服务,包括HTTP、FTP、SMTP等。

 

TCP/IP有哪几层?

一般是五层模型,如下图所示:

网络面试题及答案(99%面试官必问必考)-mikechen

但是也可以分为四层,就是把链路层和物理层都表示为网络接口层

网络面试题及答案(99%面试官必问必考)-mikechen

还有一种就是 OSI 七层网络模型,它就是在五层协议之上加了表示层和会话层

网络面试题及答案(99%面试官必问必考)-mikechen

各个层使用的是哪个数据交换设备

整个网络传输需要经过很多设备,包括网关、交换机、路由器等等。

如下图所示;
网络面试题及答案(99%面试官必问必考)-mikechen

网关

应用层、传输层,网关在传输层上以实现网络互连,是最复杂的网络互连设备,网关通常用于连接本地网络(LAN)与外部网络(如Internet)。

 

路由器

网络层,路由器通常用于连接多个局域网(LAN)或将局域网与广域网(WAN)连接起来。

交换机

数据链路层、网络层(识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中)。

网桥

数据链路层:将两个LAN连起来,根据MAC地址来转发帧。

集线器(Hub)

物理层:纯硬件设备,主要用来连接计算机等网络终端。

 

中继器

物理层:在比特级别对网络信号进行再生和重定时,从而使得它们能够在网络上传输更长的距离。

 

什么是 TCP 和 UDP?主要区别?

TCP是一种面向连接的协议,必须建立一个连接,连接包括三个阶段:建立连接、数据传输和终止连接,这确保了数据的可靠传输,顺序性和不重复性。

UDP是一种无连接的协议,它不需要建立连接,数据可以直接发送,这使得UDP的传输速度较快,因为不需要建立和维护连接。

它们之间的主要区别包括:

  • 可靠性:TCP提供数据可靠性,确保数据的顺序和完整性,UDP不提供可靠性保证,数据可能会丢失或乱序。
  • 传输速度:UDP比TCP快,因为它不需要建立连接或执行流量控制,适用于实时应用,如音频和视频流。
  • 头部开销:UDP头部开销较小,因此在数据包中传输的信息较少,TCP头部开销相对较大,因为它包括序号、确认号、窗口大小等信息。

 

TCP报文的格式以及字段?

TCP报文格式,如下所示:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        源端口        |     目标端口       |        序列号        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      确认号        |  数据偏移 | 保留 |控制标志 |      窗口大小     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   校验和      |   紧急指针   |    选项和填充(可选)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    数据(可选)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

下面是各个字段的详细说明:

  1. 源端口(Source Port):16位字段,指示发送方的端口号。
  2. 目标端口(Destination Port):16位字段,指示接收方的端口号。
  3. 序列号(Sequence Number):32位字段,用于标识TCP报文中的数据段的顺序。它表示第一个数据字节的序列号。
  4. 确认号(Acknowledgment Number):32位字段,用于确认已经成功接收的数据字节的序列号。这个字段在ACK标志被设置时有效。
  5. 数据偏移(Data Offset):4位字段,指示TCP头部的长度,以32位字为单位。它表示TCP头部有多少个32位字。
  6. 保留(Reserved):6位字段,保留为将来使用,目前必须设置为零。
  7. 控制标志(Flags):6个1位字段,用于控制TCP连接和数据传输的各个方面。常见的标志包括:
    • URG(Urgent):紧急指针字段有效。
    • ACK(Acknowledgment):确认号字段有效。
    • PSH(Push):数据应该被尽快交付给应用层。
    • RST(Reset):重置连接。
    • SYN(Synchronize):用于建立连接。
    • FIN(Finish):用于关闭连接。

 

 什么是IP地址和子网掩码?

IP地址是计算机在网络上的唯一标识,它用于定位和识别计算机或设备。

IP地址通常分为IPv4和IPv6两种版本,IPv4使用32位地址,而IPv6使用128位地址。

子网掩码用于划分IP地址空间,指示哪些位用于网络标识,哪些位用于主机标识。

它通常与IP地址一起使用,以确定一个主机是否在同一子网内。

例如:一个IP地址为192.168.1.1,子网掩码为255.255.255.0,表示前24位用于网络标识,后8位用于主机标识。

 

为什么要3次握手,4次挥手?

3次握手(Three-Way Handshake):

  1. 建立可靠连接:在TCP中,建立连接时需要进行3次握手,这是因为TCP是面向连接的协议,通过3次握手,确保了客户端和服务器都知道对方已经准备好发送和接收数据。
  2. 避免已失效的连接请求:第三次握手的ACK(确认)可以防止在连接建立之前被丢弃的已失效的连接请求,如果只有2次握手,已失效的请求可能在服务器端产生误解。
  3. 防止重复连接:在某些情况下,客户端发送的连接建立请求可能由于网络延迟或重传而被服务器多次接收到,第三次握手中的序列号可以帮助服务器识别并拒绝重复的连接。

 

4次挥手(Four-Way Handshake):

  1. 确保数据完整性:在关闭连接时,双方需要进行4次挥手,以确保数据完整性。
  2. 确保未完成的数据传输:在关闭连接之前,可能有未完成的数据传输,通过4次挥手,确保双方都已经完成数据的发送,并且对方已经接收了所有数据,避免了数据的丢失或不完整。
  3. 避免连接的半关闭:4次挥手防止了连接的半关闭,即一方关闭连接而另一方继续发送数据,通过挥手中的FIN标志,双方都可以明确地表明它们已经完成数据传输,可以关闭连接。

 

什么是HTTP和HTTPS?区别是什么?

HTTP(Hypertext Transfer Protocol)和HTTPS(HTTP Secure)都是用于在互联网上传输数据的协议,但它们之间的主要区别包括:

安全性:HTTP是不安全的传输协议,数据以明文形式传输,容易被窃听和篡改。HTTPS通过使用SSL/TLS加密数据传输,确保通信的机密性和完整性。

URL:HTTP的URL以”http://”开头,而HTTPS的URL以”https://”开头。

默认端口:HTTP默认使用端口80,而HTTPS默认使用端口443。

 

一次完整的HTTP请求所经历的步骤

如下图所示:

网络面试题及答案(99%面试官必问必考)-mikechen

主要包含如下流程:

1. DNS解析,通过访问的域名找出其IP地址,递归搜索。
2. HTTP请求,当输入一个请求时,建立一个Socket连接发起TCP的3次握手。
3. 客户端向服务器发送请求命令,一般是GET或POST请求。
4. 客户端发送请求头信息。
5. 服务器发送应答头信息。
6. 服务器向客户端发送数据。
7. 服务器关闭TCP连接,4次挥手。
8. 客户端根据返回的HTML,CSS,JS进行渲染

 

HTTP和HTTPS的区别

网络面试题及答案(99%面试官必问必考)-mikechen

它们之间有一些重要的区别:

1.安全性的区别

HTTP是不安全的传输协议,在HTTP通信中,数据以纯文本形式传输,容易被窃听和篡改。

HTTPS是安全的传输协议,它通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密数据传输。

这样,数据在传输过程中被加密,使得恶意第三方很难窃听或篡改通信内容,提供了数据的机密性和完整性。

 

2.加密的区别

HTTP不提供数据加密,数据以明文形式传输。

HTTPS使用SSL/TLS协议来加密通信,确保数据在传输过程中是加密的,这种加密是基于公钥基础设施(PKI)实现的,保护数据免受窃听和篡改。

 

3.端口的区别

HTTP:HTTP默认使用端口80。

HTTPS:HTTPS默认使用端口443。

 

4.证书的区别

HTTP:不需要SSL证书。

HTTPS:为使用HTTPS的网站需要获得SSL证书,SSL证书由可信任的第三方机构颁发,用于验证服务器的身份。

浏览器会检查证书以确保用户正在连接到合法的服务器。

 

5.速度的区别

HTTP:通常比HTTPS快,因为HTTPS在加密和解密数据时会引入一些额外的计算开销。

但现代硬件和软件优化已经减少了这种差距,因此在大多数情况下,HTTPS的性能差距不大。

 

6.SEO的区别

HTTP:搜索引擎可能会更喜欢HTTPS网站。Google等搜索引擎已经明确表示,HTTPS是其排名算法的一个因素,因此使用HTTPS可以有助于提高搜索引擎排名。

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法