【备战面试】每日10道面试题打卡-Day6

news2024/11/15 18:03:24

本篇总结的是计算机网络知识相关的面试题,后续也会更新其他相关内容

文章目录

  • 1、HTTP 与 HTTPS 有哪些区别?
  • 2、HTTPS的加密过程是什么?
  • 3、GET与POST有什么区别?
  • 4、讲讲HTTP各个版本的区别?
  • 5、HTTP与FTP的区别?
  • 6、Session、Cookie的主要区别 ?
  • 7、如果客户端禁止 cookie 能实现 session 还能用吗?
  • 8、在浏览器输入一个网址到页面显示出来中间都发生了什么?
  • 9、关于TCP粘包你知道什么?
  • 10、Ping的工作原理是什么?


1、HTTP 与 HTTPS 有哪些区别?

答:主要有四个方向的不同,分别是:

  1. 安全性不同:HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输。
  2. 建立连接方式不同:HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
  3. 默认端口不同:HTTP 默认端口号是 80,HTTPS 默认端口号是 443
  4. 网站申请方式不同:HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

2、HTTPS的加密过程是什么?

答:在之前我们介绍了对称加密和非对称加密的优缺点,HTTPS是将两者结合起来,使用的对称加密和非对称
加密的混合加密算法
。具体做法就是

  • 使用非对称加密来传输对称密钥来保证安全性
  • 使用对称加密来保证通信的效率。

简易的加密流程

  1. 服务端生成一对非对称密钥,将公钥发给客户端。
  2. 客户端生成对称密钥,用服务端发来的公钥进行加密,加密后发给服务端。
  3. 服务端收到后用私钥进行解密,得到客户端发送的对称密钥。
  4. 通信双方就可以通过对称密钥进行高效地通信了。

这其中存在一个很大地问题,就是客户端最开始如何判断收到的这个公钥就是来自服务端而不是其他人冒充的?

  • 这就需要证书上场了,服务端会向一个权威机构申请一个证书来证明自己的身份.
  • 到时候将证书(证书中包含了公钥)发给客户端就可以了
  • 客户端收到证书后既证明了服务端的身份又拿到了公钥就可以进行下一步操作了。

HTTPS的加密过程

  1. 客户端向服务端发起第一次握手请求,告诉服务端客户端所支持的SSL的指定版本加密算法密钥长度等信息。
  2. 服务端将自己的公钥发给数字证书认证机构,数字证书认证机构利用自己的私钥对服务器的公钥进行数字签名,并给服务器颁发公钥证书
  3. 服务端将证书发给客户端
  4. 客户端利用数字认证机构的公钥,向数字证书认证机构验证公钥证书上的数字签名,确认服务器公开密钥的真实性
  5. 客户端使用服务端的公开密钥加密自己生成的对称密钥,发给服务端。
  6. 服务端收到后利用私钥解密信息获得客户端发来的对称密钥
  7. 通信双方可用对称密钥来加密解密信息。

客户端哪里来的数字认证机构的公钥,其实,在很多浏览器开发时,会内置常用数字证书认证机构的公钥

如下图:
在这里插入图片描述

3、GET与POST有什么区别?

答:它们都是都是HTTP的一种协议,但是

  • GET 是用于向服务器获取资源,参数直接拼接在url上面。方法是安全、幂等、可被缓存的。
  • POST 用于向服务器推送资源,参数使用requestData传输,传输内容更多。方法是不安全,不幂等,不可缓存。

在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。

  • GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。所以,可以对 GET 请求的数据做缓存,这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),而且在浏览器中 GET 请求可以保存为书签。
  • POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。所以,浏览器一般不会缓存 POST 请求,也不能把 POST 请求保存为书签。

4、讲讲HTTP各个版本的区别?

答:

  • HTTP 0.9仅支持GET请求,不支持请求头。
  • HTTP 1.0:默认短连接,一次请求对应一次TCP连接,请求完就断开、支持GET、POST、 HEAD请求。
  • HTTP 1.1:默认长连接,一次TCP连接可以多次请求、加入了请求头、加入了缓存处理、支持断点续传功能、支持PUT,DELETE,PATCH等六种请求。
  • HTTP 2.0多路复用,降低开销(一次TCP连接可以处理多个请求)、报头压缩,降低开销、允许服务器主动推送数据基于二进制解析,解析错误少,更高效(HTTP 1.X解析基于文本),提高了传输性能;
  • HTTP 3.0:把HTTP下层的TCP协议改成了UDP,数据的可靠传输依靠 QUIC 协议来实现。无队头阻塞建立连接速度快连接迁移;(没有被正式推出);

