HTTP协议

简介: HTTP协议

HTTP
概念
1、HTTP是Hypertext Transfer Protocol超文本传输协议,是一种应用协议
2、HTTP协议是无状态的
3、HTTP事务是指一次request-response的完整过程
4、HTTP协议是构建在TCP协议之后的,传输过程中的分组、重排与防止丢包是TCP进行控制,减少了HTTP协议的复杂性
5、HTTP是端到端,一次HTTP可以明确区分客户端和服务端,发送请求的为客户端
6、HTTP当前的协议版本为HTTP/1.1,HTTP/2.0还没有普及
7、HTTP最新版的RFChttp://www.ietf.org/rfc/rfc2616.txt
8、WEB组件包括:代理、缓存、网关、隧道、Agent代理
协议详解
协议栈位置
链路层头 IP头 TCP头 HTTP
报文封装
报文首部 请求行
状态行 请求的方法 请求URL HTTP协议版本
HTTP协议版本 响应结构 原因短语

请求首部字段

响应首部字段 请求首部:
1、请求报文特有的,如Accept: /

响应首部:
1、响应报文特有的,如Server: Tiki-Hut/1.0

通用首部字段    1、客户端和服务器都可以使用的通用首部,提供一些非常有用的通用功能

2、比如, Date 首部就是一个通用首部,每一端都可以用它来说明构建报文的时间和日期

实体首部字段    1、实体首部指的是用于应对实体主体部分的首部,用实体首部来说明实体主体部分的数据类型如Content-Type: text/html; charset=iso-latin-1
扩展首部字段    扩展首部是非标准的首部,由应用程序开发者创建,但还未添加到已批准的HTTP 规范中去。即使不知道这些扩展首部的含义,HTTP 程序也要接受它们并对其进行转发

空白行 CTRL + LF
报文主体

资源与URL
URI 1、URI 是一类更通用的资源标识符
2、由两个主要的子集 URL 和 URN 构成
URL 1、URL 实际上是URI的一个子集
2、URL 分以下三部分:URL 方案(schema)、服务器的位置(www.joes-hardware.com)、资源路径(/index.html)
3、格式:
://:@:/;?#
4、如图

URN
URL编码

方法、状态码、首部
方法
方法 协议版本 说明
GET 1.0、1.1 获取资源
POST 1.0、1.1 1、POST 方法起初是用来向服务器输入数据的
2、向服务器发送表单数据
HEAD 1.0、1.1 HEAD 方法与 GET 方法的行为很类似,但服务器在响应中只返回首部。不会返回实体的主体部分
1、在不获取资源的情况下了解资源的情况(比如,判断其类型)
2、通过查看响应中的状态码,看看某个对象是否存在
3、通过查看首部,测试资源是否被修改了
PUT 1.0、1.1 与 GET 从服务器读取文档相反,PUT 方法会向服务器写入文档
如:/PUT.txt ddddd 将ddddd写入到文档中
DELETE 1.0、1.1 请服务器删除请求 URL 所指定的资源
TRACE 1.1 客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的 HTTP 请求。TRACE 方法允许客户端在最终将请求发送给服务器时,看看它变成了什么样子
OPTIONS 1.1 OPTIONS 方法请求 Web 服务器告知其支持的各种功能

CONNECT 1.1
LINK 1.0
UNLINK 1.0
状态码
仅记录在 RFC2616 上的 HTTP 状态码就达 40 种,若再加上WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)(RFC4918、5842) 和附加 HTTP 状态码(RFC6585)等扩展,数量就达 60 余种。别看种类繁多,实际上经常使用的大概只有 14 种

类别    原因短语

1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错
常用的状态码
状态码
200 OK
表示从客户端发来的请求在服务器端被正常处理了
204 No Content
该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体
206 Partial Content
该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容
301 Moved Permanently
永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后
应使用资源现在所指的 URI
如果已经把资源对应的 URI保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存
302 Found
临时性重定向
该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问
303 See Other
该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源
304 Not Modified
该状态码表示客户端发送附带条件的请求时,服务器端允许请求访
问资源,但未满足条件的情况
304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系
307 Temporary Redirect
临时重定向
尽管 302 标准禁止 POST 变换成 GET,但实际使用时大家并不遵守。307 会遵照浏览器标准,不会从 POST 变成 GET。但是,对于处理响应时的行为,每种浏览器有可能出现不同的情况
400 Bad Request
该状态码表示请求报文中存在语法错误
401 Unauthorized
该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息
403 Forbidden
该状态码表明对请求资源的访问被服务器拒绝了
404 Not Found
该状态码表明服务器上无法找到请求的资源
500 Internal Server Error
该状态码表明服务器端在执行请求时发生了错误
503 Service Unavailable
该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

首部
1、HTTP1.1中RFC中定义了47个首部,详见RFC2616
通用首部字段
Cache-Control 控制缓存的行为
Connection 逐跳首部、连接的管理
Date 创建报文的日期时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知
请求首部字段
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
Authorization Web认证信息
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记(ETag)
If-Modified-Since 比较资源的更新时间
If-None-Match 比较实体标记(与 If-Match 相反)
If-Range 资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
Referer 对请求中 URI 的原始获取方
TE 传输编码的优先级
User-Agent HTTP 客户端程序的信息
响应首部字段
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
ETag 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息
实体首部字段
Allow 资源可支持的HTTP方法
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小(单位:字节)
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified 资源的最后修改日期时间
一次HTTP请求

HTTP身份认证
BASIC
DIGEST
详见
http://blog.csdn.net/andrewpj/article/details/45727853
http://www.ietf.org/rfc/rfc2617.txt
SSL客户端
FORM表单
最常见的认证方式

参考
http://www.ietf.org/rfc/rfc2616.txt

相关文章
|
1月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
4月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
619 68
|
3月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
514 2
|
3月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
143 0
|
3月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
179 0
|
3月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
279 0
|
4月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
535 1
|
3月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
441 0
|
5月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
202 17

热门文章

最新文章