0121-1-计算机网络安全

计算机网络安全

1.Get 和 Post 的区别

结构:get 有请求体,post没有请求体

应用场景:get 用于获取数据,post用于提交数据;

缓存:get 的缓存保存在浏览器和web服务器日志中;

传输方式:get 使用明文传输,post请求保存在请求体中;

请求长度:get 长度限制在2kb以内。

2.常见的HTTP请求

get、post、put、delete、head

3.http1.0 / http1.1 / http2.0 之间有哪些区别?

http1.0 浏览器与服务器只保持短暂的连接,每次请求都需要向,服务器建立一个TCP连接;

http1.0 存在宽带资源浪费的现象,例如只需要某个对象的一部分,而服务器却把整个对象传输过来;

http1.1 支持长链接,默认开启了keep-alive ,弥补了http1.0每次传输都需要创建链接的问题;

http1.1 使用持久连接来时多个HTTP请求复用同一个TCP连接;

http1.1 支持管道传输 ,一个请求发出去,不必等它回来,就可以发送第二次;

http1.1 引入了更多的缓存策略 Etag 、If-Match、if-None-Match

http1.1 中新增了 host 字段,用来指定服务器的域名。

二进制分帧、多路复用、数据流、头部压缩、基于HTTPS相对安全、服务器推送

http2.0 使用二进制协议,头部信息和数据体都是二进制,统称为’帧’;

http2.0 使用多路复用TCP连接,客户端和服务端可以同时发送多个请求;

http2.0 将每个请求和回应都标记一个数据流ID;

http2.0 头部使用gzip 和 compress 压缩头部信息,在客户端和服务器之间共同维护一张头信息索引表,每次请求只发送索引号,就能找到相应的头部信息表;

http2. 0 服务端不再是被动响应,可以主动向客户端发送消息

5.浏览器中输入www.baidu.com 发生了什么?

(1)、首先判断输入的url是一个合法的连接还是待搜索关键词,如果是个合法的url 👇;

(2)、就进行缓存判断,如果浏览器中有缓存资源,则直接访问缓存资源;如果没有,则开始👇;

(3)、DNS解析客户端本地DNS服务器发送一个请求,查看是否存在缓存,有就直接访问;

​ 如果没有,就向根域名服务器发送请求,根域名服务器发现是.com或者.cn后缀的域名;

​ 就交给顶级域名服务器,顶级域名服务器返回baidu.com域名信息;

​ 并让本地DNS转向访问权威域名服务器,权威域名服务器返回www .baidu. com对应的IP地址,

​ 同时本地DNS缓存该ip地址,客户端收到IP地址后进行访问。

(4)、CDN(内容分发网络)

​ 如果服务器使用了CDN,DNS返回的不再是IP地址,而是CNAME别名,指向全局均衡CNAME;

​ 浏览器发送url给DNS服务器,DNS进行域名解析,解析发现该url有一个CDN专用的DNS服务器

​ DNS会将解析权交给CNAME指向的CDN专用DNS服务器CDN专用DNS服务器将IP返回给浏览器;

浏览器CDN全局负载均衡服务器发起请求,CDN全局负载均衡服务器根据IP;

​ 找到距离用户最近的区域负载均衡服务器,选择合适的缓存服务器响应用户的请求。

Image

(5)、TCP三次握手

​ 第一次握手,客户端向服务器发送一个SYN的报文,并初始化序列 ISN;

​ 第二次握手,服务端收到客户端的SYN后,将ISN+1作为自己的ACK值,并以自己的SYN作为应答;

​ 第三次握手,客户端收到服务端的SYN后,向服务端发送一个ACK报文,值为ISN+1,服务器收到后双方就建立了连接。

🌰为什么是三次握手?不是两次、四次?

​ 三次握手可以阻止重复 历史连接的初始化(主要原因);

​ 三次握手可以同步双方的初始序列号

​ 三次握手可以避免资源浪费

🌰SYN是什么?ACK又是什么?

(5)、页面渲染:浏览器将html解析成DOM树,将css解析成CSSOM树,结合DOM树和CSSOM树生成渲染树。接着解析

