计算机网络——HTTP

TCP/IP协议族

  1. TCP/IP的分层管理:TCP/IP协议族按层次分为:应用层、传输层、网络层、数据链路层。这样做能过避免由一个协议统筹时某个地方需要改变设计,就必须把所有部分全部替换掉。分层之后只需要替换变动的层即可。
    应用层:应用层决定了向用户提供应用服务时通信的活动。即通过应⽤进程间的交互来完成特定⽹络应⽤。(DNS服务,HTTP协议)
    传输层:提供处于网络连接中的两台计算机之间的数据传输服务。(TCP、UDP协议)
    网络层:用来处理在网络上流动的数据包,确保数据及时传送。(IP协议)
    链路层:数据链路层将⽹络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。

  2. TCP/IP 通信传输流
    在这里插入图片描述
    以上图为例,为了方便传输,客户端的传输层通过TCP协议将应用层处收到的数据报(HTTP请求报文)进行分割,并在各个报文上编号并转发给下一层。网络层则增加作为通信目的地MAC地址后转发给链路层。
    发送端层与层之间传输数据时,每层都会打上一个该层所属的首部信息,接收端则相反,每一层将对应的首部消去。

  3. IP、TCP、DNS
    (1)IP协议。IP协议的职责是搜索对方地址,一边中转一边传送,提供尽力而为的传输服务,解决通信双方寻址的问题。其中IP地址指明节点被分配到的地址,MAC地址是指网卡所属的固定地址。使互联起来的许多计算机网络能够进行通信。
    (2)TCP协议。TCP提供可靠的(三次握手)、面向连接的服务,将大块数据分割成报文段的形式进行管理,同时能确保数据最终送达对方。
    三次握手简单介绍:发送端首先发送一个带SYN标志的数据包给对象。接收端接受到后,回传一个带有SYN/ACK标志的数据包来确认信息,最后发送端再回传一个带ACK标志的数据包。代表握手结束。(下面有详解)
    (3)DNS解析服务。负责通过域名来解析得到IP地址,或者通过IP地址反查到域名。

  4. URI和URL
    URL(Uniform Resource Location) 是统⼀资源定位符,可以提供该资源的路径。即 URL 可以⽤来标识⼀个资源,⽽且还指明了如何 locate 这个资源。
    URI(Uniform Resource Identifier) 是统⼀资源标志符,可以唯⼀标识⼀个资源。

  5. 各种协议与 HTTP 协议的关系
    在这里插入图片描述

