HTML|计算机网络相关

1.三次握手

第一次握手:客户端首先向服务端发送请求。
第二次握手:服务端在接收到客户端发送的请求之后,需要告诉客户端已收到请求。
第三次握手:客户端在接收到服务端发送的请求和确认信息之后,同样需要告诉服务端已收到信息。
当三次握手都成功的时候,我们发现此时客户端发送的信息服务端能够收到并且服务端发送的信息客户端也能收到,通信双方连接成功

2.为什么需要四次挥手

为了释放连接
第一次挥手:客户端向服务端发送断开连接的请求,告诉服务端我这边不需要再请求你的数据了。
第二次挥手:服务端在接收到客户端发送的断开请求后,需告诉客户端已收到请求。
第三次挥手:当服务端数据传输完毕之后,向客户端发起断开连接的请求。
第四次挥手:客户端接收到服务发送的断开连接请求后,需告诉服务端已收到信息,作出应答。
问题补充:第二次挥手的时候。为什么不能像握手的时候一样,服务端对客户端断开连接的请求做确认应答的时候,同时向客户端发送断开连接的请求。这样“三次挥手”不就可以了么?
实际的网络中,服务端在接收到客户端断开连接的请求的时候,此时服务端可能还有数据没有传输完毕,不能立即向客户端发送断开连接的请求!所以当客户端主动发起断开请求的时候,服务器先回应一个确认,等所有数据传输完毕后再发送服务器断开的请求。

3.HTTP事务流程(工作原理)(6)
在这里插入图片描述
基本流程如下:
(1)域名解析。
(2)客户端与服务器建立TCP连接(3次握手)。
(3)连接成功后,客户端发送请求给服务器。
(4)服务器端响应请求(服务器发送完响应信息后,就会断开TCP连接,因此HTTP是无状态的),浏览器得到HTML代码。
(5)浏览器解析HTML代码,并请求HTML代码中的资源。
(6)浏览器对页面进行渲染并呈现给用户。

4.HTTPS的工作原理(9)

在这里插入图片描述
1、客户端发起 HTTPS 请求
用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。
2、传送证书
采用 HTTPS 协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥,公钥就像是一把锁头,私钥是一个钥匙,只有这个私钥才能打开公钥,其他人打不开自然就看不到里边的内容了
服务器将证书发送给客户端,这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
3、客户端解析证书
这部分工作是有客户端的TLS-安全传输层协议来完成的,首先会验证公钥是否有效,如果发现异常,则会弹出一个警告框,提示证书存在问题。
4、生成随机密钥
如果证书没有问题,那么就生成一个随机对称密钥
5、加密对称密钥
公钥对该对称密钥进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
6、传送加密信息
将加密后的对称密钥发送给服务器,目的就是让服务端得到对称密钥,以后客户端和服务端的通信就可以通过这个对称密钥进行加密解密了。
7、服务端解密信息
服务端用私钥解密后,得到了客户端传过来的对称密钥,然后把内容通过该密钥进行对称加密,所谓对称加密就是,将信息和对称密钥通过某种算法混合在一起,这样除非知道对称密钥,不然无法获取内容,而正好客户端和服务端都知道这个密钥,所以只要加密算法够彪悍,对称密钥够复杂,数据就够安全。
8、传输加密后的信息
这部分信息是服务器用对称密钥加密后的信息,可以在客户端被还原
9、客户端解密信息
客户端用之前生成的对称密钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

5.Http与https(超文本传输安全协议)的区别

http特点

  • 无状态:协议对客户端没有状态存储,比如访问一个网站需要反复进行登录操作
  • 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接
  • 通信使用明文、请求和响应不会对通信方进行确认无法保护数据的完整性,网络完全性极差

https特点

  • HTTPS协议通信时,报文通过ssl套接字加密解密传输(HTTP下加入SSL层,HTTPS的安全基础是SSL)
  • 主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份(数字证书)以及数据完整性保护
    非对称加密:用公钥和私钥来加解密
    对称加密:加密解密都用同一套秘钥

区别

1、HTTPS协议需要到CA(Certificate Authority,数字证书认证机构)申请证书,一般免费证书较少,因而需要一定费用。
2、HTTP是超文本传输协议,信息是明文传输,数据是不加密的,而HTTPS则是具有安全性的SSL加密传输协议
3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,HTTP是80端口,HTTPS是443端口
4、HTTP的连接很简单,是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

6.HTTPS的优缺点

