计算机网络——常考的面试题

article/2025/9/17 21:29:34

什么是TCP/IP?

TCP建立连接为什么要三次握手?断开连接为什么要四次挥手?

SSL/TSL握手过程?

协议就是约定网络协议就约定了信息在网络之间是如何传输的,即如何发送如何接收

一、网络分层模型

计算机网络为什么要分层?

因为计算机网络是个非常复杂的系统,分层可以分而治之,将复杂问题转化为若干较小的局部问题,而这些较小的问题就比较容易解决。

计算机网络体系大致分为三种:OSI七层模型、TCP/IP四层模型、五层模型

1、OSI七层模型:全称叫Open System Interconnection (开放式系统互联),是国际标准化组织ISO制定的理论模型

 2、五层模型 (一般面试考察比较多的是五层模型):

应用层:为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS、HTTP协议、SMTP协议等。

传输层:负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP

网络层:选择合适的路由和交换节点,确保数据及时传送。主要包括IP协议。

数据链路层:在两个相邻节点之间传输数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。

物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽物理介质和传输设备的差异。

3、TCP/IP四层模型:基于OSI建立的实际实现的模型,所以TCP/IP体系结构是事实上的国际标准。(此外,TCP是传输层的协议,IP是网络层的一个协议)

TCP/IP协议各层:

应用层:我们平时常用的TCP/IP的应用层协议就是HTTP协议 

传输层:TCP、UDP协议都是TCP/IP传输层协议,传输层顾名思义,就是用来进行数据传输的,用来收发数据。

网络层:IP协议属于网络层。网络层的作用是用来寻址,比如我们要跟一台服务器建立连接,那么我们如何知道这个服务器的地址?这个就是网络层的功能。我们每台电脑都有一个IP,这个IP就是用来标记你主机的地址的,服务器只要知道了你的IP,就可以和你的主机建立连接,从而进行通信。

网络接口层:这一层其实是一套理论,在软件中不太可能会接触到它。它是用来定义一些硬件设备的标准的。

面试题

1)面试官:讲一下TCP三次握手?

TCP的握手与挥手是建立连接和断开连接的时候需要经过的一个过程。

第一次握手:客户端与服务端建立连接,由客户端向服务端发送一次数据,这是第一次握手。

第二次握手:服务端收到客户端的数据后,发给客户端响应数据,这是第二次握手。

第三次握手:客户端收到服务端的响应数据后,再响应给服务端一次数据,这是第三次握手。

2)面试官:为什么TCP建立连接需要三次握手呢? 

三次握手是为了保证客户端与服务端双方的数据收发能力都没有任何问题。具体说:

第一次握手,是客户端向服务端发数据,如果服务端接收到了客户端发来的数据,那么就说明,服务端确定了客户端的发送能力没问题。

第二次握手,是服务端响应给客户端数据,如果客户端接收到了服务端的响应数据,说明客户端确定了服务端的接收和发送能力都没问题。

现在,经过两次握手,我们确定了客户端的发送能力没问题,服务端的发送和接受能力没问题,但是我们还是不知道客户端的接收能力是否OK,因为服务端并不知道客户端是否收到了他发过去的响应数据。所以,还要进行第三次握手。

第三次握手:客户端向服务端发送响应数据,如果服务端接收到了这个响应数据,那么就确定了客户端的接收能力没有问题。

3)面试官:TCP为什么握手要三次,而挥手要四次呢?

目的是为了让服务端在客户端想主动断开之后还能够给客户端发送一些数据。具体说:

第一次挥手 (FIN),客户端要断开连接,首先要发给服务端一个finish的包,这个finish的包代表客户端不会再给服务端写数据了。

第二次挥手 (ACK),服务端收到了这个finish包后,就知道客户端想要和它断开连接了,但是服务端可能还有一些数据要发给客户端,所以服务端先发送给客户端一个包,告诉客户端我知道了,但是我还有些数据要发给你,所以你先等一等。

第三次挥手 (FIN ACK),是服务器把该发给客户端的数据都发完了,然后发给客户端一个包,告诉它,我这边数据发完了,你现在可以断开了。

