总结计算机网络超全面试题

article/2025/9/17 21:30:33

目录

      • 1.计算机网络的各层协议及作用?
      • 2. TCP和UDP的区别?
      • 3. UDP 和 TCP 对应的应用场景是什么?
      • 4.详细介绍一下 TCP 的三次握手和四次挥手机制?
      • 5. TCP协议如何保证可靠性?
      • 6. 详细讲一下TCP的滑动窗口?
      • 7. 详细讲一下拥塞控制?
      • 8. 状态码301和302的区别是什么?
      • 9. Cookie 的作用是什么?和 Session 有什么区别?
      • 10. HTTP 1.0 和 HTTP 1.1 的主要区别是什么?
      • 11. URI 和 URL 的区别是什么?
      • 12. HTTP 和 HTTPS 的区别?
      • 13.在浏览器中输入网址之后执行的全部过程
      • 14. DNS域名解析过程

1.计算机网络的各层协议及作用?

计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。

  • OSI七层模型:大而全,但是比较复杂、而且是先有了理论模型,没有实际应用。
  • TCP / IP四层模型:是由实际应用发展总结出来的,从实质上讲,TCP/IP只有最上面三层,最下面一层没有什么具体内容,TCP/IP参考模型没有真正描述这一层的实现。
  • 五层模型:五层模型只出现在计算机网络教学过程中,这是对七层模型和四层模型的一个折中,既简洁又能将概念阐述清楚。
    在这里插入图片描述

2. TCP和UDP的区别?

对比如下

UDPTCP
是否连接无连接面向连接
是否可靠不可靠传输,不使用流量控制和拥塞控制可靠传输,使用流量控制和拥塞控制
是否有序无序有序,消息在传输过程中可能会乱序,TCP 会重新排序
传输速度
连接对象个数支持一对一,一对多,多对一和多对多交互通信只能是一对一通信
传输方式面向报文面向字节流
首部开销首部开销小,仅8字节首部最小20字节,最大60字节
适用场景适用于实时应用(IP电话、视频会议、直播等)适用于要求可靠传输的应用,例如文件传输

总结

TCP 用于在传输层有必要实现可靠传输的情况,UDP 用于对高速传输和实时性有较高要求的通信。TCP 和 UDP 应该根据应用目的按需使用。

3. UDP 和 TCP 对应的应用场景是什么?

在这里插入图片描述

4.详细介绍一下 TCP 的三次握手和四次挥手机制?

Tcp的三次握手和四次挥手机制

5. TCP协议如何保证可靠性?

TCP主要提供了检验和、序列号/确认应答、超时重传、滑动窗口、拥塞控制和 流量控制等方法实现了可靠性传输。

  • 检验和:通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如有差错就会直接丢弃TCP段,重新发送。
  • 序列号/确认应答:序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文,这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。
  • 滑动窗口:滑动窗口既提高了报文传输的效率,也避免了发送方发送过多的数据而导致接收方无法正常处理的异常。
  • 超时重传:超时重传是指发送出去的数据包到接收到确认包之间的时间,如果超过了这个时间会被认为是丢包了,需要重传。最大超时时间是动态计算的。
  • 拥塞控制:在数据传输过程中,可能由于网络状态的问题,造成网络拥堵,此时引入拥塞控制机制,在保证TCP可靠性的同时,提高性能。
  • 流量控制:如果主机A 一直向主机B发送数据,不考虑主机B的接受能力,则可能导致主机B的接受缓冲区满了而无法再接受数据,从而会导致大量的数据丢包,引发重传机制。而在重传的过程中,若主机B的接收缓冲区情况仍未好转,则会将大量的时间浪费在重传数据上,降低传送数据的效率。所以引入流量控制机制,主机B通过告诉主机A自己接收缓冲区的大小,来使主机A控制发送的数据量。流量控制与TCP协议报头中的窗口大小有关。

6. 详细讲一下TCP的滑动窗口?

在进行数据传输时,如果传输的数据比较大,就需要拆分为多个数据包进行发送。TCP 协议需要对数据进行确认后,才可以发送下一个数据包。这样一来,就会在等待确认应答包环节浪费时间。

为了避免这种情况,TCP引入了窗口概念。

窗口大小指的是不需要等待确认应答包而可以继续发送数据包的最大值
在这里插入图片描述
从上面的图可以看到滑动窗口左边的是已发送并且被确认的分组,滑动窗口右边是还没有轮到的分组。

滑动窗口里面也分为两块,一块是已经发送但是未被确认的分组,另一块是窗口内等待发送的分组。随着已发送的分组不断被确认,窗口内等待发送的分组也会不断被发送。整个窗口就会往右移动,让还没轮到的分组进入窗口内。

可以看到滑动窗口起到了一个限流的作用,也就是说当前滑动窗口的大小决定了当前 TCP 发送包的速率,而滑动窗口的大小取决于拥塞控制窗口和流量控制窗口的两者间的最小值。