(6)、TCP四次挥手

​ 第一次挥手,客户端向服务器发送一个FIN的报文,之后进入FIN_Wait_1状态;

​ 第二次挥手,服务端收到该报文后,向客户端发送ACK报文作为应答,接着服务端进入closed_wait状态;

​ 第三次挥手,客户端收到服务端的ACK报文后,进入FIN_Wait_2状态,等待服务端数据处理完,继续向客户端发送一个FIN报文,之后服务端进入了Last_ack状态;

​ 第四次挥手,客户端收到服务端的FIN报文后,就进入了Closed 状态,至此服务端已经完成了连接关闭。客户端在经过2msl后,自动进入closed状态,至此客户端进入了完成连接关闭。

6.对Keep-alive的理解

http1.0 默认开启的长链接(keep-alive ),使用持久连接来使多个http请求复用同一个TCP连接,数据传输完成保持TCP连接不断开。

具有①减少CPU和内存的使用。②降低阻塞控制。③减小后续请求延迟。

7.什么是https协议?TCL/SSL 的工作原理是什么?

https是为了解决http中 ①内容可能被监听②不验证通信方身份的问题 产生的,这里的s表示TLS/SSL协议,其中SSL的实现,主要依赖于对称加密、非对称加密、摘要算法、数字签名这几种手段。

对称加密:加密和解密使用的密钥都是同一个,是对称的。

非对称加密:存在两个密钥,一个公钥,一个私钥。公钥和私钥都可以用来加密解密,公钥加密的必须使用私钥解密。

混合加密:对称加密+非对称加密,具体做法:发送密文的一方使用对方的公钥对“对称密钥”进行加密,然后对方自己的密钥对“对称的密钥”解密;

摘要算法:把任意长度的密钥压缩成固定长度,形成了一个独一无二的的”摘要“字符串;

摘要算法可以理解为“单向"加密算法,常用的算法是 SHA-2,只有算法,没有密钥,加密后的数据无法解密;

但是不具有机密性,如果黑客把传递的消息和摘要一起改了,完整鉴别不出完整性!

数字签名:私钥对摘要的加密,可以由公钥解密后验证,把公钥私钥的用法反过来,私钥加密、公钥解密。

8.HTTPS是如何保证安全的?

​ 数字证书认证机构(CA): 服务端向数字证书认证机构提出公开密钥申请,数字证书认证机构确定申请者的身份后,会对已申请的公开密钥做数字签名;然后分配这个已签名的公开密钥,并将公开密钥放入公钥证书后绑定在一起;服务端会将这份数字证书发送给客户端,以进行非对称加密通信;接收到证书的客户端使用数字证书认证机构的公开密钥,对服务器发送过来的数字签名进行认证,验证通过,则证明认证服务器公开密钥是真正有效的认证机构。

9.常见的状态码

状态码含义描述
1xx信息状态码接收的请求正在处理
2xx成功状态码请求正常处理完毕
204响应头没有body数据
206相应头的body不是资源的全部
3xx重定向客户端请求资源变动,需重新发送请求
301永久重定向请求资源不存在了,需要用新的url访问
302临时重定向请求资源还在,暂时用新的url访问
304缓存重定向重定向已缓存文件
4xx客户端错误
403服务器禁止访问资源
404请求的资源找不到
5xx服务器内部错误
501客户端请求的功能还不支持
502服务器自身工作正常,访问后端服务器发生错误
503服务器很忙,暂时无法响应

10.TCP和UDP的区别

UDP(用户数据报协议):对应用层交下来的报文,不合并、不拆分,只是在其上面加个首部就交给网络层;

TCP(传输控制协议):把上应用层交下来的数据看成无结构的字节流来发送。

①TCP是面向连接协议,建立连接3次握手,断开连接4次挥手;UDP是面向无连接,接收端从消息队列读取,发送端将数据发送到网络。

②TCP提供可靠服务,传输过程可以确保数据无差错,不丢失;UDP尽可能传递数据,但不保证数据是否安全到达。

