计算机网络八股整理(一)

news2024/11/27 11:01:26

计算机网络八股文整理

一:网络模型

1:网络osi模型和tcp/ip模型分别介绍一下

osi模型是国际标准的网络模型,它由七层组成,从上到下分别是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,而因为osi网络模型制定前,因特网已经出现,因特网使用的是tcp/ip模型,它由四层组成,分别是应用层,传输层,网络层,网络接口层,各层职责分明,下层负责给上提供服务;

拓展1:为什么要分层:

就像是我们编写后端程序一样,我们会进行分层,可以使每一层的职责分明,比如mapper层专门进行数据库操作一样。

分层有2点好处:

1:各层相互独立

2:提高灵活性和可替代性:比如修改每一层,对其他层的影响非常小,与我们平时开发程序的高内聚低耦合的原则可以对应上;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2:tcp,ip分别属于哪个层

tcp-> 传输层

ip -> 网络层

拓展:每个层都有哪些协议

应用层:http,https,dns,ftp,smtp (用于发送电子邮件)

传输层:tcp,udp;

网络层:ip,icmp(互联网控制消息协议:用于网络诊断),Arp协议(根据ip地址寻找mac地址),rarp(根据)

网络接口层:mac:

二:http

1:从输入url到页面显示发送了什么(* * * )

1:首先在搜索栏输入一串网址

2:浏览器根据dns协议,去本地的dns服务器查询域名对应的ip,如果本地dns服务器没有换存,就去访问根dns服务器,由根dns服务器之路去访问顶级域dns服务器,再由顶级域dns服务器指路去访问对应的权威dns服务器,最后查询到返回域名对应的ip,并将映射关系存入本地dns服务器;

4:然后根据IP地址和端口号,向目标服务器发起tcp连接请求,也就是tcp三次握手建立连接;

5:然后在连接上发送http报文请求,请求获取网页内容

6:服务器处理请求,返回网页数据

7:浏览器解析响应数据,将响应体中的html页面渲染成网页的样式,然后再根据html中的url(如图片)继续发送请求,获取资源,直到网页完全加载完毕;

8:不通信时关闭tcp连接;

2:http报文有哪些部分

http请求报文有请求行,请求头,请求体;

http响应报文有状态行,响应头,响应体;

拓展1:请求头中常见的字段:

1:accept:可以接收的报文类型;

2:connection:连接类型:keep-alive(长连接);

3:accept-encoding:能够接受的编码格式;

拓展2:http中常见的状态码:

以1开头的:表示一种中间状态

以2开头的:表示请求成功;

以3开头的:表示请求重定向;301永久重定向;302临时重定向;

以4开头的:表示客户端出现问题;如404是客户端请求的资源不存在

以5开头的:表示服务端出现问题;

联想:304状态码:缓存重定向

对于多次请求会返回同样的资源,会采用http缓存,这样能加快访问速度;

http缓存有两种实现方式:强制缓存和协商缓存;

强制缓存:强制的含义是,由浏览器来控制是否使用本地缓存,通过两个字段一个是exprie,一个是cache-control,都是用来设置过期时间,exprie是绝对时间,cache-control是相对时间,cache-control的优先级会更高,这样发送请求时会先判断缓存有没有过期,如果没有就直接使用缓存;

协商缓存:是服务端告诉客户端是否使用缓存,有两种方式,一种是最后修改时间,一种是唯一标识;

最后修改时间的逻辑是:当本地缓存过期时,会向服务端发送请求,携带上一次最后的修改时间,服务端会比对,如果服务端资源最后修改时间较新,会返回200同时返回服务端资源,如果旧那么就返回304,标识让客户端查看浏览器的缓存;

唯一标识的逻辑时:比对上一次的唯一标识,如果改变就返回新资源,没有返回304’

拓展3:502和504状态码的区别

502:网关请求收到无效的响应 bad-gateway

504:网关请求超时;

3:http请求有哪些类型;

get:获取资源

put:更新资源

post:提交数据

delete:删除资源

head:类似于get请求,获取资源的头部信息;

拓展1:get和post的使用场景?他们的区别?

根据rfc规范,get通常原来获取指定的资源,post用来提交数据;

区别:get的参数一般都写在url中,url有长度的限制,post的参数一般是实体写在请求体中;

