【总结——HTTP协议】

简介:

一、HTTP协议简介

    什么是HTTP?全称是HyperText Transfer Protocal,即:超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用最多的协议,目前版本是1.1。

    Http是应用层协议,当你上网浏览网页的时候,浏览器和Web服务器之间就会通过HTTP在Internet上进行数据的发送和接收。

   Http是一个基于请求/响应模式的、无状态的协议。即我们通常所说的Request/Response。

                             image

二、HTTP URL

HTTP URL格式如下:

    http://host[“:”port][abs_path]

其中HTTP表示要通过HTTP协议来定位网络资源。host表示合法的Internet主机域名或IP地址。port用于指定一个端口号,拥有被请求资源服务器主机监听该端口的TCP连接,如果port是空的,或者没有给出,则使用默认的缺省值80.abs_path表示指定请求资源的URI(Uniform Resource Identifier,统一资源标示符),如果URL中没有给出abs_path,那么当他作为请求URI时,必须以”/”的形式给出。通常,这个工作就由浏览器帮助我们完成了。当我们在浏览器中输入www.cnblogs.com时,然后回车,浏览器会自动将我你们输入的地址转换成http://www.cnblogs.com/,注意最后的斜杠“/”。不信你试试。

三、HTTP请求

    客户端通过发送HTTP请求向服务器请求对资源的访问,HTTP由三部分组成,分别是:请求行,消息报头,请求正文。

请求行:

    请求行以一个方法符号开头,后面跟着请求URI和协议的版本,以CRLF作为结尾。请求行以空格分隔,除了作为CRLF外,不允许出现单独的CR或者LF字符。具体格式如下:

    Method Request-URI HTTP-Version CRLF

Method表示请求方法,Request-URI是一个统一资源标示符,表示了要请求的资源,HTTP-Version表示请求的HTTP协议的版本号,CRLF表示回车换行。例如:

    GET /form.html HTTP/1.1 (CRLF)

                               image

GET方法用于获取由Request-URI所表示的资源信息,常见形式是:

    GET Request-URI HTTP/1.1

我们通过在浏览器地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是GET方法向服务器获取资源信息。

POST方法用于向目的服务器发出请求,要求服务器接收附在请求后面的数据。POST方法在表单提交的时候用的较多。

一个采用POST方法提交的例子:

POST /form.html HTTP/1.1 (CRLF)

Accept:image/gif,application/json(…省略很多) (CRLF)

Host:www.abc.com (CRLF)

Content-Length:22 (CRLF)

Connection:Keep-Alive (CRLF)

Cache-Control:no-cache (CRLF)

(CRLF) //注意:空行上部是消息报头,下方是请求正文,这个空行是必须的。

user=zhangsan&password=123456

HEAD方法与GET方法几乎一样,他们的区别在于HEAD方法只是请求消息报头,而不是完整的内容。对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源的内容,就可以得到Request-URI所表示的资源信息。这个方法常被用来测试超链接的有效性,是否可以访问,以及最近是否更新。

四、HTTP响应

    在接受和处理消息后,服务器会返回一个HTTP响应消息。与HTTP请求类似,HTTP响应也由三个部分组成,分别是:状态行,消息报头,响应正文。

状态行:

    状态行由协议版本、数字形式的状态码、及响应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF(回车换行)之外,不允许出现CR或LF字符。格式如下:

    HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version表示服务器HTTP协议的版本,Status-Code表示服务器发回的响应代码,具体可参见这篇文章,【你知道HHTP各种状态代表什么意思吗?】.Reason-Phrase表示状态码的文本描述,CRLF表示回车换行。例如:

    HTTP/1.1 200 OK (CRLF)

                 image

五、请求报头格式

 

                       image

 

1、通用报头

Cache-Control:客户端希望服务端如何缓存自己的请求数据,如"Cache-Control: no-cache","Cache-Control: max-age=0"; 
Connection:客户端是否希望与服务端之间保持长连接,如"Connection: close", "Connection: keep-alive"; 
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段; 
Pragma:包含了客户端一些特殊请求信息,如 "Pragma: no-cache" 客户端希望代理或应用服务器不应缓存与该请求相关的结果数据。

2、请求报头

