自学Java Web方向全纪录之http协议简介

首先https://tools.ietf.org/html/rfc2616,这是一个HPPTFRC文档,可以说是官方文档,可参考此文档(另外附一个中文的http://tools.jb51.net/table/http_header)。以下以发表博文页面的请求头和响应头举例说明:


Request Header

GET /u/2604257/admin/edit-blog?draft=348698 HTTP/1.1

GET为请求方式;常用的请求方式有POST,GET还有五种请求方式不常用,一般默认为GET方式,如果想修改则需要从表单的提交方式修改method

  1. <form action="/1.html" method="post"></form>
  2. <a href="/2.html?name=aaaa">...</a>
  3. 此两者的区别主要在于数据的传递上,GET请求可以在URL地址后以?的形式带上交给服务器的数据,多个数据之间以&号分割。但是数据容量不能超过1k(此方法可以用于超链接,带数据给下一个连接)。POST请求方式是在请求体中向服务器上传数据,其特点为上传的数据容量没有限制。

/u/2604257/admin/edit-blog?draft=348698 为请求资源名称

HTTP/1.1为HTTP协议版本号


    

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/    webp,*/*;q=0.8    用于告诉服务器,客户机支持的数据类型

如果Accept:*/*,这么写也就是说告诉服务器什么类型都支持。


Accept-Encoding: gzip, deflate, sdch     告诉服务器,客户机支持的数据压缩格式

Accept-Language: zh-CN,zh;q=0.8     告诉服务器,客户机的语言环境

Host: my.oschina.net    告诉服务器,想访问的主机名

Referer: http://my.oschina.net/u/2604257/admin/drafts    告诉服务器是从那个地址链接过来的。即先前网页的地址,当前请求网页紧随其后,即来路(用于防盗链)

If-Modified-Since    如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)     告诉服务器,客户机软件环境

Cookie:    HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。




Response Headers

HTTP/1.1 200 OK    此为说明HPPT版本号为1.1  状态为200 OK

    1.0版和1.1版主要的区别为:

        1.HTTP/1.0协议使用非持久连接,即在非持久连接下,一个tcp链接只传输一个Web对象。

        2.HTTP/1.1默认使用持久链接(然而HTTP/1.1协议的客户机和服务器可以配置使用非持久链接)。在持久连接下,不必为每个Web对象的传送建立新的连接,一个连接中可以传输对个对象。

状态为200 OK:留一个状态码链接http://tools.jb51.net/table/http_status_code

Server: nginx    web服务器软件名称

话说到这我突然有个疑问,这里的nginx和Tomcat有什么区别,搜索了一下:

从应用方面
tomcat一般是做动态解析才会用得到,支持jsp的解析,需要配置JDK支持
nginx,则一般是做静态,本身不具备动态解析功能,需要配置其他插件或通过其他软件协同才具备动态功能,比如php,tomcat,或者proxypass到win2008的iis服务器做ASP的动态链接等,但nginx在静态上的功能非常强大,也可做访问控制,而且可以做成各种协议负载服务器,包括流媒体的也可以做,具体得去官方网站去看;
在性能方面
如果再不做系统调优的情况下
tomcat一般支持并发并不高100个差不多了
nginx在静态方面支持并发轻松达几万
 
你可以简单的说,两者应用领域不一样,tomcat是做java语言的动态解析,而nginx则是一款功能强大的负载软件,配合各种插件可以实现各种功能


Connection: keep-alive    表示客户端与服务器的连接类型keep-alive为持久链接

Date: Tue, 05 Jan 2016 08:27:31 GMT    原始服务器消息发出的时间

Cache-Control: no-cache    告诉所有的缓存机制是否可以缓存及哪种类型

Content-Type: text/html;charset=UTF-8    返回内容的MIME类型

常见的MIME类型

超文本标记语言文本 .html,.html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .ipeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar



Transfer-Encoding: chunked    文件传输编码

从网上找了一个比较详细的解释,觉得比较好,但是现在不能完全理解,等以后知识全面了在从看一遍http://blog.csdn.net/whatday/article/details/7571451

Content-Encoding: gzip    web服务器支持的返回内容压缩编码类型


大多数网站都采用此种类型

Keep-Alive: timeout=20    表示这个TCP通道可以保持20秒

觉得写的不错http://www.cnblogs.com/cswuyg/p/3653263.html

Vary: Accept-Encoding    告诉下游代理是使用缓存响应还是从原始服务器请求

Pragma: no-cache     包括时间特定的指令,它可应用到响应链上的任何接受方







你可能感兴趣的:(自学Java Web方向全纪录之http协议简介)