【面试突击】计算机网络面试实战(下)

news/2024/5/17 15:50:55 标签: 面试, 计算机网络, java, HTTP, HTTPS, TCP, 三次握手

🌈🌈🌈🌈🌈🌈🌈🌈
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送
发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景中间件系列笔记编程高频电子书

文章导读地址:点击查看文章导读!

感谢你的关注!

🍁🍁🍁🍁🍁🍁🍁🍁

Https 的工作原理

Http 的内容是明文传输的,铭文数据经过中间代理服务器、路由器、wifi 热点等多个物理节点,如果被劫持会导致传输内容完全暴露,因此需要对信息进行加密

Https 是一种通过计算机网络进行安全通信的传输协议,Https 经由 Http 进行通信,利用 SSL/TLS 来加密数据包,HTTPS 在内容传输的加密上使用的是 对称加密非对称加密 只作用在证书验证阶段

Https 的信任基于预先安装在操作系统中的证书颁发机构(CA)

那么通过 Https 进行通信的流程如下:

证书验证阶段

  1. 浏览器发起 Https 请求
  2. 服务端返回 Https 证书
  3. 客户端验证证书是否合法,如果不合法则提示告警

数据传输阶段

  1. 当证书验证合法后,在本地生成随机数
  2. 通过公钥加密随机数,并把加密后的随机数传输到服务端
  3. 服务端通过私钥对随机数进行解密
  4. 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输

具体的一些细节可以了解一下,我也发现了一篇比较好的文章,可以看一下:彻底搞懂HTTPS的加密原理

为什么要网络分层?

网络分层可以简化复杂性,提高 模块化程度可维护性

分层之后,各个层次负责特定的功能,每一层不需要关心上层或下层的具体细节,如果需要修改,直接对某个层进行修改即可,不会影响到其他层,这种模块化设计可以使网络系统扩展性更强

并且在网络出现问题时,由于分层的设计,可以根据每一层的职责更容易地定位到问题所在的层次,而不需要了解整个系统

网络模型中各层都有哪些协议?

物理层和数据链路层比较偏向于底层,就不说了

网络层主要的协议有:

  • IP 协议:互联网协议(IP)是网络层的核心协议,负责将数据包从源地址传输到目的地址
  • ICMP 协议:互联网控制消息协议(ICMP)用于在网络设备之间传递控制消息,如错误报告、网络不可达、重定向等。它帮助网络设备诊断和处理网络问题
  • IGMP 协议:互联网组管理协议(IGMP)用于在主机和相邻的路由器之间建立多播组成员关系。它允许主机加入或离开多播组,以便接收特定类型的数据包
  • OSPF 协议:开放最短路径优先(OSPF)是一种内部网关协议(IGP),用于在自治系统(AS)内部的路由器之间交换路由信息,以确定最短路径

传输层主要的协议有:

  • TCP 协议:传输控制协议(TCP)提供了一种可靠的、面向连接的服务。它确保数据按顺序到达目的地,并且没有丢失或损坏
  • UDP 协议:用户数据报协议(UDP)提供了一种无连接、不可靠的服务。它比TCP更快,但不保证数据的完整性和顺序

会话层主要的协议有:

  • RPC(Remote Procedure Call):远程过程调用(RPC)允许程序在一个网络上的客户端请求另一个网络上的服务器执行特定的任务或操作
  • NCP 协议:网络控制协议(NCP)是早期网络协议,用于在客户端和服务器之间建立会话。它在现代网络中已经很少使用

表示层主要的协议有:

  • ASCII:美国信息交换标准代码(ASCII)是一种字符编码标准,用于表示文本数据
  • JPEG:联合图像专家组(JPEG)是一种用于压缩图像的格式,它提供了良好的图像质量和相对较小的文件大小
  • GIF:图形交换格式(GIF)是另一种图像格式,支持动画和透明背景

应用层:

  • FTP:文件传输协议(FTP)用于在网络上传输文件
  • Http:超文本传输协议(HTTP)用于网页的传输,是互联网上最常用的协议之一
  • SMTP:简单邮件传输协议(SMTP)用于发送电子邮件
  • SSH:安全外壳协议(SSH)提供了一种加密的网络服务,用于安全地访问远程计算机
  • DNS:域名系统(DNS)用于将人类可读的域名转换为IP地址,使得用户可以通过网址而不是IP地址来访问网站

三次握手

TCP 三次握手和四次挥手也是网络中比较常问的问题,因为两台机器之间需要通信就需要去建立 TCP 连接,建立 TCP 连接就是通过 TCP 三次握手建立的,通过四次挥手关闭 TCP 连接

TCP 三次握手和四次挥手的细节这里就不说了,之前写过一篇文章,TCP 三次握手和四次挥手

那么面试官可能会问,问什么一定要三次握手呢?