5、HTTP与FTP的区别?

它们都是运行在TCP之上的应用层协议,区别是:

  • HTTP超文本传输协议,面向网页; FTP文件传输协议,面向文件
  • FTP控制信息带外(out-of-band)传送的,HTTP控制信息是带内(in-band)传送的;
  • FTP用两个并行的TCP连接来传输文件,一个是控制连接(持久性连接),一个是数据连接(非持久性连接);
  • HTTP既可以使用非持久性连接,也可以使用持久性连接;
  • FTP服务器必须在整个会话期间保留用户的状态(state)信息,HTTP是无状态的;

6、Session、Cookie的主要区别 ?

答:HTTP协议是无状态的,即服务器无法判断用户身份。但是Session和Cookie可以用来进行用户身份辨认

Cookie

  • Cookie是保存在客户端(浏览器)一个小数据块,其中包含了用户信息。
  • 当客户端向服务端发起请求,服务端会向客户端浏览器发送一个Cookie,客户端会把Cookie存起来。
  • 当下次客户端再次请求服务端时,会携带上这个Cookie,服务端会通过这个Cookie来确定身份。

Session

  • Session是通过Cookie实现的,和Cookie不同的是,Session是存在服务端的
  • 当客户端浏览器第一次访问服务器时,服务器会为浏览器创建一个sessionid,将sessionid放到Cookie中,保存在客户端浏览器。
  • 比如浏览器访问的是购物网站,将一本《图解HTTP》放到了购物车,当浏览器再次访问服务器时,服务器会取出Cookie中的sessionid,并根据sessionid获取会话中的存储的信息确认浏览器的身份是上次将《图解HTTP》放入到购物车那个用户。

更加详细的请看这一篇:cookie、session与token的真正区别

7、如果客户端禁止 cookie 能实现 session 还能用吗?

答:可以,Session的作用是在服务端来保持状态,通过sessionid来进行确认身份,但sessionid一般是通过
Cookie来进行传递的。如果Cooike被禁用了,可以通过在URL中传递sessionid。

8、在浏览器输入一个网址到页面显示出来中间都发生了什么?

答:例如查询www.baidu.com的IP地址分为以下几个步骤:

  1. 浏览器根据网址的域名查找对应的IP地址
    • 首先会查找浏览器的DNS缓存:浏览器会缓存DNS记录一段时间;
    • 如果没有,查找本机系统缓存中的DNS信息,首先检查域名是否在本地hosts里,再查系统本地缓存的其它DNS记录
    • 如果没有,接着就会发送一个请求到路由器上,然后路由器在自己的路由缓存上查找记录,路由器一般也存有DNS信息;
    • 如果本地路由器中没有,这个请求会被发送到ISP(网络服务提供商),ISP也会有相应的ISP DNS服务器;
    • 如果没找到,DNS递归查询:本地域名服务器-----根域名服务器-----顶级域名服务器-----二级域名服务器-----三级域名服务器
      • 向本地DNS服务器发送一个含有域名的DNS查询报文;
      • 本地DNS服务器把查询报文转发到根DNS服务器;
      • 根DNS服务器注意到其com后缀并向本地DNS服务器返回com的顶级域名服务器的IP地址;
      • 该本地DNS服务器再次向comDNS服务器发送查询请求;
      • comDNS服务器注意到其www.baidu.com后缀并用负责该域名DNS服务器的IP地址作为回应 (否则再查二级,三级域名服务器);
    • 最后,本地域名服务器将含有www.baidu.com的IP地址的响应报文发送给客户端主机;
  2. 浏览器根据查找到的IP地址向WEB服务器发送一个HTTP请求
    • 建立Socket通信,调用系统库函数socket,建立TCP连接
    • 建立TCP连接后,会使用HTTP协议发送HTTP的GET请求 ;
    • HTTP请求协议:请求行,请求头,请求体;
  3. 服务器收到请求并处理
  4. 服务器向浏览器返回一个响应
  5. 浏览器对该响应进行解码渲染显示到页面上
  6. 页面显示完成后,如果需要更新信息的话,浏览器就会继续向服务器发送异步请求

DNS 服务器:一种专门保存了 Web 服务器域名与 IP 的对应关系的服务器