get是安全和幂等的,post不是安全和幂等的;

注意:在具体的开发中,get也可以来提交数据,post也可以获取数据,因为rfc只是规范,不是强制的,只是我们一般按照规范来;

4:http长连接:

http是基于tcp传输协议实现的,进行数据传输前需要建立连接;

在http1中,每一次请求响应都要建立一个连接,浪费资源且影响性能。

在http1.1中使用了长连接:可以在请求字段connection设置为keep-alive,这就是设置长连接,一个连接可以接受多个请求响应;

5:http默认的端口是什么

http默认的端口的80,https默认的端口是443;

6:http1.1怎么对请求拆包的,具体说说怎么拆的:

服务端收到http请求后主要是根据请求中的content-length来进行拆包,content-length是内容的长度,服务器会根据内容的长度来读取对应长度的内容,这样避免了内容的丢失;

7:http为什么不安全

1:http是明文传输,通信过程中会被窃听;

2:http不进行身份验证,有冒充风险;

3:http没有校验机制,内容容易被篡改;

8:http和https的区别:

https在http和tcp层之间加入了ssl/tls协议,解决了http不安全的问题;

https在tcp三次握手建立连接之后,还会进行ssl/tls四次握手才能进行通讯;

http默认的端口是80,https默认的端口是443;

拓展1:https怎么解决了http的不安全的问题:

http不安全的问题有三点:

1:窃听风险;

2:篡改风险;

3:冒充风险;

基于三个风险提供解决方案:

1:加密通信:混合加密:非对称加密,和对称加密

2:摘要算法加上数字签名;

3:身份验证:ca数字证书

联想1:讲一下非对称加密算法和对称加密算法:

对称加密算法:只有一把密钥,密文提供这把密钥加密和解密;

非对称加密:两把密钥一把公钥一把私钥,可以公钥加密私钥解密,也可以公钥加密私钥解密,私钥是绝对不会被泄露的;

对于两种算法,对称加密的传输性能更好,所以我们使用对称加密进行会话中的数据传递,但是密钥如何分发给客户端和服务端,使不被窃取,所以我们使用非对称加密算法传递会话密钥,客户端持有公钥,将会话密钥加密,只有服务端的私钥才能解密,获得会话密钥后,客户端和服务端使用会话密钥进行通信;

联想2:讲一下摘要算法和数字签名

因为我们发送的报文有可能会被篡改所以我们要进行验证,可以使用摘要算法,摘要算法:将要发送的内容和内容对应的经过hash算法加密hash值一起发送,接收方接收后将内容转成hash值与发送过来的hash值进行对比,如果一致说明内容没有被串改,这就是摘要算法,但是如果hash值和内容都被串改了怎么办呢,所以我们使用数字签名算法,是使用非对称加密算法,通过私钥加密公钥解密来保证内容不会被冒充;

联想3:讲一下数字证书:

之前的加密通信是基于公私钥来传递会话密钥的,如果中间人伪造一对公私钥,也会造成安全风险,所以要进行身份验证,也就是利用数字证书,利用数字证书来确定服务端的身份,数字证书是由ca(数字证书认证机构)发放的,具体的流程是:服务端申请数字证书,将公钥放入数字证书中,ca通过ca的密钥对服务端公钥进行加密,然后发送给客户端,客户端确定数字证书的合法性然后通过ca的公钥进行解密获取服务端提供的公钥;

9:https的握手过程说一下:

https的握手即tls的握手,传统的tls的握手是基于ras算法来进行密钥交换的,进行四次握手,具体流程如下:

1:客户端发送client-hello

tls的协议版本

携带客户端支持的密钥套件

客户端产生的随机数

2:服务端发送server-hello

确认密钥套件

确认tls协议版本

携带服务端产生的随机数

发送含有公钥的数字证书

3:第三次握手:

客户端取出数字证书,验证合法性,然后解密出公钥;

发送一个使用公钥加密的随机数;

加密算法变更通知,以后均用会话密钥进行通信;

客户端握手结束通知,并将之前通信产生的数据做一个摘要,提供给服务端校验

4:第四次握手:

服务端收到公钥加密的随机数后,使用私钥解密,此时有了三个随机数,将三个随机数用协商好的密钥加密算法进行加密,

作为之后的会话密钥使用;