首先,简单来理解的话,通过三次握手,客户端和服务器端都可以证明自己的 接收发送 能力都是正常的,之后才可以正常通信

如果非要举出一个例子,在谢希仁版《计算机网络》中是这样说的,如果 client 发送的第一个 SYN 包并没有丢失,只是在网络中滞留,以致于延误到连接释放以后的某个时间才到达 server。本来这是一个早已失效的报文,但 server 收到此失效报文后,就误认为是 client 再次发出的一个新的连接,于是向 client 发出 SYN+ACK 包,如果不采用三次握手,只要 server 发出 SYN+ACK 包,就建立连接,会导致 client 没有发出建立连接的请求,因此不会理会 server 的 SYN+ACK 包,但是 server 却以为新的连接建立好了,并一直等待 client 发送数据,导致资源被浪费

那么为什么不四次握手呢?

因为三次握手后,建立正常通信就没有问题了,没有必要再继续握手,浪费网络资源

HTTP__TCP__UDP__117">HTTP 是基于 TCP 还是 UDP 呢?

HTTP 协议在 HTTP/1.1 和 HTTP/2 版本都是 基于 TCP 协议 的,而 HTTP/3 是 基于 UDP 协议 传输的,可以根据浏览器查看 HTTP 协议到底是哪个版本的

F12 打开控制台,右键记得选择 Protocol,h2 则代表是 HTTP/2 版本的

在这里插入图片描述

HTTP/1 、HTTP/2 和 HTTP/3 的区别如下:

  • HTTP/1(1997 年推出) 有连接无法复用、队头阻塞、协议开销大和安全因素等多个缺陷
  • HTTP/2(2015 年推出) 通过多路复用、二进制流与 Header 压缩等技术,极大地提高了性能,但是还是存在一些问题
  • HTTP/3(2022 年发布标准) 抛弃 TCP 协议,以全新的视角重新设计 HTTP。其底层支撑是 QUIC 协议,该协议基于 UDP,有 UDP 特有的优势,同时它又取了 TCP 中的精华,实现了即快又可靠的协议

虽然 HTTP/3 版本出现了,但是我们通过浏览器发现,常用的版本还是 HTTP/1.1 和 HTTP/2,为什么呢?(历史原因,比较老的系统使用的还是 1.1 和 2 版本较多,不过目前版本 3 也在逐步推广)

在这里插入图片描述


http://www.niftyadmin.cn/n/5328847.html

相关文章

【前端】使用javascript开发一个在线RGB颜色转换

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是是《前端》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌…

【Linux】自定义shell

👑作者主页:@安 度 因 🏠学习社区:安度因 📖专栏链接:Linux 文章目录 获取命令行前置字段命令行输入解析命令行普通指令的执行子进程执行命令指令类型判断 && 内建命令总结 &&a

部署 LVS-DR 群集

本章内容: -了解LVS-DR群集的工作原理 -会构建LVS-DR负载均衡群集 2.1 LVS-DR 集群 LVS-DR ( Linux Virtual Server Director Server )工作模式,是生产环境中最常用的一 种工作模式。 2.1.1 . LVS-DR 工作原理 …

Access数据库模糊查询

Access数据库模糊查询的方法 1.使通配符: 在 Access 数据库中,有两种通配符可供使用,分别是"?"和"*"。 "?"表示匹配一个字符。 "*"表示匹配任意多个字符 1例如:如果要查询姓氏以"王"开…

测量鼠标DPI的三种方法,总有一种适合你

DPI(dots per inch)代表每英寸点数,是一种用于各种技术设备(包括打印机)的测量方法,但对于鼠标来说,指的是鼠标在桌面上移动1英寸的距离的同时,鼠标光标能够在屏幕上移动多少“点”。 许多游戏鼠标都有按钮,可以让你在玩游戏时动态切换DPI,但如果你不知道鼠标的DPI怎…

【运维杂谈】为什么docker镜像推送至harbor上就变小了?

为什么docker镜像推送至harbor上就变小了?我们以一个游戏镜像为例,在Linux显示295MB。 [rootWorker232 ~]# docker images | grep v0.6 harbor.koten.com/koten-games/games v0.6 30ec3e6e4747 25 hours ago 295MB […

细说JavaScript内置对象(JavaScript内置对象详解)

一、String对象 1、简单上手 2、构造方法 3、其他方法 3.1、charAt() 3.2、indexOf() 3.3、split() 3.4、substring() 3.5、substr() 4、实际操作 二、Math对象 1、简单上手 2、对象属性 3、对象方法 4、实际操作 三、Date对象 1、简单上手 2、构造方法 3、实…

大众点评评论采集软件使用教程

导出字段: 店铺ID 评论ID 发布时间 人均消费 评分 详情链接 点赞数 浏览数 评论数 最后更新时间 发布平台 推荐 评论详情 原始评论 图片数 图片链接 用户等级 用户名称 用户头像 VIP 私