9、关于TCP粘包你知道什么?

答:TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾。

TCP采用了基于流的传输,基于流的传输不认为消息是一条一条的,是无保护消息边界的。
UDP是面向消息传输的,是有保护消息边界的,接收方一次只接受一条独立的信息,所以不存在粘包问题。

造成TCP粘包的原因有哪些?

出现粘包的原因是多方面的,可能是来自发送方,也可能是来自接收方。

  • 发送方:TCP默认使用Nagle算法,将多次间隔较小、数据量较小的数据,合并成一个数据量大的数据块,然后进行封包;减少网络中报文段的数量
  • 接收方:TCP接收数据包到缓存的速度大于应用程序从缓存中读取数据包的速度,多个包就会被缓存,应用程序就有可能读取到多个首尾相接粘到一起的包。

出现TCP粘包了需要处理吗?

如果是一个文件被分成多个部分发送,这时当然不需要处理粘包现象;但是如果多个分组毫不相干,甚至是并列关系,那么这个时候就一定要处理粘包现象了。

如何处理粘包?

  1. 如果是发送方原因导致粘包:那么可以通过关闭Nagle算法来解决,使用TCP_NODELAY选项来关闭算法。
  2. 如果是接收方原因导致粘包:接收方没有办法来处理粘包现象,只能将问题交给应用层来处理。
  3. 应用层处理粘包:循环处理,应用程序从接收缓存中读取分组时,读完一条数据,就应该循环读取下一条数据,直到所有数据都被处理完成。
    • 格式化数据:每条数据有固定的格式(开始符,结束符),这种方法简单易行,但是选择开始符和结束符时一定要确保每条数据的内部不包含开始符和结束符。
    • 发送长度:发送每条数据时,将数据的长度一并发送,例如规定数据的前4位是数据的长度,应用层在处理时可以根据长度来判断每个分组的开始和结束位置。

10、Ping的工作原理是什么?

我们在网络通信的过程中,常常使用 ping 某一个 IP 地址或者某个域名看下基本连接是否正常是否有丢包是否有网络延迟

Ping 的原理是 ICMP(无连接、网络层协议) 协议,具体是:

  1. Ping通过向目的主机发送 ICMP Echo请求报文 ,目的主机收到之后会发送Echo 回答报文
  2. Ping 会根据响应的时间成功响应的次数估算出数据包往返时间以及丢包率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++、C++11】可变参数模板、lambda表达式、包装器

文章目录📖 前言1. 可变参数模板1.1 万能模板:1.2 完美转发:1.3 可变参数模板的使用:1.4 emplace_back:2. lambda表达式2.1 lambda表达式的定义:2.2 lambda表达式的用法:2.2 - 1 捕捉列表的用法…

manacher算法详解

例题 求一个字符串的最长回文子串的长度 O(N2)O(N^2)O(N2)的解法很容易想,就是从每个字符位置向左右同时拓展,然后检查当前是不是回文,更新长度,可以简单写一下代码 int solve(string &ss){int ans 0;int n ss.length();s…

从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具

从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具 文章目录1. 神经网络数据预处理1.1 常规预测情景1.2 文本预测场景2.全连接神经网络 DNN3.卷积神经网络CNN4.循环神经网络 RNN5.长短期记忆神经网络 LSTMʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔ…

【数据结构】详解空间复杂度

Yan英杰的博客 悟已往之不谏 知来者之可追 目录 空间复杂度 ​案例1:计算BubbleSort的空间复杂度? 案例2:计算斐波那契额数列的前N项的空间复杂度 案例3:计算阶乘递归Fac的空间复杂度? 案例4:F1和F2两函数是否使用的同一块空间 案例5:计算该…

git团队合作 - branch分支的使用、主分支合并、冲突处理方案

情景例子开发部3人,组长man, 组员devA,devB;1)组长man负责代码合并、冲突处理、检查代码、合并代码到master主分支;2)组员devA负责开发3)组员devB负责开发git仓库主次分支安排1&…

windows下qt creator 配置编译环境gcc,g++,gdb,cmake

MSVC:即Microsoft Visual C Compiler,即微软自己的编译器 MinGW:我们都知道GNU在Linux下面鼎鼎大名的gcc/g,MinGW则是指Minimalist GNU for Windows的缩写 这里我们选择MinGW,至于Qt中,这两种模式的区别&…

Python入门自学进阶-Web框架——34、富文本编辑器KindEditor、爬虫初步