优点:
(1)使用HTTPS协议可认证用户和服务器确保数据发送到正确的客户机和服务器
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本
缺点:
(1)HTTPS协议握手阶段比较费时费电(加载时间延长近50%);
(2)HTTPS连接缓存不如HTTP高效;
(3)SSL证书需要钱
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

7.Http的状态码
  • 1XX:为信息性状态码,表示接收的请求正在处理

  • 2XX:为成功状态码,表示请求正常处理完毕

  • 3XX:为重定向状态码,表示需要进行附加操作以完成请求。

  • 4XX:为客户端错误状态码,表示服务器无法处理请求

  • 5XX:为服务端错误状态码,服务器处理请求出错

    常见的状态码例如:

    • 200 OK 请求成功被处理,且返回了数据。
    • 204 No Content 请求成功被处理,但是没有数据资源要返回
    • 304 Not Modified 在下面说到http对比缓存的时候会聊到,表示资源没有被修改,可以使用缓存。
    • 400 Bad Request 表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。
    • 401 Unauthorized 未认证需要认证后在重新请求。
    • 403 Forbidden 表明对请求资源的访问被服务器拒绝了。
    • 404 Not Found 表明服务器上无法找到请求的资源
    • 500 Internal Server Error 表明服务器端在执行请求时发生了错误
    • 503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护,现在无法 处理请求。
8.代理服务器的功能

1.负载均衡。客户端的请求会先到达代理服务器,代理服务器可以拿到这个请求之后,可以通过特定的算法分发给不同的源服务器,让各台源服务器的负载尽量平均。
2.保障安全。利用心跳机制监控后台的服务器,一旦发现故障机就将其踢出集群。并且对于上下行的数据进行过滤,对非法 IP 限流。
3.缓存代理。将内容缓存到代理服务器,使得客户端可以直接从代理服务器获得而不用到源服务器那里。

9.TCP 和 UDP 的区别(4)

1.TCP 是面向连接的,udp 是无连接的即发送数据前不需要先建立链接
2.TCP 提供可靠的服务。也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付。 并且因为 tcp 可靠, 面向连接,不会丢失数据因此适合大数据量的交换。
3.TCP 是面向字节流,UDP 面向报文,并且网络出现拥塞不会使得发送速率降低(因 此会出现丢包,对实时的应用比如 IP 电话和视频会议等)。
4.TCP 只能是 1 对 1 的,UDP 支持 1 对 1,1 对多
5.TCP 的首部较大为 20 字节,而 UDP 只有 8 字节
6.TCP 是面向连接的可靠性传输,而 UDP 是不可靠的。

10.WebSocket 的实现和应用

websocket是一种全新的协议,不属于http无状态协议,协议名为"ws"
WebSocket 是 HTML5 中的协议,支持持久连续(是一个持久化的协议),它允许服务端向客户端传递信息,实现浏览器和客户端双向通信。。
ws头部多了标志属性:
Upgrade: websocket
Connection: Upgrade

websocket与http的关系

相同点:

  1. 都是基于tcp的,都是可靠性传输协议
  2. 都是应用层协议

不同点:

  1. WebSocket是双向通信协议,HTTP是单向的
  2. WebSocket是需要浏览器和服务器握手进行建立连接的
  3. 而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接

联系:

  1. WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的
11.websocket工作流程

首先,客户端发起http请求,经过3次握手后,建立起TCP连接;http请求里存放WebSocket支持的版本号等信息,如Upgrade、Connection、WebSocket-Version等;
然后,服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据
最后,客户端收到连接成功的消息后,开始借助于TCP传输信道进行全双工通信

12.说说 HTTP1.0/1.1/2.0 的区别

HTTP1.0:
浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接
HTTP1.1:
引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用
在同一个TCP连接里面,客户端可以同时发送多个请求
虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的,服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着
新增了一些请求方法
新增了一些请求头和响应头
HTTP2.0:
采用二进制格式而非文本格式
完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行
使用报头压缩,降低开销
服务器推送

13.从输入 URL到回车后发生的行为如下 6

​ URL解析
​ DNS 查询–根据域名找到对应的目标服务器IP地址
​ TCP 连接
​ HTTP 请求
​ 响应请求
​ 页面渲染

14.fetch 发送 2 次请求的原因

fetch 发送 post 请求的时候,总是发送 2 次,第一次状态码是 204,第二次才成功?
原因很简单,因为你用 fetch 的 post 请求的时候,导致 fetch 第一次发送了一个 Options请求(带预检(Preflighted)的跨域请求、预请求),询问服务器是否支持修改的请求头,如果服务器支持,则在第二次中发送真正的请求