然后发送加密算法变更通知

携带服务端握手结束通知,并且将之前通信产生的数据做一个摘要,提供给客户端校验

10:https如何防范中间人攻击

中间人估计是伪造成服务器与客户端建立联系,同时与服务端建立联系

主要通过两个手段:

1:非对称加密协商会话密钥

2:身份校验:客户端会校验服务器证书的合法性;

11:http1.1和http2的区别

http2对于http1.1有了部分改进:

1:头部压缩:当多次请求使用相同的头部信息时,会将头部信息存入头信息表,之后发送请求,头部只会使用头信息中保存的索引号;

2:二进制报文:http1.1采用的是纯文本的报文,http2使用二进制存储,包括头信息和数据体,变成头信息帧和数据帧,这样对计算机来说是有利的,增加的传输的效率;

3:并发传输:采用stream流,多个stream可以公用一个tcp连接,解决了http1.1的队头阻塞问题;

4:服务端可以主动推送消息:这样减少了发送http请求的次数,提高了性能;

12:建立tcp连接后什么情况下会中断:

1:正常情况下客户端发送fin报文后,调用close函数,四次挥手后就会中断连接;

2:发送方发送数据,超时没收到ack回复,重发到最大次数后断开连接;

3:长时间没有发送请求和响应也会中断tcp连接;

13:http,socket,和tcp的区别:

http是应用层的超文本传输协议,定义了客户端和服务端交换的数据格式和规则;

socket:提供了网络传输的接口

tcp:是传输层的协议,负责在通信的两端建立可靠的数据传输连接;

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

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

相关文章

【Qt】控件7

1.QTextEdit的简单使用 使用简单的QTextEdit,获取到的内容显示到标签上 使用textChanged信号 在槽函数中需要获取QTextEdit的内容,对应操作是: QString curorui->textEdit->toPlainText();然后显示到标签上,对应操作是: …

【博主推荐】C#的winfrom应用中datagridview常见问题及解决方案汇总

文章目录 1.datagridview绘制出现鼠标悬浮数据变空白2.datagridview在每列前动态添加序号2.1 加载数据集完成后绘制序号2.2 RowPostPaint事件绘制 3.datagridview改变行样式4.datagridview后台修改指定列数据5.datagridview固定某个列宽6.datagridview某个列的显示隐藏7.datagr…

AI智能体崛起:从“工具”到“助手”的进化之路