7. 详细讲一下拥塞控制?

TCP 一共使用了四种算法来实现拥塞控制:

  • 慢开始 (slow-start);
  • 拥塞避免 (congestion avoidance);
  • 快速重传 (fast retransmit);
  • 快速恢复 (fast recovery)。

发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。当cwndssthresh时,改用拥塞避免算法。

**慢开始:**不要一开始就发送大量的数据,由小到大逐渐增加拥塞窗口的大小。

**拥塞避免:**拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1而不是加倍。这样拥塞窗口按线性规律缓慢增长。

快重传:我们可以剔除一些不必要的拥塞报文,提高网络吞吐量。比如接收方在收到一个失序的报文段后就立即发出重复确认,而不要等到自己发送数据时捎带确认。快重传规定:发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
快恢复:主要是配合快重传。当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半(为了预防网络发生拥塞),但接下来并不执行慢开始算法,因为如果网络出现拥塞的话就不会收到好几个重复的确认,收到三个重复确认说明网络状况还可以。
在这里插入图片描述
HTTP状态码
状态码分类:

分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**请求错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

常见状态码:
200 OK 请求成功。一般用于GET与POST请求
301 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400 客户端请求的语法错误,服务器无法理解
403 服务器理解请求客户端的请求,但是拒绝执行此请求(权限不足)
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
500 Internal Server Error 服务器内部错误,无法完成请求

8. 状态码301和302的区别是什么?

共同点:301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)。
不同点:301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。 SEO中302好于301。

9. Cookie 的作用是什么?和 Session 有什么区别?

Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie 一般用来保存用户信息 比如 :

① 我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;

② 一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);

③ 登录一次网站后访问网站其他页面不需要重新登录。

Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。

Cookie 存储在客户端中,而 Session 存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

10. HTTP 1.0 和 HTTP 1.1 的主要区别是什么?

长连接 : 在 HTTP/1.0 中,默认使用的是短连接,也就是说每次请求都要重新建立一次连接。HTTP 是基于 TCP/IP 协议的,每一次建立或者断开连接都需要三次握手四次挥手的开销,如果每次请求都要这样的话,开销会比较大。因此最好能维持一个长连接,可以用个长连接来发多个请求。HTTP 1.1 起,默认使用长连接 ,默认开启 Connection: keep-alive。 HTTP/1.1 的持续连接有非流水线方式和流水线方式 。流水线方式是客户在收到 HTTP 的响应报文之前就能接着发送新的请求报文。与之相对应的非流水线方式是客户在收到前一个响应后才能发送下一个请求。
错误状态响应码 :在 HTTP1.1 中新增了 24 个错误状态响应码,如 409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
缓存处理 :在 HTTP1.0 中主要使用 header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,HTTP1.1 则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。
带宽优化及网络连接的使用 :HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

11. URI 和 URL 的区别是什么?

URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL 是一种具体的 URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

12. HTTP 和 HTTPS 的区别?

端口:HTTP 的 URL 由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443。

安全性和资源消耗:HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。

对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有 DES、AES 等;
非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有
RSA、DSA 等。

13.在浏览器中输入网址之后执行的全部过程

  1. 先查找强缓存,命中直接使用,没有命中往下进行,没有命中强缓存,浏览器发送请求,并根据请求头里边的参数判断是否命中协商缓存,命中直接使用,没有命中往下进行 3、没有拿到缓存则进行DNS域名解析
  2. 发起 tcp 的三次握手,建立 tcp 连接。浏览器会以一个随机端口向服务端的 web 程序 80 端口发起 tcp 的连接。
  3. 建立 tcp 连接后发起 http 请求
  4. 服务器处理http请求,并返回http报文
  5. 浏览器解析和渲染页面
  6. 连接结束,四次挥手

14. DNS域名解析过程

1.DNS 客户端向本地域名服务器发送请求,查询 http://www.google.com主机的 IP 地址;

2.本地域名服务器查询数据库,发现没有域名为 http://www.google.com 的主机,于是将请求发送给根域名服务器;

3.根域名服务器查询数据库,发现没有这个主机域名记录,但是根域名服务器知道 com 域名服务器可以解析这个域名,于是将 com 域名服务器的 IP 地址返回给本地域名服务器;

4.本地域名服务器向 com 域名服务器查询 http://www.google.com 主机的 IP 地址;

5.com 域名服务器查询数据库,也没有相关记录,但是知道 google.com 域名服务器可以解析这个域名,于是将 http://google.com 域名服务器的 IP 地址返回给本地域名服务器;

6.本地域名服务器再向 http://google.com 域名服务器查询 http://www.google.com 主机 IP 地址;