③TCP面向字节流,将应用层报文看作无结构的字节流,芬姐为多个报文段传输后,在目的站重新装配;UDP面向报文,不合并也不拆分,只保留报文边界。

④TCP只能点对点,双工传输;UDP支持一对一、一对多、多对一和多对多传输。

⑤TCP传输效率低;UDP传输效率高。

11.TCP和UDP的使用场景

TCP:SMTP(电子邮件)、Telnet(传输终端接入)、Http(万维网)、FTP(文件传输系统);

UDP:DNS(域名服务系统)、TFTP(文件传输)、SNMP(网络管理)、NFS(远程文件服务器);

12.TCP粘包是怎么回事? 如何解决?

如果一次请求发送的数据量较小,没达到缓冲区大小,TCP则会将多个请求合并为同一个请求进行发送,这就造成了TCP粘包的问题。

解决方案:①发送端将每个报封装成固定长度;

​ ②发送端在每个包末尾使用固定分隔符;

​ ③将消息分成头部和消息体,头部信息足够长才算读到一个完整的消息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

typing python 类型标注学习笔记

在Python 3.5版本后引入的typing模块为Python的静态类型注解提供了支持。这个模块在增强代码可读性和维护性方面提供了帮助。 目录 简介为什么需要 Type hints typing常用类型typing初级语法typing基础语法默认参数及 Optional联合类型 (Union Type)类型别名 (Type Alias)子类型…

ESP32-HTTP_webServer库(Arduino)

ESP32-HTTP 介绍 ESP32是一款功能强大的微控制器,具有丰富的网络和通信功能。其中之一就是支持HTTP协议,这使得ESP32可以用于创建Web服务器。 HTTP是什么? HTTP(Hyper Text Transfer Protocol),即超文本传…

[Error]连接iPhone调试时提示Failed to prepare the device for development.

环境: iPhone 7 Plus iOS 15.8 Xcode14.2 问题: 连接iPhone设备运行时,设备旁提示如下文案。 Failed to prepare the device for development. 这时强行点击运行按钮,会弹窗提示如下文案。 The run destination ZDMiPhone is n…

CTF show逆向5

1.查壳看看 没有壳,32位文件 同时注意到附件里的dll文件 2.放入IDA里看看 找到主函数 分别看看sub_4020B0 sub_4015BD 这两个函数 我发现一般看到MessageBoxA函数,都需要动态调试 动调看到 这里直接进行了返回,返回到了主函数 执行sub_4015BD函数 步…

力扣hot100 找到字符串中所有字母异位词 滑动窗口 双指针 一题双解

