客户端通过发送HTTP请求向服务器请求对资源的访问。你其实知道的HTTP请求由三部分组成,
分别是:请求行,消息报头,请求正文。首先我们先来看看关于请求行的部分,你其实知道的要结合最后的抓包例子一起看。
HTTP之请求行
格式:
Method Request-URI HTTP-Version CRLF
Method表示请求的方法,
Request-URI是一个统一资源标识符,标识了要请求的资源,
HTTP-Version表示请求的HTTP协议版本,
CRLF表示回车换行。
1. Method
POST 在Request-URI所标识的资源后附加新的数据
2. Request-URI
格式:
http表示要通过HTTP协议来定位网络资源。
host表示合法的Internet主机域名或IP地址(以点分十进制格式表示);
port用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接。
如果port是空,则使用缺省的端口80。当服务器的端口不是80的时候,需要显式指定端口号。
abs_path指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出。通常这个工作浏览器就帮我们完成了。
比如输入:www.guet.edu.cn ->浏览器自动转换成: http://www.guet.edu.cn/ -> 抓包时看见的: http:192.168.0.116:8080/index.jsp
3. HTTP-Version
表示服务器HTTP协议的版本
4. CRLF
回车符
一个GET获取文件的抓包情况,结合上面讲的,我们看看这个标红的部分:
GET /d/someone.dll HTTP/1.1
Host: www.someone.com
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
Accept-Encoding: deflate
Connection: Keep-Alive
(这里有一个回车换行)
HTTP/1.1 200 OK
Date: Fri, 30 Oct 2015 03:22:40 GMT
Server: kangle/2.9.6
Last-Modified: Fri, 30 Oct 2015 03:09:31 GMT
Content-Type: application/octet-stream
Content-Length: 710144
Age: 1
X-Via: 1.1 xxxz59:8107 (Cdn Cache Server V2.0), 1.1 zhenjiang60:6 (Cdn Cache Server V2.0)
Connection: keep-alive
(这里有一个回车换行)
MZP.....................@...............................................!..L.!..This program must be run under Win32............
(这里接着是传输的一个文件,很大,就不全部展示了)