HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
1.http请求(Method Request-URI HTTP-Version CRLF)
请求行
GET/form.html http/1.1(crlf)
POST
HEAD(消息报头)
POST /reg.jsp http/1.1(crlf)
消息报头
(crlf)回车换行
form数据
典型的请求消息:
GET http://download.microtool.de:80/somedata.exe
Host:download.microtool.de
Accept:*/*
Pragma:no-cache
Cache-Control:no-cache
Referer:http://download.microtool.de/
User-Agent:Mozilla/4.04[en](Win95;I;Nav)
Range:bytes=554554-
2.http响应(HTTP-Version Status-Code Reason-Phrase CRLF)
状态行,消息报头,(ctlf)响应正文
典型的响应消息:
HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:"a030f020ac7c01:1e9f"
Content-length:39725426
Content-range:bytes554554-40279979/40279980
HTTP/1.1 200 OK (CRLF)
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
3.消息报头()
分类:普通报头、请求报头,响应报头,实体报头
名字+“:”+空格+值
普通报头:Cache-Control:no-cache
Pragma:no-cache
response.setHeader
请求报头:accept:image/gif text/html
Accept-Charset:gb2312
Accept-Encoding:gzip
Accept-Language:zh_cn
Authorization(401)
Host:www.sunxin.org:8080
User-Agent
响应报头:Location:http://www.sunxin.org
Server:Apache-Coy
www-authenticate:basic realm="basic auth test!"
实体报头:Content-Encoding:gzip
Content-Language:da
Content-Length:
Content-Type:text/html;charset=iso-8859-1
last-Modified:
Expires:过期时间日期
response.setDateHeader("Expires",0);浏览器不要缓存页面。
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
HTTP报文共有两种通用类型:请求报文,响应报文。
(1)请求报文:包括请求行、首部,以及有时出现的主体。如图
请求行:包括请求类型、空格、URL、空格以及HTTP版本。
请求类型
(方法)
|
空
格
|
URL
|
空
格
|
HTTP版本
|
请求类型:此字段定义了几种不同方法的报文。
常用的几种方法:
1:GET:客户要从服务器读取文档时使用。
2:HEAD:当客户想得到关于文档的某些信息但并不是要这个文档时使用。
3:POST:当客户要给服务器提供某些信息时使用。
4:PUT:当客户将新的或更换的文档存储在服务器上时使用。
5:PATCH:和PUT相似,只不过这个请求只包含必须在现有文件中出现的差异清单。
6:COPY:当需要将文件复制到另一个位置时使用。
7:MOVE:当需要将文件移到另一个位置时使用。
8:DELETE:当需要将服务器上的文档移走时使用。
9:LINK:当需要创建从一个文档到另一个位置的链接时使用。
10:UNLINK:当需要删除由LINK方法创建的链接时使用。
11:OPTION:当客户向服务器询问到一些可用的选项时使用。
统一资源定位符(URL):4要素:方法、主机、端口、路径
方法:用来读取文档的协议。
主机:放置信息的计算机。计算机常使用”WWW”开始的别名。
端口:服务器的端口号,可选。
路径:放置文件的路径名。
(2)响应报文:包括状态行、首部、有时包括主体。
状态行:包括HTTP版本、空格、状态码、空格、状态短语。
状态码:
100系列:提供信息的;
200系列:指示成功的请求;
300系列:把客户重定向到另一个URL;
400系列:指示客户端差错;
500系列:指示服务器端差错。
状态短语:用来解释状态码。
OPTIONS
|
允许客户端查看服务器的性能
|
TRACE
|
用于测试,允许客户端查看消息的回收过程
|
|
|
分享到:
相关推荐
本文将深入浅出地解析HTTP协议中的请求(Request)和响应(Response)的结构以及它们在网页浏览过程中的作用。 1. **请求(Request)**: - **请求行**:由方法、URL和HTTP版本号组成,例如`GET /path HTTP/1.1`。...
### OBEX通信协议浅析 #### 一、引言 随着智能设备的普及和技术的发展,设备之间的信息交换变得越来越重要。OBEX(Object Exchange)协议作为一种简洁、灵活的通信协议,广泛应用于各种智能设备间的通信场景。OBEX...
在本文中,我们将深入浅出地探讨 Netty 实现的 HTTP 协议栈,并通过实践来理解其工作原理。 首先,我们要了解 HTTP 协议的基本概念。HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,它定义了客户端和...
HTTP协议建立在TCP/IP协议之上,是应用层协议。TCP/IP协议中的TCP负责提供可靠的数据传输,而UDP则更注重速度,但不保证数据的顺序或完整性。在B/S(浏览器/服务器)架构的网站中,由于大量的并发用户,如果每个连接...
HTTP协议是互联网上应用最为广泛的一种网络协议,它是基于TCP/IP通信协议来传输数据的。在Web应用中,用户通过浏览器向服务器发送HTTP请求,获取网页或其他资源。在这个过程中,HTTP头部起着至关重要的作用,它包含...
WAP协议虽然有其历史地位和价值,但随着智能手机的普及和技术进步,现代移动设备往往不再直接使用WAP协议,而是直接支持标准的互联网协议,如HTTP和HTTPS。然而,WAP协议对于理解无线网络通信和移动互联网的早期发展...
HTTP/1.1 200 OK是HTTP协议的响应状态行,表示服务器成功地返回了请求的资源。其中,HTTP/1.1是协议版本号,200 OK是状态码,表示请求成功。 2. Server: nginx/0.6.39 Server字段表示服务器软件的名称和版本号。...
HTTP协议 HTTP请求: HTTP响应: 会话与会话状态: Cookie Session Cookie和Session的区别 HTTP协议 HTTP请求: Post /test.php HTTP/1.1 //请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的...
在WebSocket出现之前,Web应用依赖于HTTP协议进行客户端和服务器之间的通信,但HTTP协议的设计并不适合频繁的双向交互,因为它是基于请求-响应模型的。 WebSocket协议的设计原则之一是兼容现有的网络基础设施,因此...
Servlet可以扩展Web服务器的功能,处理HTTP协议以及其他网络协议。Servlet生命周期包括加载、实例化、初始化、服务、销毁几个阶段。 - JSP:JSP是Servlet的简化版本,它允许开发者在HTML页面中直接插入Java代码,以...
例如,`http://www.example.com/page.html`就是一个URL,它不仅指出了资源的位置,还指明了如何通过HTTP协议来访问该资源。 - **URN**:URN是一种URI,用于唯一地标识资源,但并不提供资源的具体位置信息。例如,`...
### Data URI浅析 #### Data URI简介 Data URI是一种特殊的数据表示形式,它允许将小文件内嵌到超文本标记语言(HTML)、级联样式表(CSS)等文档中,而无需额外的HTTP请求。这种方式简化了资源加载过程,提高了...
### TR-069浅析 #### 一、概述 TR-069,全称为“CPE广域网络管理协议”,是由DSL论坛提出的一种针对家庭网络环境下的用户设备进行远程管理和配置的标准协议。该协议定义了一套统一的管理框架,使得运营商能够有效...
Java Web程序中的客户端和服务器端交互是Web开发的基础,它涉及到网络通信协议、HTTP协议以及Java编程中的Socket编程。在本文中,我们将深入探讨这两个主要方面:协议和HTTP报文接口,以及它们如何在Java Web应用...
- **HTTP协议**:用于数据传输,实现与Web服务器的信息交换。 - **HTML语言**:作为Web服务器数据的主要描述语言,搜索引擎需要解析HTML文件,提取有用的数据。 - **分词技术**:针对文本内容进行关键词提取,对于...
- 更低的入门门槛:WebService使用HTTP协议,无需专门的ORB(对象请求代理),降低了开发复杂性。 - 更好的互联网整合:WebService天然适合Web环境,便于Web应用的集成。 4. WebService的应用实例 WebService已...
《Android调用Web应用浅析》这篇文章主要探讨了Android如何访问和交互不同类型的Web应用程序,如JSP和ASP.NET,以及如何处理XML和JSON数据。文章深入研究了两种主要的网络访问方式:通过URL和使用HTTP客户端...
在获取数据的过程中,我们需要遵循“robots.txt”协议,尊重网站的爬虫规则,并确保爬虫行为的合法性和道德性。同时,要考虑到反爬策略,如IP限制、验证码、User-Agent变化等,适时使用代理IP、设置延时、随机User-...