计算机网络面试常考知识点(清晰)

1 . HTTPS 的工作过程?

  1. 客户端发送自己支持的加密规则给服务器,代表告诉服务器要进行连接了;

  2. 服务器从中选出一套加密算法和 hash 算法以及自己的身份信息(地址等)以证书的形式发送给浏览器,证书中包含服务器信息(域名),加密公钥,证书的办法机构;

  3. 客户端收到网站的证书之后要验证证书:

    3.1 验证证书的合法性;

    3.2 通过证书,浏览器会生成一串随机数作为对称密钥,并用证书中的公钥进行加密;

    3.3 用约定好的 hash 算法计算握手消息,然后用生成的密钥进行加密,然后一起发送给服务器。

  4. 服务器接收到客户端传送来的信息,要做下面的事情:

    4.1 用私钥解析出密码,用密码解析握手消息,验证 hash 值是否和浏览器发来的一致;

    4.2 使用密钥加密消息;

  5. 如果计算法 hash 值一致,握手成功。

2.浏览器中输入一个URL后,按下回车后发生了什么?

  • 浏览器会从主机的Hosts文件中查看是否有该域名和IP地址的映射;
  • 如果Hosts文件没有,浏览器会查看自己的缓存;
  • 当上面两个方法都行不通时,只能去请求DNS服务器来获取IP地址;
  • 获取到IP地址后,建立TCP连接、三次握手;
  • 确认连接后发送一个HTTP请求报文;
  • 服务器处理请求,并对请求做出响应;
  • 浏览器收到服务器响应,得到html代码;
  • 渲染页面。(浏览器根据响应报文来解析CSS样式、JS交互等等)
  • 连接关闭

DNS寻址: 先查找浏览器缓存,如果没命中,查询系统缓存,即hosts文件。如果没命中,查询路由器缓存。如果没命中,请求本地域名服务器解析域名,没有命中就进入根服务器进行查询。没有命中就返回顶级域名服务器IP给本地DNS服务器。本地DNS服务器请求顶级域名服务器解析,没有命中就返回主域名服务器给本地DNS服务器。本地DNS服务器请求主域名服务器解析域名,将结果返回给本地域名服务器。本地域名服务器缓存结果并反馈给客户端。

浏览器缓存->hosts文件->路由器缓存->请求本地域名服务器->请求根服务器查询->返回顶级域名服务器IP地址(本地DNS服务器请求顶级域名服务器解析)->返回主域名服务器IP(请求主域名服务器解析)->结果返回给本地DNS服务器,并反馈给客户端

3. OSI与TCP/IP各层的结构与功能,都有哪些协议?

通常为了中和OSI和TCP/IP的优点,采用只有五层协议的体系爱结构。

  • 应用层: 应用层协议定义应用进程间通信和交互的规则。对于不同的网络应用需要不同的网络层协议。如:域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP

  • 传输层: 传输层负责向两台主机进程间的通信提供通用的数据传输服务。
    传输层有分用和复用的功能。
    分用:指一台主机的多个应用进程可以同时通过传输层进行传输。
    复用:传输层把收到的信息分别交付给应用层中的各进程。
    协议:
    TCP传输控制协议:提供面向连接的、可靠的传输服务
    UDP用户数据协议:无连接不可靠的传输

  • 网络层: 网络层的任务是选择合适的网间路由和交互节点,确保数据及时传输。该层使用IP协议,把传输层产生的数据封装成分组进行传输。
    协议: IP、ICMP(网络控制信息协议)、ARP(地址解析协议)、RARP

  • 数据链路层: 将网络层传下来的IP数据报封装成帧,在两个相邻节点的链路上传送帧。(每帧数据包括控制信息:同步信息,地址信息,差错控制)协议包括:VLAN、MAC等

  • 物理层: 实现相邻计算机节点之间比特流的传输,使上层结构尽可能屏蔽传输介质和物理设备的差异。
    计算机网络面试常考知识点(清晰)_第1张图片

4.TCP三次握手和四次挥手

三次握手:

  • 客户端向服务端发送带有syn=1标志、且随机生成了一个序列号seq number的数据包给服务端;

  • 服务端发送带有syn=1,ack=1标志、且ack number=seq+1,以及随机生成的序列号的数据包给客户端;

  • 客户端检测ack标志位是否为1以及ack number是否为seq number +1 ,确认无误后,发送带有ack=1标志的数据包给服务端。