KindEditor是一个轻量级的富文本编辑器,应用于浏览器客户端。一、首先是下载:http://kindeditor.net/down.php,如下图下载后是解压缩后:红框选中的都可以删除到,这些主要是针对不同的语言编写的示例,因为我…

一文教会你如何简单使用Fegin进行远程服务调用

文章目录1、fegin的基本介绍2、fegin的基本使用步骤3、项目中的实际运用4、测试前言在分布式微服务中,少不了会进行不同服务之间的相互调用,比如A服务要调用B服务中的接口,如何简单方便的实现呢?fegin可以来帮助。 1、fegin的基本…

如何禁止删除或修改RAR压缩包里的文件?很多人不知道这个功能

你是否有过这样的需求?把文件压缩成RAR格式后,需要对压缩包里的文件进行保护,以防别人或者自己误删文件,或者不小心修改了文件内容。 有些小伙伴可能会给压缩包里的文件都设置上“限制编辑”,这虽然也能防止随意更改内…

Stable Diffusion 个人推荐的各种模型及设置参数、扩展应用等合集(不断更新中)

一、说明 | 表示或者 表示 以上 二、模型 适用风景、房子、车子等漫画类风格 模型的VAE不要用模型附带的,好像就是naifu的官方vae,很老了,用 vae-ft-mse-840000-ema-pruned.ckpt 或者是 kl-f8-anime2.ckpt; 嵌入模型要下载作者…

免费集装箱箱号识别API,人工智能企业CIMCAI集装箱识别检测人工智能平台全球4千企业用户,支持API集成二次开发人工智能企业

免费集装箱箱号识别API,人工智能企业CIMCAI集装箱识别检测人工智能平台全球4千企业用户,支持API集成二次开发。箱信息识别及铅封号识别功能免费,顶尖AI集装箱识别率99.98%,全球No.1集装箱人工智能企业CIMCAI打造。中国上海人工智能…

chrome如何查看和修改除了密码,付款方式,地址意外的自动填充表单内容

这种自动填写的内容似乎无法设置。 软件地址:https://sqlitebrowser.org/dl/ 去这里查看地址 https://chromium.googlesource.com/chromium/src//master/docs/user_data_dir.md 比如我是windows,则地址为:C:\Users\用户名\AppData\Local\Go…

【Java】SpringBoot中实现异步编程

前言 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题? 什么是异步? 首先我们先来看看一个同步的用户注册例子,流程如下: 异步的方式如下: 在用户注册后将成功结果返回,…

java:UUID和雪花生成算法

目录 UUID生成不重复命名方法 在实际项目中的运用 UUID算法的缺点 什么是雪花算法? UUID生成不重复命名方法 我们在做项目的时候可能需要用到全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID UUID可以自动生成唯一的id。是java.util中自…

面朝大海,春暖花开丨2023年Kaadas凯迪仕全国经销商大会成功召开

3月8日,We——2023年Kaadas凯迪仕全国经销商大会将在中国青岛星光岛会议中心隆重举行,盛会汇聚了超过1000名优秀合作伙伴,规模空前。Kaadas凯迪仕品牌创始人&集团总裁苏志勇先生、集团董事长苏祺云先生以及各高层领导均莅临现场。 大会伊…

万字长文:Stable Diffusion 保姆级教程

万字长文:Stable Diffusion 保姆级教程 2022年绝对是人工智能爆发的元年,前有 stability.ai 开源 Stable Diffusion 模型,后有 Open AI 发布 ChatGPT,二者都是里程碑式的节点事件,其重要性不亚于当年苹果发布iPhone&a…

蓝库云|告诉你传统产业该如何进行数字化转型

在后疫情时代下,企业该如何在面临生存危机的情形下,投入「数字化转型」、提升公司竞争力,已成为许多公司的当务之急,但到底什么是数字化转型呢?传统产业又如何着手进行数位转型? 数字化转型是什么&#xf…

Uipath Excel 自动化系列13-ForEachExcelSheet(遍历Sheet)

活动描述 ForEachExcelSheet(遍历Sheet):遍历Excel中的工作表,可以对 Excel 工作簿中的每个工作表重复一个或多个活动,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 使用场景:当处理包含多张工作表的 Excel 文件,…

项目管理工具DHTMLX Gantt灯箱元素配置教程:如何验证

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术&am…

【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束

前言:本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:计数器与分频器 ​​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片 配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度 存储器&#…