7.http://google.com 域名服务器查询数据库,也没有相关记录,但是知道http://www.google.com 域名服务器可以解析这个域名,于是将 http://www.google.com 的域名服务器 IP 地址返回给本地域名服务器;

8.本地域名服务器向 http://www.google.com 域名服务器查询 http://www.google.com 主机的 IP 地址;

9.http://www.google.com 域名服务器查询数据库,发现有主机域名记录,于是给本地域名服务器返回 http://www.google.com 对应的 IP 地址;

10.最后本地域名服务器将 http://www.google.com 的 IP 地址返回给客户端,整个解析过程完成。


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

相关文章

《计算机网络面试题目总结》

一、TCP和UDP 1. TCP UDP 区别,分别适用什么场景? TCP面向连接(三次握手),通信前需要先建立连接;UDP面向无连接,通信前不需要连接。TCP通过序号、重传、流量控制、拥塞控制实现可靠传输&#…

计算机网络常见笔试面试题(一)

本博客内容 一、OSI、TCP/IP、五层协议的体系结构、以及各层协议作用 二、TCP三次握手、四次挥手全过程 三、TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗? 四、TCP的滑动窗口,流量控制和拥塞控制&#xff0…

计算机网络常见面试真题详解

文章目录 1. 计算机网络1.1 请介绍七层网络体系结构。1.2 请介绍五层网络体系结构。1.3 了解网络编程协议吗?客户端发送给服务器的请求,怎么确定具体的协议?1.4 TCP、HTTP、FTP分别属于哪一层?1.5 讲一下TCP/IP协议。1.6 说一说你…

【面试系列】计算机网络常见面试题(一)

【面试】计算机网络常见面试题 📒博客首页:铁甲小宝同学 📒 🌞文章目的:计网面试题分享🌞 🙏博主也在学习阶段,如若发现问题,请告知,非常感谢🙏 &…

计算机网络基础面试题汇总

计算机网络基础面试题汇总 网络协议和网络编程 重难点 参考资料来源于 netty权威指南(高性能的服务端开发) netty实战 Unix网络编程 AIO 鸟哥的linux私房菜 《刘超的趣谈网络协议》 《图解http》 文章目录 计算机网络基础面试题汇总1. 计算机网络体系知识…

计算机网络常见的面试题(牛客网总结)

本文主要对面试过程中关于网络的常见面试题进行总结,涉及到七层模型(四层模型)、三次握手、四次挥手是面试中必问的问题,不在这里总结,感兴趣的话可以查看我另一篇博文。 1. TCP如何保证可靠性,并简述一下…

计算机网络:常见的计网面试题整理(一)

文章目录 前言一、题目&&解答TCP和UDP的区别?TCPUDP 介绍一下TCP的三次握手TCP中拥塞控制和流量控制有什么区别?说⼀说GET与POST有哪些区别?说一下在浏览器中输入URL到显示的过程HTTP 1.0 、HTTP 1.1、HTTP 2.0 的主要区别是什么?HT…

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

转自https://blog.csdn.net/u012856866/article/details/76824726 参考 https://blog.csdn.net/qzcsu/article/details/72861891 一、OSI,TCP/IP,五层协议的体系结构,以及各层协议 OSI分层 (7层):物理层…

计算机网络方面的面试题目(合集)

python面试题 1、python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“…

计算机考研复试计算机网络常见面试题

本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下 觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢 祝大家都上岸!!!! 计算机网络 目录 1、TCP三次握手建立连接 1 …

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

50道经典计算机网络面试题 1. 说说HTTP常用的状态码及其含义? 思路: 这道面试题主要考察候选人,是否掌握HTTP状态码这个基础知识点。 不管是不是面试需要,我们都要知道,日常开发中的这几个状态码的含义哈 2. HTTP 常用的请求方…

计算机网络面试题总结

一 OSI与TCP/IP各层的结构与功能,都有哪些协议 五层协议的体系结构1 应用层 域名系统HTTP协议 2 运输层 运输层主要使用以下两种协议UDP 的主要特点TCP 的主要特点 3 网络层4 数据链路层5 物理层总结一下 二 TCP 三次握手和四次挥手(面试常客) 为什么要三次握手为什么要传回 SY…

计算机网络面试题-(较详细整理版)

计算机网络 计算机网络体系结构 计算机网络的体系结构 应用层 应用层是为了特定的应用程序提供数据传输服务。 关键词:特定,应用程序。例如为万维网需要遵循HTTP协议,文件传输需要遵循FTP协议,域名解析服务遵循DNS协议。 协…

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

什么是TCP/IP? TCP建立连接为什么要三次握手?断开连接为什么要四次挥手? SSL/TSL握手过程? 协议就是约定,网络协议就约定了信息在网络之间是如何传输的,即如何发送与如何接收。 一、网络分层模型 计算…

计算机网络面试问题

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

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

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

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

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

计算机网络面试题汇总

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

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

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

计算机网络常见面试题

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