三次握手的原因:

  • 为了建立可靠的连接,需要通信双方都确认自己与对方的发生与接收功能正常。
    比如:
    第一次握手,服务端确认了对方发送和自己接收是正常的;
    第二次握手,客户端确认了自己发送接收正常,对方发送接收也正常,服务端还是只确认了对方发送正常,自己接收正常。
    第三次握手,才能双方都确认自己和对方的发送接收均正常。
  • 为了防止已失效的连接请求报文段又传回到了服务端,此时服务端误认为这是正常的连接请求,服务端发送连接确认报文,导致连接建立,浪费资源。

四次挥手:

  • 客户端发送一个FIN=1标志的数据包到服务端,用来关闭客户端到服务端的连接。
  • 服务端收到这个FIN信号后,向客户端发送确认数据包,ack=1,此时进入半关闭状态。
  • 服务端发送一个FIN给客户端,关闭其与客户端的连接
  • 客户端收到后发回ack=1的确认报文,然后再经过一个等待时间后,连接才完全释放。

四次挥手的原因:
TCP连接是全双工的,因此每个方向都必须单独关闭。 当一方传输数据结束后,向另一方发送释放连接通知后,此时应该处于半关闭状态,只有当另一方也没有数据再发送的时候,该方法才发送连接释放的通知,并等对方确认后连接才能完全释放。

TIME_WAIT状态为什么要等待2MSL:
因为第四次的确认报文可能丢失,这个状态是用来重发可能丢失的ACK报文。

5. TCP、UDP 协议的区别:

  1. TCP是面向连接的,可靠的数据流传输;UDP是非面向连接的,不可靠的数据传输。

  2. TCP在传输数据之前要进行三次握手建立连接,传输介绍后四次挥手释放连接。传输时,又有确认应答,超时重传、滑动窗口、拥塞控制等机制确保可靠传输;
    UDP则无需建立连接,无需给出确认。不保证可靠交付。

  3. TCP传输单位称为TCP报文段,面向字节流,UDP为用户数据报。

  4. TCP适合大文件传输,注重数据安全性,但传输慢。
    UDP传输速度快,但是安全性一般。

  5. TCP报文头部开销大,20-60B,UDP报文首部开销小,由8个字节组成(包括源端口,目的端口,长度和检验和)

  6. TCP和UDP对应协议不同:
    TCP:HTTP、SMTP(简单邮件传输协议)、FTP(文件传输协议)、POP3
    UDP:DNS、TFTP(简单文件传输协议)

计算机网络面试常考知识点(清晰)_第2张图片
应用场景:
TCP:一般用于文件传输,收发邮件,远程登录等场景
UDP:没有拥塞控制,强调实时性,适用于即时通信场合,如QQ语言,视频会议、直播等。

6.TCP如何实现可靠连接

1. TCP协议在发送数据时,给每一个包编号,以便接收方对数据包排序,把有序数据包传给应用层
2. 流量控制: TCP使用可变窗口大小的滑动窗口协议来进行流量控制。
接收端发给发送端自己的缓冲区的接收能力,发送端根据接收能力和当前网络的拥塞状态决定窗口大小。
3. 拥塞控制: 防止过多数据注入网络,以免路由器和链路过载
与流量控制的区别拥塞控制是全局性的控制,流量控制是点对点的控制。
拥塞控制的算法有:慢开始,拥塞避免,快重传快恢复
慢开始: 在刚开始传输,还不知道网络状态的情况下,由小到大逐渐指数式增大拥塞窗口值。
拥塞控制: 让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1.
快重传快恢复: 数据包丢失时并不暂停传输,接收端收到不按顺序传来的数据包时就传给发送方一个确认,当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待重传计时器超时。
4. ARQ(自动重传)协议: 每发完一个分组就停止发送,等待对方确认后再发下一组。
5. 超时重传: TCP发送报文段时会开启一个定时器,如果不能及时收到一个确认,将重发这个报文

7. HTTP1.0、1.1、2.0之间的区别

1. 长连接: http1.1中默认使用长连接,在一个tcp连接上可以传输多可http请求和响应。而http1.0不支持长连接,每次请求都要重新建立一次连接。
2. 缓存处理: http1.0 主要使用header里的if-modiified-since,expires来作为缓存判断的标准。http1.1则引入更多的缓存控制策略,如entity tag,if-unmodified-since,if-match,if-none-match
3. http1.1新增24个错误状态码: 409:请求资源和当前资源冲突。410:服务器上某个资源被永久删除。
4. 带宽优化及网络连接的使用: http1.0存在浪费带宽的现象,http1.1在请求头引入了rang头域,允许只请求资源的某个部分。

8.HTTP与HTTPS

  1. https协议需要到CA申请证书,但一般免费证书很少,需要付费。
  2. http使用80端口,http使用443端口。
  3. http协议运行在tcp协议之上,传输的内容是明文,不安全。https运行在SSL/TLS之上,内容采用对称加密,对称加密的密钥采用服务器发送的证书进行非对称加密,安全性更高。