第四次挥手 (ACK),客户端收到了第三次挥手的数据,正式通知服务端准备断开了。

其实,四次挥手和三次握手很相似,实际上就是把第二次握手的数据分成了两次来发送。

4)面试官:讲一下TCP和UDP的区别?

  • TCP是面向连接的;UDP是无连接的。即:UDP发送数据之前不需要建立连接,而TCP要先建立连接。
  • TCP提供可靠的服务,UDP提供不可靠的服务。
  • TCP面向字节流,把数据看作是一连串无结构的字节流;UDP是面向报文的。
  • TCP拥有阻塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如实时视频会议等)。
  • 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的通信方式。

5)面试官:讲一下浏览器中输入URL返回页面的过程,可以详细点。

  1. 首先解析域名(DNS),获取到网站的主机IP;
  2. 浏览器通过网站的主机IP直接与网站主机通信,通过三次握手建立TCP连接;浏览器会以一个随机端口向服务器的80端口发起TCP的连接;
  3. 建立TCP连接后,浏览器向服务器发起一个HTTP请求;
  4. 服务器响应请求,发送响应数据;(这个过程中,参数从客户端传递到服务器端,服务器端得到参数之后,进行相应的业务处理,再将结果封装成HTTP包,返回给客户端);
  5. 服务器端和客户端的交互完成,断开TCP连接 (4次挥手);
  6. 浏览器解析响应内容,将页面渲染给用户。

6)面试官:DNS域名解析的过程详细讲讲?

DNS域名解析就是通过URL找到与之相对应的IP地址。DNS域名解析的大致流程就是:

浏览器的DNS缓存——>操作系统缓存——>本地host文件——>本地DNS服务器——>根域名服务器

  1. 先检查浏览器中的DNS缓存,如果浏览器中有对应的记录,则会直接使用,并完成解析;
  2. 如果浏览器没有缓存,那就去查询操作系统的缓存,如果查询到记录,就可以直接返回IP地址,完成解析;
  3. 如果操作系统没有DNS缓存,就会去查看本地host文件,如果host文件有记录,则直接使用;
  4. 如果本地的host文件没有相应的记录,则会请求本地的DNS服务器。本地DNS服务器一般是由本地的网络服务商如联通、移动等提供,通常情况下可通过DHCP自动分配,当然也可以自己手动配置。
  5. 如果本地DNS服务器没有响应记录,就会去根域名服务器查询了。为了能更高效的完成全球所有的域名解析请求,根域名服务器本身并不会直接去解析域名,而是会把不同的解析请求分配给下面的其他服务器去完成。

注解1:Hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”。

6)面试官:知道session吗?

知道。因为这个HTTP是无状态协议,所以需要某种机制来识别具体的用户身份,用来跟踪用户的整个会话。而常用的会话跟踪技术就是cookie与session。session就是在服务端保存用户状态的协议,通常用来保存用户的登录状态。

注解:如何理解HTTP协议是无状态的?

HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议,而是,它的每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不受前面的请求应答情况直接影响。

6)面试官:讲讲session的原理吧。

session工作原理就是,首先浏览器向服务器发送请求,访问web站点时,服务器首先会检查这个客户端请求是否已经包含了一个session标识 (即:sessionid)。如果已经包含了sessionid,则说明服务器已经为此客户端创建了session,服务器就按照sessionid把对应的session检索出来使用。如果客户端请求不包含sessionid,则服务器为此客户端创建一个session,并且生成一个与此session相关联的独一无二的sessionid存放到cookie中,这个sessionid将在本次响应中返回到客户端保存。这样在每次交互的过程中,客户端每次请求时,都会带着这个sessionid,服务器根据这个sessionid就可以找到对应的session。以此来达到共享数据的目的。

7)面试官:post和get请求的区别?

首先get请求和post请求本质上都是http请求,由于HTTP的底层时TCP/IP,所以get和post请求的底层也是TCP/IP。也就是说,get和post都是TCP连接。所以它们本质上是没有区别的。