HTTP

  1. 什么是HTTP协议?
    HTTP协议是一种超文本传输协议,是无状态、无连接的,应用层上的协议,一种在计算机世界里专门在客户端和服务器端之间传输文字、图片、音频、视频等超文本数据的约定和规范。
    无连接的,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文前不需要建立HTTP连接。限制每次连接只处理一个请求,服务器处理完客户的请求并收到客户的应答后就断开连接。
    无状态的,对于事务处理没有记忆能力,服务器不知道客户端是什么状态,不会为了下一次连接而维护这次连接所传输的信息,为了保证服务器内存。也就是说,客户获得一张网页之后关闭浏览器,然后再一次启动浏览器,再登陆该网站,但是服务器并不知道客户关闭了一次浏览器。

  2. 请求报文和响应报文
    请求报文由请求头(请求方法,请求URI,协议版本)、首部、实体构成。
    在这里插入图片描述
    响应报文由响应头(协议版本、状态码、用以解释状态码的原因短语)、首部字段、实体构成
    在这里插入图片描述

  3. 无状态协议的优点是什么?
    使用HTTP协议,当有新的请求发送,就会产生新的响应,协议本身不保留之前的任何请求或响应报文信息。这能更快的处理大量事务,确保协议的可伸缩性
    缺点:不能保持状态,可以用Cookie解决

  4. HTTP方法

    1. GET获取资源。用来请求已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。
    2. POST传输内容实体。向指定资源提交数据进行处理请求(例如提交表单或者上传文件)
    3. PUT传输文件。要求在请 求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。
    4. HEAD获取报文首部。和GET方法一样,只是不返回报文的主体部分。只返回首部,用于确认URI的有效性和资源更新的日期时间。
    5. DELETE删除文件。按请求URI删除指定的资源。
    6. OPTIONS询问请求URI指定的资源支持的方法
    7. TRACE追踪路径,让Web服务器端将之前的请求通信环回给客户端。这样可以知道客户端发送出去的请求是如何被加工修改的。
    8. CONNECT要求用隧道协议连接代理。要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。加密的两种主要方式:SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议
    9. POST和GET的区别:POST和GET本质都是TCP连接,主要区别是GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。二者有自己的语义,不能随便混用。在网络环境好的情况下,二者的时间差基本可以无视;在网络环境差的情况下,两次TCP连接在验证数据包完整性上有很大优势。
  5. 持久连接、非持久连接、管线化

    1. 非持久连接(短连接):每进行一次HTTP通信就要断开一次TCP连接。会造成多次的TCP连接建立和断开的开销。
    2. 持久连接(长连接):建立一次TCP连接后能进行多次请求和响应的交互,只要任意一段没有明确提出断开连接就 保持TCP连接状态。减少TCP连接的重复建立和断开造成的额外开销,减轻服务器端的负载,提高Web页面的显示速度。
    3. 管线化:从前发送请求后需等待收到响应才能发送下一次请求。管线化技术 出现后,不用等待响应亦可直接发送下一个请求。比持久连接更快。
  6. Cookie:HTTP协议是无状态协议,用Cookie技术技术来通过在请求和响应报文中写入Cookie信息。Cookie会从服务器端发送的响应报文中的Set-Cookie首部字段信息来通知客户端保存,下次客户端往服务器发送请求时,客户端就能自动在请求报文中加上Cookie值。服务器端去检查并得到之前的状态信息。

  7. HTTP报文:请求报文和响应报文。分为报文首部和报文主体。
    在这里插入图片描述
    报文首部内容:

    1. 请求行。请求报文,包括用于请求的方法,请求URI和HTTP版本。
    2. 状态行。响应报文,表明响应结果的状态码,原因短语和HTTP版本。
    3. 首部字段。表示请求和响应的各种条件和属性的各类首部。一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部
  8. 内容协商:客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最合适的资源。
    服务器驱动协商:由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理。
    客户端驱动协商:由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。
    透明协商:是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进 行内容协商的一种方法。

  9. 状态码
    在这里插入图片描述

    1. 2XX:请求被正常处理了。
    • 200:从客户端发送来的请求在服务器端被正常处理
    • 204 NO CONTENT:服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分,也不允许返回任何实体的主体。
    • 206:客户端进行了范围请求,服务器成功执行了这部分的GET请求,响应报文中包含由Content-Range指定范围的实体内容。
    1. 3XX:浏览器需要执行某些特殊的处理来正确处理请求
    • 301:永久性重定向。表示请求的资源已被分配了新的URI,以后每次访问应该使用最新的URI。
    • 302:临时性重定向。表示请求的资源被临时分配了新的URI,希望用户本次能使用新的URI访问
    • 303:请求的资源存在另一个URI,应该使用GET方法定向获取请求的资源。
    • 304: 表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。
    • 307:临时重定向。含义与302相同但不会从 POST 变成 GET。
    1. 4XX客户端错误
    • 400:请求报文中存在语法错误
    • 401:发送的请求需要有通过HTTP认证的认证信息。
    • 403:表明对请求资源的访问被服务器拒绝了
    • 404:服务器上无法找到请求的资源
    1. 5XX服务器错误
    • 500:服务器端在执行请求时发生了错误。
    • 503:表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
      502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
      504 Gateway Time-out:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
  10. HTTP的缺点

  • 通信使用明文,内容可能会被窃听。
  • 不验证通信方的身份,有可能遭遇伪装。这导致任何人都能发起请求,发来的请求都会响应。可以查看对方的证书。
  • 无法证明报文的完整性,有可能已被篡改。接受到的内容可能有误,没有任何办法确认,发出的请求 / 响应和接收到的请 求 / 响应是前后相同的。可以使用MD5和SHA-1等散列值校验的方法。
  • 无状态,是优点也是缺点,无法支持需要连续多个步骤的事务操作。
  1. HTTPS:用 SSL建立安全通信线路之后,就可以在这条线路上进行 HTTP 通信了。与 SSL组合使用的 HTTP 被称为 HTTPS。
    HTTP直接和TCP通信,当使用SSL时,先和SSL通信,再由SSL和TCP通信。
    在采用 SSL后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护 这些功能。
    在这里插入图片描述

  2. 几种加密方式

  • 公开密钥加密:公开密钥加密使用一对非对称的密钥,一把私有密钥一把公开密钥,发送一方使用对方的公开密钥进行加密处理,对方接受到信息后使用自己的私有密钥进行解密。
  • 共享密钥加密:密钥只有⼀个,加密解密为同⼀个密码,且加解密速度快,但如果攻击者获得密钥,加密也就没有意义。
  • HTTPS采用混合加密机制:在交换密钥环节使用公开密钥加密方式,之后的建立通信交 换报文阶段则使用共享密钥加密方式。
  1. HTTPS比HTTP慢的原因:主要体现在SSL速度慢。1.除去和TCP连接、发送HTTP请求和响应等,还需要对SSL进行通信,增加整体通信量。2.SSL必须进行加密处理,在服务器和客户端进行加密解密运算,所以消耗更多的CPU和内存等资源,导致处理速度慢。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值