https用对称加密和非对称加密结合的方式来保证通信安全。
对称加密: 加密和解密都是同一个密钥。(AES,RC4)
非对称加密: 密钥成对出现,分为公钥和私钥,公钥和私钥之间不能互相推导,公钥加密需要私钥解密,私钥加密需要公钥解密。(RSA,DSA/DSS)

浏览器使用Https的URL访问服务器,建立SSL链接;
1、发送非对称加密的公钥A给浏览器
2、客户端(SSL/TLS)解析证书(无效会弹出警告)
3、生成随机值(这个相当于传送数据的密钥),作为对称加密的密钥B。
4、浏览器使用服务器返回的公钥A,对自己生成的对称加密密钥B进行加密,得到密钥C。
5、浏览器将密钥C发送给服务器
6、务器使用自己的私钥D对接受的密钥C进行解密,得到对称加密密钥B。
7、将信息和密钥B混合在一起进行对称加密
8、将加密的内容发送给客户端
9、客户端用密钥B解密信息

计算机网络面试常考知识点(清晰)_第3张图片

9. 证书验证

  • 客户端拿到了站点证书以及站点的公钥
  • 客户端找到站点证书颁发者的信息
  • 站点证书的颁发者验证服务端是否可信

10. HTTP请求有哪些,get和post的差别:

  • Get(查): 从服务器端获取数据,仅获取资源,不进行修改。
  • Post(改): 向服务器提交数据,即更新服务器数据。
  • Put(增): 向服务器增添数据。
  • Delete(删): 删除服务器数据

区别:

  • get 刷新无害,而post刷新数据会被重新提交
  • get请求的数据会被 放在url中,多个参数使用&连接,而post会把请求放在body中。因此,get请求数据会暴露在地址栏中,post不会。且由于url有长度限制,则get传输数据的大小也受限制。
  • get请求的资源会被缓存在浏览器中。
  • post请求更慢,它在传输数据前先将请求头发送给服务器进行确认后再发数据。而get请求直接发送请求头和数据。

11.状态码

1xx:指示信息–表示请求已接收,继续处理
100 --客户端必须继续发出请求
101-客户端要求服务器转换HTTP协议版本。
2xx:成功–表示请求已被成功接收、理解、接受
200—OK 204–请求收到,但返回信息为空
206–服务器已经完成了部分用户的GET请求
3xx:重定向–信息不完整需要附加操作
300 — 请求资源在多处可得到。
301—永久重定向,隐式重定向。
302 临时重定向,显示重定向。
304—请求的资源没有改变,可以使用缓存。
4xx:客户端错误–请求有语法错误或请求无法实现
401—未授权 403—禁止访问。 404 –找不到。409:对当前资源状态,请求不能完成
5xx:服务器端错误–服务器未能实现合法的请求
500内部服务器错误,501未实现, 502网关错误,503服务不可用,504 网关超时。

HTTP请求报文主要由请求行、请求头部、请求正文3部分组成
HTTP响应报文主要由状态行、响应头部、响应正文3部分组成

12. 转发和重定向的区别:

  • 转发:服务器直接向目标地址访问url,在把相应内容读取后返回给客户端
  • 重定向:一个web资源受到客户端请求后,通知它去访问另一个web资源

相同点: 都能实现页面的跳转
区别:

  • 转发是服务器行为,重定向是客户端行为。
  • 转发效率高,转发页面和转发到的页面可以共享request数据,可用于用户登录后将角色转发到相应模块。重定向效率低,不能共享数据,一般用于用户注销后跳转到其他网页。
  • 转发url地址栏不会变,重定向url会改变。

13. Session和Cookie的区别:

相同点: HTTP请求是无状态的,服务器不会认识当前的用户是谁,因此他们都是用来跟踪浏览器会话身份的会话方式
不同的:

  • cookie是把用户数据保存在浏览器上,单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

  • session是把用户数据保存在服务器上,存储没有大小限制,和服务器内存大小有关,每个用户有个独立的session,服务器会生成唯一的session id,并以cookie的方式发送给客户端。它主要记录像用户的状态这样的重要信息,减少资源浪费。

  • session相对于cookie来说安全性更高。

  • session中保存的是对象,cookie中保存的是字符串。

由于session依赖于cookie进行传递,所以如果浏览器不支持cookie,则无法使用session。但还可以用url重写的方式,将session Id写入url传给服务器。

使用场景:
保存一个登录用户的信息;
购物车信息;
在整个网站中经常会使用的数据,我们将它保存在Session中

你可能感兴趣的:(计算机网络面试常考知识点(清晰))