图解http相关笔记

当在浏览器中输入url,根据url从web服务器端获取文件资源等信息,从而显示web页面。在这里插入图片描述
通常使用的网络是在TCP/IP协议族的基础上运作的,而http属于其内部的一个子集。
TCP/IP协议按照层次分为:应用层,传输层,网络层,数据链路层

应用层

应用层决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了各类通用的应用服务,如FTP(文件传输协议),DNS(域名系统)等。HTTP协议也处于该层。

传输层

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议,TCP(传输控制协议)和UDP(用户数据报协议)。

网络层

网络层用来处理在网络上流动的数据包,数据包是网络传输最小的数据单位,该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传给对方。 与对方计算机之间通过多台计算机或者网络设备进行传输时,网络层所起得作用就是在众多的选项内选择一条传输路线。

数据链路层

用来处理连接网络的硬件部分。包括控制操作系统,硬件设备驱动,NIC(网络适配器-网卡),光纤等物理可见部分(包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

ICP/IP的通信传输流

在这里插入图片描述
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信,发送端从应用层往下走,接收端则往应用层上走。
例如,客户端在应用层发送一个http请求,为了传输方便,在传输层(TCP协议)把应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号以及端口号转发给网络层。在网络层(IP协议)增加作为通信目的地的MAC地址后转发给链路层。接收端的服务器在链路层接受到的数据按序往上层发送,一直到应用层,到此时才算真正接收到由客户端发送来的http请求。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装。

与HTTP 关系密切的协议: IP、TCP 和DNS

负责传输的IP协议

按层次分,IP网际协议位于网络层。作用是把各种数据包传送给对方,而把数据包传送给对方时,所需的两个重要条件是IP地址和MAC地址。IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和MAC 地址进行配对。IP 地址可变换,但MAC地址基本上不会更改。使用ARP 协议凭借MAC 地址进行通信。

确保可靠性的TCP 协议

按层次分,TCP 位于传输层,提供可靠的字节流服务。TCP 协议为了更容易传送大数据才把数据分割成以报文段为单位的数据包进行管理,而且TCP 协议能够确认数据最终是否送达到对方。
为了准确无误地将数据送达目标处,TCP 协议采用了***三次握手***
握手过程中使用了TCP 的标志—— SYN和ACK。
发送端首先发送一个带SYN 标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK 标志的数据包,代表“握手”结束。若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。
在这里插入图片描述

负责域名解析的DNS 服务

DNS服务是和HTTP 协议一样位于应用层的协议。它提供域名到IP 地址之间的解析服务
计算机既可以被赋予IP 地址,也可以被赋予主机名和域名。比如www.hackr.jp。DNS 协议提供通过域名查找IP 地址,或逆向从IP 地址反查域名的服务。

URI(统一资源标识符)URL(统一资源定位符)

URI 用字符串标识某一互联网资源,而URL 表示资源的地点(互联网上所处的位置)。可见URL 是URI 的子集。

简单的HTTP 协议

HTTP 协议和TCP/IP 协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。
请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。
HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
HTTP 是一种不保存状态,即无状态协议。自身不具备保存之前发送过的请求或响应的功能。为了实现期望的保持状态功能,于是引入了Cookie 技术。有了Cookie 再用HTTP 协议通信,就可以管理状态了。

请求报文的构成
请求报文的构成
响应报文的构成
在这里插入图片描述

告知服务器意图的HTTP 方法

GET :获取资源
GET 方法用来**请求访问已被URI 识别的资源。**指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回;如果是像CGI(通用网关接口)那样的程序,则返回经过执行后的输出结果。
在这里插入图片描述
POST:传输实体主体
POST 方法用来传输实体的主体。
虽然用GET 方法也可以传输实体的主体,但一般不用GET 方法进行传输,而是用POST 方法。虽说POST 的功能与GET 很相似,但POST 的主要目的并不是获取响应的主体内容。
在这里插入图片描述
PUT:传输文件
PUT 方法用来传输文件。就像FTP 协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI 指定的位置。由于PUT方法自身不带验证机制,任何人都可以去上传文件,存在安全性问题,因此一般的web网站不使用该方法。
在这里插入图片描述
HEAD:获得报文首部
HEAD 方法和GET 方法一样,只是不返回报文主体部分。用于确认URI 的有效性及资源更新的日期时间等。
在这里插入图片描述
DELETE:删除文件
DELETE 方法用来删除文件,是与PUT 相反的方法。DELETE 方法按请求URI 删除指定的资源。但是,HTTP/1.1 的DELETE 方法本身和PUT 方法一样不带验证机制,所以一般的Web 网站也不使用DELETE 方法。当配合Web 应用程序的验证机制,或遵守REST 标准时还是有可能会开放使用的。
在这里插入图片描述
OPTIONS:询问支持的方法
OPTIONS 方法用来查询针对请求URI 指定的资源支持的方法。
TRACE:追踪路径
TRACE 方法是让Web 服务器端将之前的请求通信环回给客户端的方法。
CONNECT:要求用隧道协议连接代理
CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP 通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容
加密后经网络隧道传输。
格式:CONNECT 代理服务器名:端口号 HTTP版本

使用方法下达命令

向请求URI 指定的资源发送请求报文时,采用称为方法的命令。
方法的作用在于,可以指定请求的资源按期望产生某种行为。方法中有GET、POST 和HEAD 等。
在这里插入图片描述

使用Cookie 的状态管理

Cookie 技术通过在请求和响应报文中写入Cookie 信息来控制客户端的状态。
Cookie 会根据从服务器端发送的响应报文内的一个叫做Set-Cookie 的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie 值后发送出去。
服务器端发现客户端发送过来的Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
在这里插入图片描述

HTTP 报文

用于HTTP 协议交互的信息被称为HTTP 报文。请求端(客户端)的HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。
HTTP 报文本身是由多行(用CR+LF 作换行符)数据构成的字符串文本。
HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。
在这里插入图片描述
请求行:包含用于请求的方法,请求URI 和HTTP 版本。
状态行:包含表明响应结果的状态码,原因短语和HTTP 版本。
首部字段:包含表示请求和响应的各种条件和属性的各类首部。
一般有4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。
其他:可能包含HTTP 的RFC 里未定义的首部(Cookie 等)

**报文是HTTP 通信中的基本单位,由8 位组字节流组成,通过HTTP 通信传输。
实体作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。
HTTP 报文的主体用于传输请求或响应的实体主体。
**

返回结果的HTTP 状态码

在这里插入图片描述

详解
200OK表示从客户端发来的请求在服务器端被正常处理了。
204No Content服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。也不允许返回任何实体的主体。当从浏览器发出请求处理后,返回204 ,则浏览器显示的页面不发生更新
206Partial Content该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET 请求。响应报文中包含由Content-Range 指定范围的实体内容。
301Moved Permanently永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。也就是说,如果已经把资源对应的URI保存为书签了,这时应该按Location 首部字段提示的URI 重新保存。
302Found临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI 访问 用户把URI 保存成书签,但不会像301 状态码出现时那样去更新书签,而是仍旧保留返回302 状态码的页面对应的URI。
303See Other该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。303 状态码和302 Found 状态码有着相同的功能,但303 状态码明确表示客户端应当采用GET 方法获取资源,这点与302 状态码有区别。
304Not Modified该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在3XX 类别中,但是和重定向没有关系
307Temporary Redirect临时重定向。该状态码与302 Found 有着相同的含义。尽管302 标准禁止POST 变换成GET,但实际使用时大家并不遵守。307 会遵照浏览器标准,不会从POST 变成GET。但是,对于处理响应时的行为,每种浏览器有可能出现不同的情况。
400Bad Request该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像200 OK 一样对待该状态码。
401Unauthorized该状态码表示发送的请求需要有通过HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。另外若之前已进行过1 次请求,则表示用户认证失败。返回含有401 的响应必须包含一个适用于被请求资源的WWWAuthenticate首部用以质询(challenge)用户信息。当浏览器初次接收到401 响应,会弹出认证用的对话窗口。
403Forbidden该状态码表明对请求资源的访问被服务器拒绝了。服务器端没有必要给出拒绝的详细理由,但如果想作说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到了。未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源IP 地址试图访问)等列举的情况都可能是发生403 的原因。
404Not Found该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
500Internal Server Error该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug 或某些临时的故障。
503Service Unavailable表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入RetryAfter 首部字段再返回给客户端。

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值