目录 AI智能体的崛起 AI智能体的定义与决策模型 AI智能体的特点与优势 AI智能体的应用与类型 面临的挑战 未来展望 近年来,人工智能领域的焦点正从传统的聊天机器人(Chat Bot)快速转向更具潜力的AI智能体(AI Agent&#xff…

【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写

🌎 应用层自定义协议与序列化 文章目录: Tcp协议Socket编程 应用层简介 序列化和反序列化       重新理解read/write/recv/send及tcp的全双工       Socket封装       服务器端改写 🚀应用层简介 我们程序员写的一个个解决…

鸿蒙动画开发07——粒子动画

1、概 述 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。 动画元素是一个个粒子,这些粒子可以是圆点、图片。我们可以通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画,来营造一种氛围感,比如下…

C语言学习 12(指针学习1)

一.内存和地址 1.内存 在讲内存和地址之前,我们想有个⽣活中的案例: 假设有⼀栋宿舍楼,把你放在楼⾥,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩,如果想找到你,就得挨…

【pyspark学习从入门到精通19】机器学习库_2

目录 估计器 分类 回归 聚类 管道 估计器 估计器可以被看作是需要估算的统计模型,以便对您的观测值进行预测或分类。 如果从抽象的 Estimator 类派生,新模型必须实现 .fit(...) 方法,该方法根据在 DataFrame 中找到的数据以及一些默认或…

结构方程模型(SEM)入门到精通:lavaan VS piecewiseSEM、全局估计/局域估计;潜变量分析、复合变量分析、贝叶斯SEM在生态学领域应用

目录 第一章 夯实基础 R/Rstudio简介及入门 第二章 结构方程模型(SEM)介绍 第三章 R语言SEM分析入门:lavaan VS piecewiseSEM 第四章 SEM全局估计(lavaan)在生态学领域高阶应用 第五章 SEM潜变量分析在生态学领域…

JQuery -- 第九课

文章目录 前言一、JQuery是什么?二、JQuery的使用步骤1.引入2.书写位置3. 表示方法 三、JQuery选择器1.层级选择器2. 筛选选择器3. 排他思想4. 精品展示 四、jQuery样式操作1. 修改样式2.类操作1. 添加2. 移除3. 切换 五、jQuery动画1. 显示和隐藏2. 滑动1. slide2.…

无人机探测:光电侦测核心技术算法详解!

核心技术 双光谱探测跟踪: 可见光成像技术:利用无人机表面反射的自然光或主动光源照射下的反射光,通过高灵敏度相机捕捉图像。该技术适用于日间晴朗天气下的无人机探测,具有直观、易于识别目标的特点。 红外成像技术&#xff1…

Java使用replaceAll替换时不使用正则表达式

前言 public String replaceAll(String regex, String replacement) {return Pattern.compile(regex).matcher(this).replaceAll(replacement);}在使用String.replaceAll() 方法时,由于入参时regex ,而入参刚好是正则表达式的字符该怎么办?我…

计算机毕业设计Hadoop+Spark音乐推荐系统 音乐预测系统 音乐可视化大屏 音乐爬虫 HDFS hive数据仓库 机器学习 深度学习 大数据毕业设计

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

途普科技企业知识中台完成华为昇思MindSpore技术认证

近日,北京途普科技有限公司(以下简称“途普科技”)作为华为昇腾大模型方向的应用软件伙伴,核心产品企业知识中台已成功与华为AI框架昇思MindSpore完成相互兼容性认证。这一成就标志着途普科技在AI领域与华为的合作进一步加深&…

自由学习记录(25)

只要有修改,子表就不用元表的参数了,用自己的参数(只不过和元表里的那个同名) 子表用__index“继承”了父表的值,此时子表仍然是空表 一定是创建这样一个同名的变量在原本空空的子表里, 传参要传具体的变…

【Nginx】核心概念与安装配置解释

文章目录 1. 概述2. 核心概念2.1.Http服务器2.2.反向代理2.3. 负载均衡 3. 安装与配置3.1.安装3.2.配置文件解释3.2.1.全局配置块3.2.2.HTTP 配置块3.2.3.Server 块3.2.4.Location 块3.2.5.upstream3.2.6. mine.type文件 3.3.多虚拟主机配置 4. 总结 1. 概述 Nginx是我们常用的…

AIGC-----AIGC在虚拟现实中的应用前景

AIGC在虚拟现实中的应用前景 引言 随着人工智能生成内容(AIGC)的快速发展,虚拟现实(VR)技术的应用也迎来了新的契机。AIGC与VR的结合为创造沉浸式体验带来了全新的可能性,这种组合不仅极大地降低了VR内容的…

学习笔记035——MySQL索引

数据库索引 索引是为了提高数据的查询速度,相当于给数据进行编号,在查找数据的时候就可以通过编号快速找到对应的数据。 索引内部数据结构:B Tree 主键自带索引。 如: insert into user (id, name) values (1,f); insert int…

C语言数据结构-链表

C语言数据结构-链表 1.单链表1.1概念与结构1.2结点3.2 链表性质1.3链表的打印1.4实现单链表1.4.1 插入1.4.2删除1.4.3查找1.4.4在指定位置之前插入或删除1.4.5在指定位置之后插入或删除1.4.6删除指定位置1.4.7销毁链表 2.链表的分类3.双向链表3.1实现双向链表3.1.1尾插3.1.2头插…

计算机网络 网络安全基础——针对实习面试

目录 网络安全基础你了解被动攻击吗?你了解主动攻击吗?你了解病毒吗?说说基本的防护措施和安全策略? 网络安全基础 网络安全威胁是指任何可能对网络系统造成损害的行为或事件。这些威胁可以是被动的,也可以是主动的。…

上海乐鑫科技一级代理商飞睿科技,ESP32-C61高性价比WiFi6芯片高性能、大容量

在当今快速发展的物联网市场中,无线连接技术的不断进步对智能设备的性能和能效提出了更高要求。为了满足这一需求,乐鑫科技推出了ESP32-C61——一款高性价比的Wi-Fi 6芯片,旨在为用户设备提供更出色的物联网性能,并满足智能设备连…