图解HTTP

Posted suitcases

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解HTTP相关的知识,希望对你有一定的参考价值。

一、网络基础TCP/IP

(一)TCP/IP协议族

1、TCP/IP是互联网相关的各类协议族的总称

2、HTTP属于TCP/IP协议族内部的一个子集

3、协议

计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)

(二)TCP/IP的分层管理

TCP/IP协议族按层次分别分为以下四层:应用层、传输层、网络层和数据链路层

1、应用层:决定了向用户提供应用服务时通信的活动。

FTP(文件传输协议)、DNS(域名系统) 、SMTP(简单邮件传输协议)、Telnet(Internet远程登陆服务标准协议)、HTTP(超文本传输协议)协议都在该层

2、传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

TCP(传输控制协议)和UDP(用户数据报协议)在该层

3、网络层(又名网络互连层):用来处理在网络上流动的数据包,规定/选择传输路线,把数据包传送到对方计算机

数据包是网络传输的最小数据单位。IP协议在该层

4、链路层(又名数据链路层,网络接口层):用来处理连接网络的硬件部分。

(三)TCP/IP通信传输流

技术分享图片

 

拿HTTP举例

首先,作为发送端的客户端在应用层(HTTP协议)发出一个想看某个web页面的HTTP请求。

接着,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

在网络层(IP协议) ,增加作为通信目的地的MAC地址后转发给链路层。

 

接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层

技术分享图片

 

 封装

发送端在层与层之间传输数据时,每经过一层时,必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时,会把对应的首部消去。这种把数据信息包装起来的做法称为封装

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

1、IP协议:负责传输,把各种数据包传送给对方。

IP间的通信依赖MAC地址。在网络上,通信的双方在同一局域网内的情况是很少的,通常是经过多台计算机和网络设备的中转才能连接到对方。

ARP:解析地址的协议,根据通信方的IP地址可以反查出对应的MAC地址

2、TCP协议:确保可靠性,提供可靠的字节流服务。

字节流服务:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

可靠的传输服务:能够把数据准确可靠地传给对方。

TCP的三次握手:握手过程中使用了TCP的标志-----SYN(使同步)和ACK(确认)

技术分享图片

发送端首先发送一个带SYN标志的数据包给对方

接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息

最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束

3、DNS服务:负责域名解析,提供域名到IP地址之间的解析服务

技术分享图片

(五)IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥的作用

技术分享图片

(六)URI和URL

URI:统一资源标识符

URL:统一资源定位符

URL是URI的子集

 

二、简单的HTTP协议

请求报文:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成

响应报文:基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

HTTP是一种不保存状态,即无状态协议,也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理

(一)HTTP方法

GET:获取资源(1.0、1.1)

POST:传输实体主体(1.0、1.1)

PUT:传输文件(1.0、1.1)

HEAD:获得报文首部(1.0、1.1)

DELETE:删除文件(1.0、1.1)

OPTIONS:询问支持的方法(1.1)

TRACE:追踪路径(1.1)

CONNECT:要求用隧道协议连接代理(1.1)

LINK:建立和资源之间的联系(1.0)

UNLINK:断开连接关系(1.0)

(二)持久连接和管线化

持久连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态

管线化:同时并行发送多个请求

(三)cookie

cookie技术:通过在请求和响应报文中写入cookie信息来控制客户端的状态

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

技术分享图片

 

 三、HTTP报文

(一)HTTP报文:用于HTTP协议交互的信息被称为HTTP报文

HTTP报文组成:报文首部和报文主体

(二)请求报文和响应报文的首部内容由以下数据组成

1、请求行

2、状态行

3、首部字段:包含表示请求和响应的各种条件和属性的各类首部

4、其他

 

四、HTTP状态码

以3位数字和原因短语组成

  类别 原因短语
1XX 信息性状态码 接收的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 需要进行附加操作以完成请求
4XX 客户端错误状态码 服务器无法处理请求
5XX 服务器错误状态码 服务器处理请求出错

 

 

 

 

 

1、200 OK:请求已正常处理

2、204 No Content:请求处理成功,但没有资源可返回

3、206 Partial Content:客服端进行了范围请求,服务端成功的执行了这部分的GET请求

 

4、301 Moved Permanently:永久性重定向

5、302 Found:临时性重定向

6、303 See Other:请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源:

7、304 Not Modified:资源已找到,但未符合条件请求

8、307 Temporary Redirect:临时重定向

 

9、400 Bad Request:请求报文中存在语法错误

10、401 Unauthorized:需认证/认证失败

11、403 Forbidden:不允许访问请求的资源

12、404 Not Found:服务器上没有请求的资源

 

13、500 Internal Server Error:内部资源出故障了,服务器在执行请求时发生了错误,也可能是Web应用存在的bug或某些临时的故障

14、503 Service Unavailable:服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求

 

五、HTTPS

HTTP+加密+认证+完整性保护=HTTPS

HTTPS是身披SSL外壳的HTTP

应用(HTTP)
TCP
IP
应用(HTTP)
SSL
TCP
IP

 

HTTP                                                                                                                                                                 HTTPS                  

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

 

六、Cookie管理Session会话

1、客户端发送请求到服务器

2、把用户的认证状态与Session ID绑定后记录在服务器端,向客户端返回响应时,会在首部字段Set-Cookie内写入Session ID

3、客户端保存有Session ID的Cookie,下次请求时,服务器端验证接收到的Session ID识别用户和其认证状态                                               

    

 

以上是关于图解HTTP的主要内容,如果未能解决你的问题,请参考以下文章

图解http完整版

图解HTTP pdf

图解HTTP

读《图解HTTP》

《图解HTTP》总结 - 思维导图版

图解HTTP—— HTTP协议