*15.Cookie、sessionStorage、localStorage 的区别 (4个)

共同点:都是保存在浏览器端、且同源的

区别
1、cookie 数据始终在同源的 http 请求中携带,即 cookie 在浏览器和服务器间来回传递,而 sessionStorage 和 localStorage 数据仅在本地保 存。cookie 数据还有路径(path)的概念,可以限制 cookie 只属于某个路径下 。
2、存储大小限制也不同cookie 数据不能超过 4K,同时因为每次 http 请求都会携带 cookie、所以 cookie 只适合保存很小的数据,如会话标识。sessionStorage 和 localStorage 虽然也有存储大小的限制,但比 cookie 大得多,可以达到 5M 或更大
3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的 cookie 过期 时间之前有效,即使窗口关闭或浏览器关闭 。
4、作用域不同,sessionStorage 不在不同的浏览器窗口中共享,即使是同一个页面; localstorage 在所有同源窗口中都是共享的;cookie 也是在所有同源窗口中都是共享的 。
5、web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者 。
6、web Storage 的 api 接口使用更方便 。

16.HTML 语义化标签的理解

语义化标签就是具有语义的标签,它可以清晰地告诉我们它是干什么的。
比如 nav 表示导航条,类似的还有 article、header、footer、section、h、p、hgroup 等等标签。

17.html5 增加了哪些新特性

1.新增了一些语义化标签: header, nav,main,article,section,aside,footer,hgroup
2.新增表单的输入类型:number,date,tel,search,email
3.新增表单属性;placeholder,required,multiple,autofocus,autocomplete,min,max
4.新增本地存储:localStorage 和 sessionScorage
5.新增媒体标签audio音频 video:视频
6.双向通信websocket
7.拖曳以及释放的api-7:dragstart:拖动开始,drag:拖动中,dragend:拖动结束;dragenter:拖动着进入,dragover:拖动着悬停在上方,dragleave:拖动着离开,drop: 在目标上方释放

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

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

相关文章

【数模】主成分分析PCA

主成分分析(Principal Component Analysis,PCA),是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。使用场景:一般…

PAT(Advanced Level) Practice(with python)——1023 Have Fun with Numbers

Code N int(input()) D_N 2*N # print(Yes)if len(str(D_N))>len(str(N)):print(No) else:for s in str(D_N):if s not in str(N) or str(D_N).count(s)!str(N).count(s):print("No")breakelse:print(Yes) print(D_N)

【C语言】预处理详解

本文目录 1 预定义符号 2 #define 2.1 #define 定义标识符 2.2 #define 定义宏 2.3 #define 替换规则 2.4 #和## 2.5 带副作用的宏参数 2.6 宏和函数对比 2.7 命名约定 3 #undef 4 命令行定义 5 条件编译 6 文件包含 6.1 头文件被包含的方式 6.2 嵌套文件包含 1 预定义符号 __…

uniapp根据高度表格合并

没有发现比较友好的能够合并表格单元格插件就自己简单写了一个,暂时格式比较固定 一、效果如下 二、UI视图+逻辑代码 <template><view><uni-card :is-shadow="false" is-full

自然语言处理学习笔记(六)————字典树

目录 1.字典树 &#xff08;1&#xff09;为什么引入字典树 &#xff08;2&#xff09;字典树定义 &#xff08;3&#xff09;字典树的节点实现 &#xff08;4&#xff09;字典树的增删改查 DFA&#xff08;确定有穷自动机&#xff09; &#xff08;5&#xff09;优化 1.…

BigDecimal使用总结

BigDecimal Java在java.math包中提供的API类BigDecimal&#xff0c;用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。 在实际应用中&#xff0c;需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算&a…

Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】

题目 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,3,2]输出&#xff1a;[2,3,1] 限制&#xff1a; 0 < 链表长度 < 10000 解题思路 1.题目要求我们从尾到头反过…

Python爬虫在电商数据挖掘中的应用

作为一名长期扎根在爬虫行业的专业的技术员&#xff0c;我今天要和大家分享一些有关Python爬虫在电商数据挖掘中的应用与案例分析。在如今数字化的时代&#xff0c;电商数据蕴含着丰富的信息&#xff0c;通过使用爬虫技术&#xff0c;我们可以轻松获取电商网站上的产品信息、用…

