HTTP协议相关概念(二)

简介: HTTP协议相关概念(二)

三、HTTP 协议概述


3.1  HTTP的概念

一次完整的http协议请求过程示意图


图片来源


一次完整的HTTP请求过程 - 知乎



       客户端输入域名,经域名解析成IP地址,在与服务端建立数据传输之前,要先建立TCP连接(三次握手),然后向服务端发送http请求,包括请求的方法、内容相应的版本号,服务端收到后进行相应,包括状态码,也就是请求的结果,完成一次客户端的http请求后断开TCP连接(四次挥手),此时服务器处于TCP连接的time_wait状态


3.2 HTTP版本

HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。


(1)HTTP/0.9:已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。


(2)HTTP/1.0:这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。


(3)HTTP/1.1:引入持续连接,即TCP连接默认不关闭,可以被多个请求复用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。


(每次http连接都要进行三次握手,产生很多报文,造成资源浪费)


(4)HTTP/2.0:完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求和回应,而且不用按照顺序一一对应。引入头部信息压缩机制。支持服务端推送,允许服务器未经过请求,主动向客户端发送资源(例如打开浏览器时的广告)。


3.3 HTTP 方法

HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法, 告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST。

HTTP

描述

GET

对服务器资源获取的简单请求

PUT

向服务器提交数据,以修改数据

DELETE

删除服务器上的某些资源

POST

用于发送包含用户提交数据的请求

HEAD

请求页面的首部,获取资源的元信息

1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

2.与GE不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。

3.POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。

4.DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作


3.3.1 GET和POST比较

GET方法:从指定的服务器上获得数据

GET请求能被缓存


GET请求会保存在浏览器的浏览纪录里


GET请求有长度的限制


主要用于获取数据


查询的字符串会显示在URL后缀中,不安全,比如http://www.test.com/a.php?Id=123


POST方法:提交数据给指定服务器处理

POST请求不能被缓存


POST请求不会保存在浏览器的浏览纪录里


POST请求没有长度限制查询的字符串不会显示在URL中,比较安全


3.4 HTTP状态码

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码,当浏览器请求某一URL时,服务器根据处理情况返回相应的处理状态。


通常正常的状态码为2xx,3xx(如200),如果出现异常会返回4xx,5xx(如404)。

状态码首位

已定义 范围

分类

1xxx

100-101

信息提示

2xxx

200-206

成功

3xxx

300-305

重定向

4xxx

400-415

客户端错误

5xxx

500-505

服务器错误

3.5 常见状态码

状态码

功能描述

200

一切正常

301

永久重定向

302

临时重定向

401

用户名或密码错误

403

禁止访问(客户端IP地址被拒绝)

404

文件不存在

414

请求URI头部过长

500

服务器内部错误

502

无效网关

503

当前服务不可用

504

网关请求超时


四、HTTP 请求流程分析


用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。


4.1 请求报文

请求行:请求行由请求方法、URL以及协议版本三部分组成。


请求头:请求头为请求报文添加了一些附加信息,由“名/值“对组成,每行一对,名和值之间使用冒号分隔。


空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。


请求体:请求体是请求提交的参数,GET方法已经在URL中指明了参数,所以提交时没有数据。osT方法提交的参数在请求体中。


4.1.1 常用的请求头

请求头 

描述

HOST 

接受请求的服务器地址,可以是IP:端口号,也可以是域名

User-Agent

发送请求的应用程序名称

Connection

指定与连接相关的属性,如connection:Keep-Alive

Accept-Charset  

通知服务端可以发送的编码格式

Accept-Encoding  

通知服务端可以发送的数据压缩格式

Accept-Language

 通知服务端可以发送的语言

4.2 响应报文

状态行:状态行由协议版本,状态码,状态码描述三部分组成。


响应头:响应头与请求头部类似,为响应报文添加了一些附加信息。


空行:响应头部的最后会有一个空行,表示响应头部结束。


响应体:服务器返回的相应HTML数据,浏览器对其解析后显示页面。


4.2.1 常见响应头

响应头  

描述

Server   

服务器应用程序软件的名称和版本

Content-Type 

 响应正文的类型(是图片还是二进制字符串)

Content-Length  

响应正文长度

Content-Charset

 响应正文使用的编码

Content-Encoding 

 响应正文使用的数据压缩格式

Content-Language

响应正文使用的语言


总结


htm1语法

<html>
<head></head>
<body></body>
</html>
目录
相关文章
|
12天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
38 13
|
4天前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
9天前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
9天前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
9天前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
11天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
13天前
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
13天前
|
安全 前端开发 JavaScript
利用HTTP协议进行文件上传和下载的常见方法
【10月更文挑战第25天】可以利用HTTP协议方便地实现文件的上传和下载功能,满足不同应用场景下的需求。在实际应用中,还可以根据具体的业务需求和安全要求,对文件上传和下载的过程进行进一步的优化和安全处理。
|
13天前
|
网络协议 API 数据格式
HTTP 和 TCP 协议的主要区别
【10月更文挑战第25天】HTTP 和 TCP 在网络通信中扮演着不同的角色,各自具有独特的功能和特点,它们相互配合,共同为实现网络应用的各种需求提供了基础支持。
|
22天前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
47 5

热门文章

最新文章