通常,http消息包括客户向服务器的请求消息和服务器向客户机的响应消息。
请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行)、消息报头(可选)、空行(CRLF的行)、消息正文(可选)组成。(注:CRLF表示回车和换行,除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
http消息报头又分为普通报头(通用报头)、请求报头、响应报头、实体报头。
每一个报头域都是由 名字+":"+空格+值 三部分组成的,消息报头域的名字大小写无关的。
1、普通报头(通用报头)
在普通报头中,有少数报头域用于所有的请求消息和响应消息,包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通通用头域,一般将会作为实体头域处理。
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache,no-store,max-age,max-stale,min-fresh,only-if-cached,响应消息中的指令包括public,private,no-cache,no-transform,must-revalidate,proxy-revalidate,max-age,含义如下:
pubic指定响应可被任何缓存区缓存。
private指示对于单个用户的真个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存。
no-store用于防止重要的消息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-fresh指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期间指定值之内的响应消息。
Date头域
Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如Date Thu, 15 Nov 2012 18:29:30 GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
Pragma头域
Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和 Cache- Control:no-cache相同。
Connection头域
允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,
通知服务器,在响应完成后,关闭连接
2、请求报头
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
Method Request-URI HTTP-Version(CRLF)
Method 表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、 TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。 HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。
Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP- Version表示支持的HTTP版本,例如为HTTP/1.1。CRLF表示换行回车符。
请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。
典型的请求消息:
GET /index.php HTTP/1.1 (CRLF)
Host: www. jianzhandiy.com (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flas
h,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,
*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Pragma: no-cache (CRLF)
Accept-Encoding:gzip,deflate (CRLF) (实体消息)
Cache-Control: no-cache (CRLF)
Referer: www. jianzhandiy.com (CRLF)
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0
(CRLF)
Range:bytes=554554- (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)
上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定 URL(www. jianzhandiy.com/index.php)下的文件。
未完...
分享到:
相关推荐
HTTP 协议学习总结 HTTP 协议是一种通信协议,允许将超文本标记语言 (HTML) 文档从 Web 服务器传送到 Web 浏览器。它工作在 TCP/IP 协议体系中的 TCP 协议上,客户机和服务器必须都支持 HTTP,才能在万维网上发送和...
总的来说,PDCP协议是移动通信系统中实现高效、安全数据传输的关键部分,其报头压缩和安全性功能对于提升网络性能和用户体验至关重要。在设计和优化无线通信网络时,对PDCP的理解和应用是至关重要的。
总结一下,在Linux环境下,理解并操作HTTP协议涉及到学习HTTP请求报头的结构和作用,掌握使用`curl`、`tcpdump`、`wireshark`等工具进行网络数据包分析和调试的方法,以及利用HTTP服务器日志来追踪和分析请求。...
1. **消息结构**:HB2100协议规定了消息的组成格式,包括报头、主体和尾部。报头包含了消息类型、源地址、目的地址等信息;主体则承载具体的数据内容;尾部用于校验数据的完整性和正确性。 2. **传输层**:协议采用...
【标题】: "协议大全——理解网络协议...总结来说,理解网络协议,特别是IP分片和UDP协议的工作原理,对于网络通信的深入学习至关重要。这些基础知识不仅适用于网络工程师,也是开发网络应用、设计通信系统的必备知识。
此外,还有ICMP(Internet控制消息协议)用于网络诊断,IGMP(Internet组管理协议)用于多播管理和RIP、OSPF等路由协议用于网络路径的发现和维护。 4. **网络访问层**:也称为数据链路层,包括以太网协议等,负责在...
3. 数据帧结构:DCON协议的数据帧包含报头、地址、数据和校验码等部分,确保了数据的准确传输。 4. 通信模式:DCON协议支持单播、广播和多播三种通信模式,满足不同应用场景的需求。 三、远程I/O模块设置 1. 模块...
### HTTP/1.1协议详解(基于RFC 2616) #### 协议概述 《rfc2616/HTTP/1.1中文版》详细介绍了...此外,《rfc2616/HTTP/1.1中文版》提供了详尽的技术文档,对于深入学习和研究HTTP/1.1协议具有重要的参考价值。
总结来说,了解网关的概念和其在网络中的作用,掌握socket-raw编程以自定义网络操作,理解IP-Helper在Windows下的网络管理功能,以及计算和验证IPv4报头的校验和,这些都是网络开发和诊断中必不可少的知识点。...
总结来说,ucip协议栈是一个简洁而实用的TCP/IP实现,它的开源特性为学习和研究提供了便利。通过阅读ucip1源代码,开发者不仅能掌握TCP/IP协议的工作原理,还能了解到如何在实际项目中实现和优化网络通信功能。
常见的做法是在每个消息前加上一个固定的报头,报头中包含消息长度等信息,这样接收方可以根据报头来正确拆分消息。 例如,一个简单的消息封装格式可能如下: 1. 消息长度(4字节):用来表示接下来的数据长度。 2...
### 网络协议分析实验报告知识点总结 #### 实验一:基于ICMP的MTU测量方法 **实验目的:** 1. **掌握ICMP协议:** ICMP(Internet Control Message Protocol),即互联网控制消息协议,是一种辅助IP协议的协议,...
第10章谈到在网络层报头中应出现的信息及几种协议报头的对比。第11章涉及自动配置和近邻发现,包括ARP和DHCP协议。第12章是一般的路由选择算法。第13章讨论最长前缀匹配问题,这在快速转发IP包时需要。第14章讨论...
第10章谈到在网络层报头中应出现的信息及几种协议报头的对比。第11章涉及自动配置和近邻发现,包括ARP和DHCP协议。第12章是一般的路由选择算法。第13章讨论最长前缀匹配问题,这在快速转发IP包时需要。第14章讨论...
- **学习目标**:掌握IP协议的技术细节,包括报头字段、选项等。 28. **第28章:无连接、尽力而为的服务(Connectionless, Best–Effort Delivery Service)** - **主要内容**:解释无连接、尽力而为的服务模式。...
对于学习和了解TCP协议而言,阅读相关的RFC文档是基础也是最权威的方式之一。例如,**RFC 793**就是关于TCP的正式规范文档,它详细描述了TCP的功能、工作原理及其实现细节。 #### 三、TCP协议的核心理念与设计哲学 ...
- `HEAD`: 请求获取由Request-URI所标识的资源的响应消息报头。 - `PUT`: 传输文件,要求服务器保存请求中发送的实体,并用Request-URI作为其唯一标识。 - `DELETE`: 删除由Request-URI所标识的资源。 #### HTTP...
#### HTTP协议请求方法与报头字段 - **HTTP协议请求方法**:主要包括GET、POST、PUT、DELETE等。GET用于获取资源;POST用于提交数据;PUT用于更新资源;DELETE用于删除资源。 - **HTTP请求头和响应头**:请求头包括...
### 知识点总结 #### 1. 以太网协议 - **基本构成**: - **目的 MAC**:6字节 - **源 MAC**:6字节 - **类型/长度**:2字节 ...通过这些知识点的学习,可以帮助学生更好地理解和掌握网络协议的工作原理和技术细节。