当前位置: 首页 > news >正文

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

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

文章目录

  • 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 会根据响应的时间成功响应的次数估算出数据包往返时间以及丢包率

相关文章:

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

本篇总结的是计算机网络知识相关的面试题,后续也会更新其他相关内容 文章目录1、HTTP 与 HTTPS 有哪些区别?2、HTTPS的加密过程是什么?3、GET与POST有什么区别?4、讲讲HTTP各个版本的区别?5、HTTP与FTP的区别&#xff…...

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

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

Salesforce 2023财年逆风增长,现金流达历史最高!

在过去的一年里,Salesforce一直是华尔街最关注的公司之一。3月1日,CRM领域的全球领导者Salesforce公布了截至2023年1月31日的第四季度和整个财年的业绩。 Salesforce主席兼首席执行官Marc Benioff表示: Salesforce全年实现了314亿美元的收入…...

2023年3月全国数据治理工程师认证DAMA-CDGA/CDGP考试怎么通过?

弘博创新是DAMA中国授权的数据治理人才培养基地,贴合市场需求定制教学体系,采用行业资深名师授课,理论与实践案例相结合,快速全面提升个人/企业数据治理专业知识与实践经验,通过考试还能获得数据专业领域证书。 DAMA认…...

【安卓软件】KMPlayer-一款完美的媒体播放器 可以播放所有格式的字幕和视频

KM PlayerKM Player是一款未编码的视频播放器,让您无需编码即可方便地播放各种格式的视频,并为您的新体验添加了字幕支持、视频播放速度和手势等功能。KMPlayer 拥有美观和直观的设计,让您可以更方便地管理和播放视频!功能高品质视…...

ClickHouse--分布式查询多副本的路由规则

前言在集群情况下,数据写入可以有写本地表和写分布式表2种方案,但是面向集群查询时,只能通过Distributed表引擎实现。本文主要介绍分布式查询多副本的路由规则。该配置项为:load_balancerandom/nearest_hostname/in_order/first_o…...

Linux 常用命令总结

本篇博客记录读研以来高频使用的 linux 系统下的命令合集 命令分类程序运行系统相关文件处理文件传输相关命令文件显示相关命令文件排列相关命令Anaconda 相关命令tmux 终端复用神器使用tips程序运行 自动保存日志,替代write命令: xxx | tee ./xxx.log…...

超分扩散模型 SR3 可以做图像去雨、去雾等恢复任务吗?

文章目录前言代码及原文链接主要的点如何进行图像恢复前言 关于扩散模型以及条件扩散模型的介绍,大家可以前往我的上一篇博客:扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码。 SR3是利用扩散模…...

STM32Cube STM32MP157 M4端CAN通讯实战

1、环境 开发系列:STM32MP157 开发软件:STM32CubeIDE 1.4.0 例程目的:在M4端实现CAN通讯 2、目的 近日,有客户需要在STM32MP157中的M4端实现CAN通讯,我也是初次在M4端编写CAN通讯代码,上网研究了其他人写…...

npm install报错unable to resolve dependency tree

一、问题背景npm install安装项目依赖时报错PS D:\test> npm install npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: vue-admin-template4.2.1 npm ERR! Found: webpack5.74.0 npm ERR! node_modules/we…...

力扣sql简单篇练习(二十六)

力扣sql简单篇练习(二十六) 1 每家商店的产品价格 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 多行变成多列,考虑用sum if分组 SELECT product_id,sum(IF(storestore1,price,null)) store1,sum(IF(storestore2,price,null)) store2, sum(IF(st…...

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块第九套解析(详细)

2022年全国职业院校技能大赛(中职组) 网络安全竞赛试题 (9) (总分100分) 赛题说明 一、竞赛项目简介 “网络安全”竞赛共分A.基础设施设置与安全加固;B.网络安全事件响应、数字取证调查和应用安全;C.CTF夺旗-攻击;D.CTF夺旗-防御等四个模块。根据比赛实际情况,竞…...

C++回顾(十六)—— 异常处理机制

16.1 异常的基本语法 1) 若有异常则通过throw操作创建一个异常对象并抛掷。2) 将可能抛出异常的程序段嵌在try块之中。控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。3) 如果在保护段执行期间没有引起异常&#xf…...

【100个 Unity实用技能】 | Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…...

哈希表的实现

哈希表概念 二叉搜索树具有对数时间的表现,但这样的表现建立在一个假设上:输入的数据有足够的随机性。哈希表又名散列表,在插入、删除、搜索等操作上具有「常数平均时间」的表现,而且这种表现是以统计为基础,不需依赖…...

搞懂海明码

海明码搞懂之前先了解奇偶校验。例如:1111 对其进行奇偶校验。 奇检验:11111 奇校验使1的个数保持在奇数 偶校验:01111 偶校验使1的个数保持在偶数 海明码可以拆分为三步: 一、确定校验的位数 公式:2^k > k n …...

数据库:Mysql数据库安装及使用

目录 一、数据库介绍 1、基本概念 2、数据库类型 3、版本演变 二、Mysql安装 1、官网下载yum安装 2、手动配置yum安装 三、Mysql基本操作 1、登录与改密 2、检测数据库健康 3、 库的创建与使用 4、数据类型 5、修饰符 6、表的创建与使用 7、分组查询 8、查询排…...

【冲刺蓝桥杯的最后30天】day7

大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨‍💻,断更了整整一年,又开始恢复CSDN更新,从今天开始更新备战蓝桥30天系列,一共30天,如果对你有帮助或者正在备…...

REG.EXE修改注册表-解决win10微软输入法默认中文,将其全局修改为英文

REG.EXE修改注册表-解决win10微软输入法默认中文,将其全局修改为英文 使用REG.EXE 可以直接强制修改注册表字段 修改注册表: REG.EXE ADD 注册表路径 /v 注册表项字段 /t 注册表字段类型 /d 注册表值 /f 例如: REG. EX ADD HKLM\System\C…...

hive之正则函数研究学习regex/regex_replace/regex_extract

首先学习这个之前要先知道一些正则的基本知识。 随便百度一下正则表达式 – 元字符 | 菜鸟教程 字符描述\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,n 匹配字符 "n"。\n 匹配一个换行符。序列 \\ 匹…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

ip子接口配置及删除

配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...