Accept:表明客户同端可接受的请求回应的媒体类型范围列表。星号“*”用于按范围将类型分组,用“*/*”指示可接受全部类型;用“type/*”指示可接受 type类型的所有子类型,如“ Accept: image/gif, image/jpeg, */*”; 
Accept-Charset:客户端所能识别的字符集编码格式,格式:“Accept-Charset: 字符集1[:权重],字符集2[:权重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”; 
Accept-Language:客户端所能识别的语言,格式:“Accept-Language: 语言1[:权重],语言2[:权重]”,如:” Accept-Language: zh, en;q=0.7”; 
Host:客户请求的主机域名或主机IP,格式:“Host:域名或IP[:端口号]”,如:“Host:www.cnblogs.com:80“,请求行中若有HTTP/1.1则必须有该请求头; 
User-Agent:表明用户所使用的浏览器标识,主要用于统计的目的; 
Referer:指明该请求是从哪个关联连接而来; 
Accept-Encoding:客户端所能识别的编码压缩格式,如:“Accept-Encoding: gzip, deflate”; 
If-Modified-Since:该字段与客户端缓存相关,客户端所访问的URL自该指定日期以来在服务端是否被修改过,如果修改过则服务端返回新的修改后 的信息,如果未修改过则服务器返回304表明此请求所指URL未曾修改过,如:“If-Modified-Since: Fri, 2 Sep 2011 19:37:36 GMT”; 
If-None-Match:该字段与客户端缓存相关,客户端发送URL请求的同时发送该字段及标识,如 果服务端的标识与客户端的标识一致,则返回304表明此URL未修改过,如果不一致则服务端返回完整的数据信息,如:“If-None-Match: 0f0a893aad8c61:253, 0f0a893aad8c61:252, 0f0a893aad8c61:251”; 
Cookie:为扩展字段,存储于客户端,向同一域名的服务端发送属于该域的cookie,如:“Cookie: MailUserName=whouse”;

3、实体报头

Content-Encoding:客户端所能识别的编码压缩格式,如:“Content-Encoding: gzip, deflate”; 
Content-Length:客户端以POST方法上传数据时数据体部分的内容长度,如:“ Content-Length: 24”; 
Content-Type:客户端发送的数据体的内容类型,如:“Content-Type:application/x-www-form-urlencoded”为以普通的POST方法发送的数据;“Content-Type: multipart/form-data;

六、响应报头格式

1、通用报头

Cache- Control:服务端要求中间代理及客户端如何缓存自己响应的数据,如“Cache-Control: no-cache”,如:“Cache-Control: private” 不希望被缓存,“Cache-Control: public” 可以被缓存; 
Connection:服务端是否希望与客户端之间保持长连接,如“Connection: close”, “Connection: keep-alive”; 
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段; 
Pragma:包含了服务端一些特殊响应信息,如 “Pragma: no-cache” 服务端希望代理或客户端不应缓存结果数据; 
Transfer-Encoding:服务端向客户端传输数据所采用的传输模式(仅在HTTP1.1中出现),如:“Transfer-Encoding: chunked”,注:该字段的优先级要高于“Content-Length” 字段的优先级;

2、请求报头

Accept-Ranges:表明服务端接收的数据单位,如:“Accept-Ranges: bytes”, ; 
Location:服务端向客户端返回此信息以使客户端进行重定向,如:“Location: http://www.abc.com”; 
Server:服务端返回的用于标识自己的一些信息,如:“ Server: Microsoft-IIS/6.0”; 
ETag:服务端返回的响应数据的标识字段,客户端可根据此字段的值向服务器发送某URL是否更新的信息

3、实体报头

Content-Encoding:服务端所响应数据的编码格式,如:“Content-Encoding: gzip”; 
Content-Length:服务端所返回数据的数据体部分的内容长度,如:“ Content-Length: 24”; 
Content-Type:服务端所返回的数据体的内容类型,如:“Content-Type: text/html; charset=gb2312” ; 
Set-Cookie:服务端返回给客户端的cookie数据,如:“ Set-Cookie: ASP.NET_SessionId=icnh2ku2dqlmkciyobgvzl55; path=/”

 

七、telnet工具的使用

1、使用微软自带的telnet工具可以连接远程主机的指定端口,(在windows server 2008中需要手动添加这个服务后才能使用)。
2、telnet可以连接到指定端口的主机。例如:
 cmd --> telnet www.cnblogs.com 80  就会成功连接到cnblgos的主机
接着输入HEAD请求:
HEAD /index.html HTTP/1.1
Host: www.cnblogs.com
有可能因为回显功能显示不出来,可以用set localecho命令设置回显功能。最后会输出响应信息。

 

目录
相关文章
|
4月前
|
数据采集 数据可视化 API
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
164 4
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
|
2月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
416 68
|
24天前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
281 2
|
2月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
220 1
|
1月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
333 0
|
2月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
269 0
|
3月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
120 17
|
2月前
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
263 0
|
3月前
HTTP协议探究:常用方法一网打尽
总的来说,HTTP协议的命令犹如一把钥匙,解锁了互联网世界的大门。它是规则,也是工具,了解了它,就等于掌握了互联网的一把通行证。我们每天都在用,也常常无视它,但是只有深刻理解了它,才能更好地运用它。如此,我们的互联网世界旅程就会变得更加顺畅,更加有趣。
104 14

热门文章

最新文章