GET和POST的最大区别应该是规范上的区别,比如:

  1. GET请求是用来获取资源的,也就是进行查询操作的;而POST请求是用来传输实体对象的,因此会使用POST来进行添加、修改和删除等操作;
  2. GET请求的参数通过URL传递,而POST的参数放在请求体(request body)中;
  3. POST相比GET更加安全,因为GET的参数直接暴露在URL上,所以GET不能用来传递敏感信息;
  4. POST 方法传输的数据量更大:GET 请求内容在URL 中,因此有大小限制,但这个主要是因为不同的浏览器对URL长度有不同的限制,GET请求本身是没有大小限制的。而POST 请求 内容在请求体中,理论上没有大小限制,但是实际上服务器处理程序的处理能力会对POST的大小起到限制。

IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。

Firefox:对Firefox浏览器URL的长度限制为:65536个字符。

Safari:URL最大长度限制为80000个字符。

Chrome:URL最大长度限制为8182个字符。

8)面试官:cookie和session的区别?

  1. 数据存放位置不同:cookie数据存放在客户的浏览器上,session数据放在服务器上。
  2. Session比Cookie更具有安全性(Cookie有安全隐患,通过拦截或本地文件找到你的cookie后可以进行攻击)
  3. Session占用服务器性能,Session过多,增加服务器压力;
  4. cookie数据的存放受到浏览器限制,而session由于存储在服务端,所以浏览器对它没有限制。
  5. cookie中通常保存的是字符串;session中能存储任何数据类型的数据;

二、HTTP协议 

HTTP 协议建立在Tcp/Ip 协议之上,HTTP 属于应用层协议。HTTP 协议是一个请求-响应式协议,一般由客户端(比如浏览器)向服务端发起,服务端处理后,再向客户端返回信息。客户端发出的消息称为HTTP 请求Request),服务端返回的消息称为HTTP 响应Response)。

每种协议都有它的消息结构,有了消息结构,发送方就知道以怎样的结构发送消息,接收方就知道以怎样的结构接收消息。下面介绍HTTP 消息结构。

1、HTTP请求消息结构:

由上图可看出,HTTP 请求由四部分组成:

  • 请求行:分别是请求方法+空格+URL+空格+协议版本+\r\n
  • 请求头部:由多个请求头部键值对组成,中间以冒号:隔开,每个键值对最后是\r\n
  • 空行:即\r\n
  • 请求包体:包体部分

例子:

GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*

其中: - 第1行是请求行GET 为请求方法,/ 为URLHTTP1.0 为协议版本,中间以空格隔开。 - 第2行与第3行是请求头。 - 请求头下面的空行,这里没有显示。 - 一般GET 请求不包含请求体,所以本请求中没有请求体。

2、HTTP响应结构:

由上图可看出,HTTP 响应由四部分组成:

  • 状态行:分别是协议版本+空格+状态码+空格+状态码描述+\r\n
  • 响应头部:由多个响应头部键值对组成,中间以冒号:隔开,每个键值对最后是\r\n
  • 空行:即\r\n
  • 响应包体:包体部分

例子:

HTTP/1.0 200 OK 
Content-Type: text/plain
Content-Length: 82
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84<html><body>Hello HTTP</body>
</html>

其中:

  • 第1行为响应状态行HTTP/1.0 为协议版本,200 是响应状态码OK状态码描述,中间用空格隔开。
  • 第2行到第6行为响应头
  • 第7行为空行
  • 第8行到第10行为响应内容

 3、HTTP 请求方法

HTTP 协议支持9 种请求方法,最常用的是GET 和POST 方法。

 3、什么是HTTPS

HTTPS 中的S 是指Security,即是安全的意思,所以HTTPS 就是安全的HTTP

HTTPS 在HTTP 协议的基础上加入了一层SSL/TLS,用于对HTTP 信息加密,其加密采用非对称加密算法RSA 算法。其协议结构如下:

4、HTTP协议的特性:

  • HTTP协议是构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80
  • HTTP 是无连接无状态

注解:如何理解HTTP协议是无状态的?

HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议,而是,它的每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不受前面的请求应答情况直接影响。

HTTP协议叫做超文本传输协议。顾名思义,它可以分为三个部分:超文本传输协议

超文本:

传输:

协议:


http://chatgpt.dhexx.cn/article/PERQUkL0.shtml

相关文章

计算机网络面试问题

计算机网络面试问题 备注&#xff1a;好友收集了很多IT资源免费分享&#xff0c;有需要自取~ 目录 OSI七层模型与TCP/IP五层模型三次握手四次挥手Http和Https的区别对称加密与非对称加密TCP与UDP的区别从输入网址到获得页面的过程常见状态码及原因短语Get与POST的区别DNS的寻址…

计算机网络面试题总结(2022最新版)

&#x1f436; 程序猿周周 ⌨️ 短视频小厂BUG攻城狮 &#x1f93a; 如果文章对你有帮助&#xff0c;记得关注、点赞、收藏&#xff0c;一键三连哦&#xff0c;你的支持将成为我最大的动力 本文是《后端面试小册子》系列的第 3️⃣ 篇文章&#xff0c;该系列将整理和梳理笔者作…

计算机网络热门面试题总结(附标准答案)

前言 如今计算机网络基本可以说是中、大厂面试必问的内容&#xff0c;但是现在好多文章的答案并不够全面深刻&#xff0c;有的则过于详细&#xff0c;不利于面试以下是借鉴资料和他人文章&#xff0c;总结常见计算机网络面试题&#xff0c;希望为大家带来帮助。 一、计算机网…

计算机网络面试题汇总

文章目录 TCP/IP体系结构1. TCP/IP的四层模型指的是哪些?2. OSI的七层模型 五层模型的作用 : &#xff08;字节跳动&#xff09;TCP、UDP的区别如何在应用层保证udp可靠传输TCP流量控制TCP拥塞控制网络拥塞的原因主要有以下三点:拥塞控制的目的:拥塞控制的方法:拥塞控制的常见…

计算机网络面试题(超详细整理)

计算机网络的体系结构 应用层 应用层用来规定应用进程在通信时所遵循的协议&#xff0c;应用层的许多协议都是基于客户服务器方式。客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方…

计算机网络常见面试题

目录 一. 计算机网络结构 1.1 ISO七层模型 1.2 TCP/IP 四层模型 1.3 五层体系结构 1.4 五层计算机网络体系结构中&#xff0c;每一层对应的网络协议有哪些&#xff1f; 1.5 请详细介绍一下 TCP 的三次握手机制 1.6 SYN攻击 1.7 请详细介绍一下TCP 四次挥手过程&#xf…

42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里

前言&#xff1a; 计算机网络、计算机操作系统这两个“兄弟”是所有开发岗位都需要“结拜”的&#xff0c;不管你是 Java、C还是测试。 对于后端开发的童鞋来说&#xff0c;计算机网络的重要性不亚于语言基础&#xff0c;毕竟平时开发经常会和网络打交道&#xff0c;比如&…

2022年计算机网络热门面试题(附标准答案)

文章目录 前言1、计算机网络分层体系结构&#xff08;五层举例&#xff09;2、三次握手3、四次挥手4、为什么不是两次握手5、四次挥手中为什么等待2MSL6、HTTP和HTTPS区别7、对称加密与非对称加密8、什么是数字证书9、HTTPS工作流程10、HTTP常见状态码11、HTTP长连接和短连接&a…

【面试】50道经典计算机网络面试题

1. HTTP 常用的请求方式&#xff0c;区别和用途&#xff1f; GET: 发送请求&#xff0c;获取服务器数据 POST&#xff1a;向 URL 指定的资源提交数据 PUT&#xff1a;向服务器提交数据&#xff0c;以修改数据 HEAD: 请求页面的首部&#xff0c;获取资源的元信息 DELETE&…

60道计算机网络面试题(附答案,背诵版)

在大概三个月前&#xff0c;我在我网站就整理了计算机网络的面试题了&#xff0c;不过那时候才整理了 20 道核心的&#xff0c;大概过了两个月&#xff0c;我花了大半天去找计算机网络的面试题&#xff0c;因为20道肯定不够&#xff0c;于是我整理到了42道。 不过最近我不是在…

计算机网络常见面试题总结

