欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 前端技术 > html >内容正文

html

前端常见知识点一之http -尊龙游戏旗舰厅官网

发布时间:2024/10/12 html 26 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 前端常见知识点一之http 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

大半年没更新了,一直忙,公司也没有外网,这次找些材料整理复习巩固一下。资料来源于网络。

这里写目录标题

    • 一、http与https
      • 1.http和https基本概念
      • 2.http和https的区别
      • 3.https协议的工作原理
      • 4.http协议的优点
      • 5.http协议的缺点
      • 6.tcp三次握手、四次挥手
      • 7.tcp和udp的区别
      • 8. 网络七层模型
      • 9.http请求方式
      • 10. http2.0
      • 11. 400和401、403状态码
      • 12.http状态码
      • 13.http常用请求头
      • 14.强、协商缓存
      • 15.get和post的区别
      • 16.常见的http头部

一、http与https

1.http和https基本概念

http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器请求和应答的标准(tcp),用于从www服务器传输超文本到浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

https: 是以安全为目标的http通道,简单的讲是http的安全版,即http下加入ssl层,http的安全基础是ssl,因此加密的详细内容就需要ssl。

https协议的主要作用是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性

2.http和https的区别

http传输的数据都是未加密的,也是明文的,网景公司设置了ssl协议来对http协议传输的数据进行加密处理,简单来说https协议是有http和ssl协议构建的可进行加密传输和身份认证的网络协议,比http协议的安全性更高。 区别:

  • https协议需要ca证书,费用较高
  • http是超文本传输协议,信息时明文传输,https则是具有安全性的ssl加密传输协议。
  • 使用不同的链接方式,端口也不同分别是80和433
  • http的连接简单,是无状态的;
  • https协议是由ssl http协议构建的,可进行加密传输、身份认证的网络协议,比http协议安全
  • 3.https协议的工作原理

    客户端在使用https方式与web服务器通信时有以下几个步骤:

  • 客户使用https url 访问服务器,则要求web服务器建立ssl链接。
  • web服务器接收到客户端的请求之后,会将网站的证书(包含了公钥),返回给客户端
  • 客户端和web服务器开始协商ssl链接的安全等级,也就是加密等级
  • 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
  • web服务器通过自己的私钥解密出会话密钥。
  • web服务器通过会话密钥与客户端之间的通信。
  • 4.http协议的优点

    使用https协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
    https协议是由http ssl协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输的过程中不被窃取、改变,确保数据的完整性。
    https是现行框架下最安全的尊龙游戏旗舰厅官网的解决方案,虽然不是绝对的安全,但它大幅增加了中间人攻击的成本。
    比起同等http网站,采用https加密的网站在搜索中的排名将会更高。

    5.http协议的缺点

    https握手阶段比较费时,会使页面加载时间延长50%,增加费电。
    https缓存不如http高效,会增加数据开销。
    ssl证书也需要钱,功能越强大的证书费用更高。
    ssl证书需要绑定ip,不能在同ip上绑定多个域名,ipv4资源支持不了这种消耗。

    6.tcp三次握手、四次挥手

    三次握手的本质是确认通信双方收发数据的能力:
    首先,我让信使运输一份信件给对方,对方收到了,那么他就知道了我的发件能力和他的收件能力是可以的。
    于是他给我回信,我若收到了,我便知我的发件能力和他的收件能力是可以的,并且他的发件能力和我的收件能力是可以。
    然而此时他还不知道他的发件能力和我的收件能力到底可不可以,于是我最后回馈一次,他若收到了,他便清楚了他的发件能力和我的收件能力是可以的。

    • 第一次握手:客户端要向服务端发起连接请求,并发送报文;
    • 第二次握手:服务端收到客户端发过来的报文,并给客户端回复可以建立连接
    • 第三次握手:客户端收到服务端的回复后,知道了服务端同意了这次连接,然后客户端再回复一段报文给服务端建立连接;

    四次挥手的目的是关闭一个连接

    • 第一次挥手:当客户端的数据都传输完成后,客户端向服务端发出连接释放报文
    • 第二次挥手:服务端收到客户端发的报文后给客户端回复确认报文,此时服务端处于关闭等待状态,因为服务端可能还有数据没发完
    • 第三次挥手:服务端将最后数据(比如50个字节)发送完毕后就向客户端发出连接释放报文
    • 第四次挥手:客户端收到服务端发的fin报文后,向服务端发出确认报文,服务端收到确认报文释放连接。

    注意客户端发出确认报文后不是立马释放tcp连接,而是要经过2msl(最长报文段寿命的2倍时长)后才释放tcp连接。而服务端一旦收到客户端发出的确认报文就会立马释放tcp连接,所以服务端结束tcp连接的时间要比客户端早一些。

    想了解更清楚请移步该文章:《卧槽!牛皮了,头一次见有大佬把tcp/ip三次握手四次挥手解释的这么明白》

    7.tcp和udp的区别

  • tcp是面向连接的,udp是无连接的–即发送数据前不需要先建立链接;
  • tcp提供可靠的服务。也就是说,通过tcp连接传送的数据,无差错,不丢失,不重复,且按序到达;udp尽最大努力交付,即不保证可靠交付;
  • tcp面向字节流,实际上是tcp把数据看成一连串无结构的字节流;udp是面向报文的;
    udp没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如ip电话,实时视频会议等);
  • 每一条tcp连接只能是点到点的;udp支持一对一,一对多,多对一和多对多的交互通信;
  • tcp首部开销20字节;udp的首部开销小,只有8个字节;
  • tcp的逻辑通信信道是全双工的可靠信道,udp则是不可靠信道;
  • 那http和tcp之间又有什么样的关系?那我们先来了解一下网络七层模型(osi):

    8. 网络七层模型

    • 物理层:
      物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输;
      eg:rj45等将数据转化成0和1
    • 数据链路层:
      数据链路层通过物理网络链路􏰁供数据传输。不同的数据链路层定义了不同的网络和协 议特征,其中包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控;
      可以简单的理解为:规定了0和1的分包形式,确定了网络数据包的形式;
    • 网络层
      网络层负责在源和终点之间建立连接;
      可以理解为,此处需要确定计算机的位置,怎么确定?ipv4,ipv6!
    • 传输层
      传输层向高层􏰁提供可靠的端到端的网络数据流服务。
      可以理解为:每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(tcp/ip)协议;
    • 会话层
      会话层建立、管理和终止表示层与实体之间的通信会话;
      建立一个连接(自动的手机信息、自动的网络寻址);
    • 表示层:
      表示层􏰁供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;
      可以理解为:解决不同系统之间的通信,eg:linux下的qq和windows下的qq可以通信
    • 应用层:
      osi 的应用层协议包括文件的传输、访问及管理协议(ftam) ,以及文件虚拟终端协议(vip)和公用管理系统信息(cmip)等;
      规定数据的传输协议

    参考移步:《深入浅出-网络七层模型》

    9.http请求方式

    get,head,post,put,delete,connect,options,trace

    • get:请求指定页面信息,并返回实体主体;
    • head:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头;
    • post:向指定资源提交数据进行处理请求(如提交表单或者上传文件)。数据被包含在请求体中。post请求可能会导致新的资源的建立或已有资源的修改;
    • put:从客户端向服务器传送的数据取代指定资源内容;
    • delete:请求服务器删除指定的页面;
    • connect:http/1.1协议中预留给能够将连接改为管道方式的代理服务器;
    • options:允许客户端查看服务器的性能;
    • trace:回显服务器收到的请求,主要用于测试或诊断

    10. http2.0

    • 与http相比较,提升了访问速度,请求资源所需的时间更少
    • 内容安全,因为http2.0是基于https的,天然具有安全特性,通过http2.0的特性可以避免单纯使用https的性能下降
    • 二进制格式,http1.x的解析是基于文本的,http2.0将所有的信息分割为更小的消息和帧,并对他们采用二进制格式编码,基于二进制可以让协议有更多的扩展性,比如引入帧来传输数据和指令
    • 允许多路复用,多路复用允许同时通过单一的http2连接发送多重请求-响应信息,另外多路复用中也支持了流的优先级,允许客户端告诉服务器那些内容是更优先级的资源
    • 改善了在http1.1中,浏览器在同一时间,针对同一域名下的请求有一定数量限制(连接数量),超过限制会被阻塞
    • 首部压缩
    • 服务器推送

    11. 400和401、403状态码

    • 400状态码:请求无效
      产生原因:
  • 前端提交数据的字段名称和字段类型与后台的实体没有保持一致;
  • 前端提交到后台的数据应该是字符串类型,但是前端没有将对象转化为字符串;
    • 401状态码:当前请求需要用户验证
    • 403状态码:服务已经得到请求、但是拒绝执行

    12.http状态码

    • 100 contion 继续。客户端应该继续其请求;
    • 101 switchingprotocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到http的新版本协议;
    • 200 ok 请求成功。一般用于get和post请求;
    • 201 created 已创建。成功请求并创建了新的资源;
    • 202 accepted 已接受。已接受请求,但未处理完成;
    • 203 non-authoritative information 非授权信息。请求成功但返回的meta信息不在原始服务器,而是一个副本
    • 204 no content 无内容。服务器处理成功,但未能返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档;
    • 205 reset content 重置内容。服务器处理成功,用户终端(浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域;
    • 206 partial content 部分内容。服务器成功处理部分get请求;
    • 300 multiple choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(浏览器)选择;
    • 301 moved permanently 永久移动。请求的资源已被永久的移动到新的url,返回信息会包括新的url,浏览器会自动定向到新的url。今后任何新的请求都应使用新的url代替。
    • 302 found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有的url;
    • 303 see other 查看其它地址。与301类似。使用get和post请求查看;
    • 304 not modified 未修改。所有请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源;
    • 305 use proxy 使用代理。所请求的资源必须经过代理访问;
    • 306 unused 已经被废弃的http状态码
    • 307 tenporary redirect 临时重定向。与302类似。使用get请求重定向;
    • 400 bad request 客户端请求的语法错误,服务器无法理解;
    • 401 unauthorized 请求要求用户的身份认证;
    • 402 payment required 保留,将来使用;
    • 403 forbidden 服务器理解请求客户端的请求,但是拒绝执行次请求
    • 404 not found 服务器无法根据客户端的请求找到网页。通过此代码,网站设计人员可设置“您所其你去的资源无法找到”的个性页面
    • 405 method not allowed 客户端请求中的方法被禁止
    • 406 not acceptable 服务器无法根据客户端请求的内容特性完成请求;
    • 407 poxy authentication required 请求要求代理的身份认证,与401类似但请求者应当使用代理进行授权;
    • 408 reuest time-out 服务器等待客户端发送的请求时间过长,超时
    • 409 conflict 服务器完成客户端的put请求是可能返回此代码,服务器处理请求时发生了冲突
    • 410 gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置;
    • 411 length required 服务器无法处理客户端发送的不带content-length的请求信息;
    • 412 precondition failed 客户端请求信息的先决条件错误;
    • 413 request entity too large 由于请求的实体过大,服务器无法处理,因此拒绝请求,为防止客服端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个retry-after的响应信息;
    • 414 request-url too large 请求的url过长,服务器无法处理;
    • 415 unsupported media type 服务器无法处理请求附带的媒体格式;
    • 416 request range not satisfiable 客户端请求的范围无效;
    • 417 expectation failed服务器无法满足expect的请求头信息;
    • 500 internal server error 服务器内部错误,无法完成请求
    • 501 not implemented 服务齐全不支持请求的功能,无法完成请求;
    • 502 bad gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器收到了一个无效的响应
    • 503 service unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可能包含在服务器的retry-after头信息中;
    • 504 gateway time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
    • 505 http version not supported 服务器不支持请求的http协议版本,无法完成处理

    13.http常用请求头

    协议头说明
    accept可接受的响应内容类型(content-type)
    accept-charset可接受的字符集
    accept-encoding可接受的相应内容的编码方式
    accept-language可接受的响应内容语言列表
    accept-datetime可接受的按照时间来表示的响应内容版本
    authorization用于表示http协议中需要认证资源的认证信息
    cache-control用来指定当前的请求/回复中的,是否使用缓存机制
    cennection客户端(浏览器)优先使用的连接类型
    cookie由之前服务器通过set-cookie设置的一个http协议cookie
    content-length以8进制表示的请求体的长度
    content-md5请求体的内容的二进制md5散列值(数字签名),以base64编码的结果
    content-type请求体的mime类型(用于post和put请求中)
    date发送该消息的日期和时间
    expect表示客户端要求服务器做出特定的行为
    from发起此请求的用户的邮件地址
    host表示 服务器的域名以及服务器所监听的端口号。如果所请求的端口是对应的服务器的标准端口(80),则端口号可以省略
    if-match仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要用于像put这样的方法中,仅当从用户上次更新某个资源后,该资源未被修改的情况下,才更新该资源
    if-modified-since允许在应对的资源未被修改的情况下返回304未修改
    if-none-match允许在应对的内容未被修改的情况下返回304未修改(304 not modified),参考超文本传输协议的实体标记
    if-range如果该实体未被修改过,则返回所缺少的那一个或多个部分,否则,返回整个新的实体
    if-unmodified-since仅当该实体自某个特定时间以来未被修改的情况下,才发送回应
    max-forwards限制该消息可被代理及网关转发的次数
    origin发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个access-control-allow-origin的消息头,表示访问控制所允许的来源)
    pragma与具体的实现相关。这些字段可能在请求/回应链中的任何时候产生
    porxy-authorization用于向代理进行认证的认证信息
    range表示请求某个实体的一部分,字节偏移以0开始
    referer表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面,referere其实是referrer这个单词,但是rfc制作标准时给拼错了,后来也就将错就错使用referer了
    te浏览器预期接受的传输时的编码方式:可使用回应协议头transfer-encoding中的值用来表示浏览器希望在最后一个大小为0的块之后还要接收到一些额外的字段
    user-agent浏览器的身份标识字符串
    upgrade要求服务器升级到一个高版本协议
    via告诉服务器,这个请求是由哪些代理发出的
    waming一个一般性的警告,表示在实体内容体中可能存在错误

    14.强、协商缓存

    缓存分为两种:强缓存和协商缓存,根据响应的header内容来决定。
    因为服务器上的资源不是一直固定不变的,大多数情况下它会更新,这个时候如果我们还访问本地缓存,那个对用户来说,那就是相当于,用户看到的还是旧的资源;所以我们希望服务器上的资源更新了,浏览器就请求新的资源,没有更新就使用本地的缓存,以最大程度的减少因网络请求而产生的资源浪费。


    浏览器请求流程:

    • 浏览器会获取该缓存资源的 header 中的信息,根据 response header 中的 expires 和 cache-control 来判断是否命中强缓存,如果命中则直接从缓存中获取资源。
    • 如果没有命中强缓存,浏览器就会发送请求到服务,服务器会通过 last-modified或者 etag来判断是否命中协商缓存。
    • 如果命中,则服务器返回 304 状态码,并且不会返回资源内容,浏览器会直接从缓存获取;
    • 否则服务器最终会返回资源的实际内容,并更新 header 中的相关缓存字段。

    强缓存相关字段有expires,cache-control后者优先级更高
    协商缓存相关字段:last-modified/if-modified-since,etag/if-none-match

    15.get和post的区别

    • get参数通过url传递,post放在request body中;
    • get请求在url中的参数有长度限制,post没有;
    • get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息;
    • get请求只能进行url编码,而post支持多种方式编码;
    • get请求参数会被完整保留在浏览器的历史记录中,而post中的参数不会被保留;
    • get和post本质上即使tcp链接,并无差别,但是由于http的规定和 浏览器/服务器的限制,导致他们在应用过程中体现出一些不同;
    • get产生一个tcp数据包,post产生两个tcp数据包

    16.常见的http头部

    可以将http头部分为:通用首部、请求首部、响应首部、实体首部

    • 通用首部:表示一些通用信息,比如date表示报文创建时间
    • 请求首部:请求报文中独有的,如cookie,和缓存相关的如if-modified-since
    • 响应首部:响应报文中独有的,如set-cookie,和重定向相关的location
    • 实体首部:用来描述实体部分,如allow用来描述可执行的请求方法,caontent-type描述主体类型,content-encoding描述主体的编码方式

    总结

    以上是尊龙游戏旗舰厅官网为你收集整理的前端常见知识点一之http的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图