Problem: 438. 找到字符串中所有字母异位词 文章目录 思路滑动窗口 数组滑动窗口 双指针 思路 👩‍🏫 参考题解 滑动窗口 数组 ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( 1 ) O(1) O(1) class Solution { // 滑动窗口 …

【Gradle】Maven-Publishing

使用Java开发完成一个模块或者一个基础框架需要提供给团队项目使用,这个时候有两种方式可提供,一是提供源码,二是提供编译构建好的jar包供使用,这个时候需要讲构建好的包发布到公司的私服(公司maven仓库)&a…

分布式锁实现(mysql,以及redis)以及分布式的概念

道生一,一生二,二生三,三生万物 我旁边的一位老哥跟我说,你知道分布式是是用来干什么的嘛?一句话给我干懵了,我能隐含知道,大概是用来做分压处理的,并增加系统稳定性的。但是具体如…

C语言第四弹---printf和scanf详解

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 printf和scanf详解 1、printf和scanf详解介绍1.1 printf1.1.1 基本用法1.1.2 占位符1.1.3 占位符列举1.1.4 输出格式1.1.4.1 限定宽度1.1.4.2 总是显示正负号1.1…

第一篇【传奇开心果系列】WeUI开发原生微信小程序:汽车租赁小程序示例

传奇开心果博文系列目录 WeUI开发原生微信小程序示例系列博文目录博文目录一、项目目标二、编程思路三、初步实现汽车租赁微信小程序示例代码四、实现汽车租赁微信小程序的登录注册示例代码五、实现汽车租赁微信小程序的订单管理示例代码六、整合实现比较完整的汽车租赁微信小程…

css绘制下拉框头部三角(分实心/空心)

1:需求图: 手绘下拉框 带三角 2:网上查了一些例子,但都是实心的, 可参考,如图: (原链接: https://blog.csdn.net/qq_33463449/article/details/113375804) 3:简洁版的: a: 实心: <view class"angle"/>.angle{width:0;height:0;border-left: 10px solid t…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--机器人相关、强化学习

专属领域论文订阅 VX 扫吗关注{晓理紫|小李子}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 分类: 大语言模型LLM视觉模型VLM扩散模型视觉导航具身智能&#xff0c;机器人强化学习开放词汇&#xff0c;检测分割 [晓理紫…

K8s(七)四层代理Service

Service概述 Service在Kubernetes中提供了一种抽象的方式来公开应用程序的网络访问&#xff0c;并提供了负载均衡和服务发现等功能&#xff0c;使得应用程序在集群内外都能够可靠地进行访问。 每个Service都会自动关联一个对应的Endpoint。当创建一个Service时&#xff0c;Ku…

JS-日期对象

日期对象&#xff1a;用来表示时间的对象 作用&#xff1a;可以得到当前系统时间 实例化 在代码中发现了new关键字时&#xff0c;一般将这个操作称为实例化 创建一个时间对象并获取时间 1&#xff09;获得当前时间 const datenew Date() 2)获得指定时间 const datenew D…

Python项目——计算器(PySide6+Pyinstaller)

1、介绍 使用python编写一个计算器&#xff0c;可以实现基本的运算。【注】该项目最终还有一些细小的bug没有完善&#xff0c;例如符号可以一直输入。 2、实现 使用pyCharm创建一个新的项目。 2.1、设计UI 使用Qt designer设计一个UI界面&#xff0c;保存ui文件&#xff0…

基于docker,k8s 搭建服务(单体docker-compose编排)

1、 yum -y install gcc yum -y instacc gcc-c 2、安装yum 工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 3、设置docker镜像仓库 阿里云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.…

四种方法将 Docker Registry 迁移至 Harbor

Registry Docker Distribution Docker Distribution 是第一个是实现了打包、发布、存储和镜像分发的工具&#xff0c;起到 docker registry 的作用。&#xff08;目前 Distribution 已经捐赠给了 CNCF&#xff09;。其中 Docker Distribution 中的 spec 规范后来也就成为了 O…

Leetcode 2788. 按分隔符拆分字符串

我们可以先自己模拟一下分隔字符串的过程。如果只是简单的&#xff0c;遇到分隔符&#xff0c;将分隔符前后的子串加入结果的List&#xff0c;那么很显然并没有考虑到一个String中有多个字符串的情况。一种比较容易想到的方法是&#xff1a; 先对List中每个字符串遍历&#xf…

HBase节点故障的容错方案

HBase节点故障的容错方案 1. Master高可用1.1 选主和HA切换逻辑 2. RS高可用2.1 感知RS节点异常2.2 异常DN上的数据处理 4. 疑问和思考5. 参考文档 本文主要探讨hbase集群的高可用容错方案和容错能力的探讨。涉及Master和RS相关组件&#xff0c;在出现单机故障时相关的容错方案…

Node.js Stream.pipeline() Method

Why Stream.pipeline 通过流我们可以将一大块数据拆分为一小部分一点一点的流动起来&#xff0c;而无需一次性全部读入&#xff0c;在 Linux 下我们可以通过 | 符号实现&#xff0c;类似的在 Nodejs 的 Stream 模块中同样也为我们提供了 pipe() 方法来实现。 未使用 Stream p…

实时云渲染服务:流式传输 VR 和 AR 内容

想象一下无需专用的物理计算机&#xff0c;甚至无需实物连接&#xff0c;就能获得高质量的 AR/VR 体验是种什么样的体验&#xff1f; 过去&#xff0c;与 VR 交互需要专用的高端工作站&#xff0c;并且根据头显、壁挂式传感器和专用的物理空间。VR 中的复杂任务会突破传感器范…