计算机网络模型&#xff1a; TCP/IP 与 OSI 都是为了使网络中的两台计算机能够互相连接并实现通信与回应&#xff0c;但他们最大的不同在于&#xff0c;OSI 是一个理论上的网络通信模型&#xff0c;而 TCP/IP 则是实际上的网络通信标准。 一、OSI七层模型&#xff1a; 1、物理…

Tomcat启动闪退出现5个Using

目录 Tomcat启动闪退出现5个Using错误现象解决方法总结 Tomcat启动闪退出现5个Using 本人近期正在学习JavaWeb&#xff0c;在安装使用Tomcat服务器时出现闪退问题。在网上找了很久都没有找到一个可行的方法&#xff0c;这次解决了这个问题实在忍不住提一下。 错误现象 Tomca…

Tomcat9.0启动闪退问题

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 在看下面内容前 请把 java_home 和 catalin_home 的环境变量配好 1 、在startup.bat用记事本打开&#xff0c;在最后添加一个单词 pause { 这一步是为了不让命令窗口闪退关闭&#xff0c;可以在命令窗口可以看到打印的错 误。 …

tomcat下载安装及配置环境变量,但打开startup文件出现闪退问题解决方法

1.安装 官网下载tomtcat,以8版本为例&#xff0c;电脑是64位就下载64位的压缩包&#xff0c;然后解压缩 解压缩完成后可以把压缩包删掉了&#xff0c;有时候直接就是解开的文件&#xff0c;安装路径随便选&#xff0c;复制到那里就可以&#xff0c;我的安装路径是D:\software\…

关于tomcat启动闪退的解决

这两天快被这些搞的头大了&#xff0c;tomcat重配了几次&#xff0c;老出现闪退的问题&#xff08;直接下的tomcat8.0压缩包免安装&#xff09;&#xff0c;总结下来有三个方面&#xff0c;大家如果也遇到这个问题&#xff0c;可以试试下面三个办法&#xff1a; 1.网上帖子基本…

Tomcat启动时闪退(点一下就消失了)问题解决,配置了环境变量也没用

如果有人看到了这篇文章&#xff0c;并且和我一样对于网上所有的解决办法都无能为力&#xff0c;那我提供一条解决方案。我一开始是下载的免安装版本&#xff0c;如下图所示&#xff0c;在试验了网上所有的方法包括但不限于配置tomacat和JDK环境变量&#xff0c;更改startup.ba…

Tomcat启动一闪而过就消失的原因和解决方法

Tomcat启动一闪而过怎么办&#xff1f;这成为了许多刚接触tomcat开发环境工作者的一个大问题&#xff0c;许多用户朋友都不知道是因为什么问题导致出现这种情况&#xff0c;下面就一起来了解一下吧。 原因一&#xff1a; &#xff08;1&#xff09;首先要搞明白启动不起来的原…

解决启动Tomcat时闪退的问题

首先要搞明白启动不起来的原因。方法是在命令行下&#xff0c;运行startup.bat文件&#xff0c;这样程序就不会一闪而过&#xff0c;而会将启动不起来的原因打印到窗口上。 在命令行下启动tomcat的方法读者应该都很清楚&#xff0c;大体就是&#xff1a;cmd启动命令行窗口->…

配置Tomcat时系统环境变量已经配置好,但是启动Tomcat时还是闪退的解决办法

部分电脑环境变量已经配置好了&#xff0c;但是启动Tomcat时还是闪退&#xff0c;我当时也是搜不到解决方案&#xff0c;后来请教了别人才得以解决 现在分享一下解决办法 配置环境变量 1.确保你电脑的jdk可用 &#xff0c;然后配置系统变量 JAVA_HOME 配置到jdk 的bin目录 2…

startup.bat启动Tomcat闪退问题原因及解决

文章目录 出现问题&#xff1a;分析问题闪退原因&#xff1a;原因一&#xff1a;java环境变量出问题了原因二&#xff1a;端口占用原因三&#xff1a;你的Tomcat不干净了 出现问题&#xff1a; 安装了Tomcat之后&#xff0c;开始用着还好好的。莫名其妙的就很突然出现了一些玄…