401 · 排序矩阵中的从小到大第k个数

链接&#xff1a;LintCode 炼码 - ChatGPT&#xff01;更高效的学习体验&#xff01; 题解&#xff1a; 九章算法 - 帮助更多程序员找到好工作&#xff0c;硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧 class Solution { public:/*** param matrix: a matrix of intege…

mysql再docker中运行,直接在实体机上运行mysql命令初始化数据库数据

背景 项目上我们使用docker安装mysql&#xff0c;项目启动的时候需要利用sql语句初始化数据。 直接在实体上是识别不到mysql命令的。 实现方式 实现方式1&#xff1a;在docker容器内部执行sql语句 1. 将sql文件上传到容器内 docker cp /root/1.sql d5:/home/ 说明&#…

【小梦C嘎嘎——启航篇】类和对象(中篇)

【小梦C嘎嘎——启航篇】类和对象&#xff08;中篇&#xff09;&#x1f60e; 前言&#x1f64c;类的6个默认成员函数构造函数析构函数拷贝构造函数拷贝构造函数的特性有哪些&#xff1f;既然编译器可以自动生成一个拷贝构造函数&#xff0c;为什么我们还要自己设计实现呢&…

外卖点餐小程序开源源码——支持扫码点餐

一套支持店内扫码点餐、外卖点餐配送于一体的餐饮系统&#xff0c;支持商家创建优惠券&#xff0c;支持商家自定义打印机功能&#xff0c;支持商家财务管理&#xff0c;支持商户菜品管理&#xff0c;支持菜品自定义分类&#xff0c;支持商家招募骑手入驻功能。系统基于thinkphp…

【Axure动态面板】利用动态面板实现树形菜单的制作

利用动态面板&#xff0c;简单制作高保真的树形菜单。 一、先看效果 https://1poppu.axshare.com 二、实现思路 1、菜单无非就是收缩和展开&#xff0c;动态面板有个非常好的属性&#xff1a;fit to content&#xff0c;这个属性的含义是&#xff1a;面板的大小可以根据内容多少…

HCIP的OSPF综合实验

一、实验要求 1、R4为ISP&#xff0c;其上只能配置IP地址: R4与其他所有直连设备间使用公有 2、R3—R5/6/7为MGRE环境&#xff0c;R3为中心站点 3、整个OSPF环境IP地址为172.16.0.0/16 4、所有设备均可访问R4的环回 5、减少LSA的更新量&#xff0c;加快收敛&#xff0c;保障更…

《HeadFirst设计模式(第二版)》第七章代码——外观模式

代码文件目录&#xff1a; Subsystem: Amplifier package Chapter7_AdapterAndFacadePattern.FacadePattern.Subsystem;/*** Author 竹心* Date 2023/8/8**///扬声器 public class Amplifier {int volume 0;//音量public void on(){System.out.println("The amplifier …

NodeJs执行Linux脚本

&#xff08;我们活着不能与草木同腐&#xff0c;不能醉生梦死&#xff0c;枉度人生&#xff0c;要有所作为。——方志敏&#xff09; 为什么需要使用NodeJs执行Linux脚本 linux的sh脚本命令编写复杂&#xff0c;在不熟悉linux交互式命令的情况下&#xff0c;使用高级编程语言…

【论文研读】MARLlib 的架构分析

【论文研读】MARLlib: A Scalable Multi-agent Reinforcement Learning Library 和尚念经 多智能体强化学习框架研究。 多智能体强化学习库。 多智能体强化学习算法实现。 多智能体强化学习环境的统一化&#xff0c;标准化。 多智能体强化学习算法解析。 多智能体强化学习 算法…

Android 面试重点之Framework (Handler篇)

近期在网上看到不少Android 开发分享的面试经验&#xff0c;我发现基本每个面经中多多少少都有Framework 底层原理的影子。它也是Android 开发中最重要的一个部分&#xff0c;面试官一般会通过 Framework底层中的一些逻辑原理由浅入深进行提问&#xff0c;来评估应聘者的真实水…

小型双轮差速底盘机器人实现红外跟随功能

1. 功能说明 本文示例将实现R023样机小型双轮差速底盘跟随人移动的功能。在小型双轮差速底盘前方按下图所示安装3个 近红外传感器&#xff0c;制作一个红外线发射源&#xff0c;实现当红外发射源在机器人的检测范围内任意放置或移动时&#xff0c;机器人能追踪该发射源。 2. 电…