HTTP应用详解

  1. 一直在linux下 用snort去抓包干了一年多!我比较懒些,感觉这篇文章挺好的,和我工作中用的挺相似的,也就拿来主义了!
  2. 转自 扶凯 http://www.php-oa.com/2008/10/28/httpnote.html
  3. HTTP简介
  4.   web浏览器和服务器之类的交互过程必须遵守的协议.他是tcp/ip中的一个应用协议。用来协议数据交换过程和数据本身的格式.主要的有HTTP/1.0和HTTP1.1.
  5. HTTP1.0的会话方式
  6. 在1.0时的会话方式
  7. 1.建立连接
  8.     2.发出请求信息
  9.     3.回送响应信息
  10. 4.关掉连接 
  11. 小结:浏览器和web服务器连接很短,每次连接只处理一个请求和响应。对每一个页的请求,浏览器与web服务器都要建立一次单独的连接.浏览器没有关掉前,连接就断开了.浏览器和服务器之间的通信是完全独立分开的请求和响应对.因为这样没法断点浏览器是否断开,没法做连接状态控制。建立和关掉连接会很占用连接时间.
  12. 问题:如果一个网页中有多个元素会怎么样(比如有多个图.)
  13. 请求,然后得到网页的内容,然后在解析,解析后发现网页中有多个元素。就在次向服务器发送多次请求.
  14. 在一个网页中,在http头中的Connection中有多少个close的头,就相当有多少个http的连接.
  15. HTTP1.1和HTTP1.0的主要分别
  16. 在同一个tcp的连接中可以传送多个HTTP请求和响应.
  17. 多个请求和响应可以重叠,多个请求和响应可以同时进行.
  18. 更加多的请求头和响应头(比如HTTP1.0没有host的字段).
  19. 总结:  在 HTTP/1.0 中,大多实现为每个请求/响应交换使用新的连接。在 HTTP/1.1 中,一个连接可用于一次或多次请求/响应交换,尽管连接可能由于各种原因被关闭.这是他们之间最大的分别.
  20. HTTP1.0的格式
  21. request(HTTP请求消息)
  22. 结构:一个请求行.部分消息头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开.
  23. GET /index.html HTTP/1.1  //请求头,下面都是消息头.
  24. Accept: */*
  25. Accept-Languang:en-us
  26. Connection:keep-alive
  27. Host:localhost
  28. Referer:HTTP://localhost/index.html
  29. User-Agent:Mozilla/4.0
  30. Accept-Encoding:gzip,deflate//到上面都是消息头,下面一个空行表示完了,接下来是实体内容.
  31. Response响应消息头
  32. 在接收并解析请求消息后,服务器以 HTTP 响应消息响应。相当服务器对客户的http的回应
  33. 结构:一个状态行.部分消息
  34. 头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开.
  35. HTTP/1.1 200 ok           //状态行.下面为消息头
  36. Server:Apache2.2
  37. Date:Thu, 13 Jul 2008 16:29:46 GMT
  38. Content-Length:2222
  39. Content-Type:text/html
  40. Cache_control:private //和请求消息头一样下面有一个空行
  41. 注意:使用get的方法的请求消息中是不能包含实体内容的,只有使用post,put和delete的方法请求消息中才能有实体内容.对HTTP1.1来讲,如果HTTP中有实体内容,但没有使用权chunked传输编码.那么消息头部分必须包含内容长度字段.不然不知什么时候内容才结束。HTTP1.1中一定要有host字段
  42. 以上消息头的结构:每个消息头都包含一个头字段名称,然后依次是冒号,空格值,回车和换行符,字段不区分大小写.对消息头中的消息头可以任何顺序排列.
  43. 消息头可以分为信息头,请求头,响应头,实体头四类
  44. 如果有多个选项,可以用逗号分隔Accept-Encoding:gzip ,deflate
  45. 请求行和状态行.
  46. 请求行格式: 请求方式 资源路径 HTTP版本号<CRLF>
  47. 例: GET /test.html HTTP/1.1
  48. 请求方式有:POST,HEAD,OPTIONS,DELETE,TRACE,PUT
  49. 状态行格式: HTTP版本号 状态码 原因<CRLF>
  50. 例: HTTP/1.1     200 OK
  51. 使用telnet来测试.
  52. $ telnet www.php-oa.com 80
  53. Trying 211.103.156.124...
  54. Connected to www.php-oa.com.
  55. Escape character is '^]'.
  56. get /fopen.php HTTP/1.1
  57. HTTP/1.1 400 Bad Request
  58. Date: Mon, 27 Oct 2008 08:02:52 GMT
  59. Server: Apache/2.2.3 (CentOS)
  60. Content-Length: 306
  61. Connection: close
  62. Content-Type: text/html; charset=iso-8859-1
  63. GET和POST方式传递参数时各自的清况
  64. HTTP://www.php-oa.com/wp?a=b&c=b
  65. GET时
  66. GET /wp?a=b&c=b HTTP/1.1
  67. 注:因为url长度控制,所以不能长过1024
  68. POST时
  69. POST / HTTP/1.1
  70. host:
  71. Content-Type:application/x-www-form-urlencoded
  72. Content-Length:28
  73. wp?a=b&c=b  //实体正文中
  74. 注:post因为在实体内容中间,可以任意大小.
  75. 通用信息头
  76. 通用信息头可以用于请求消息,也可以用于响应消息,包括一些写被传输的实体内容没有关系的一些消息头字段.
  77. Cache-Control: no-cache (*) //是否缓存当前的消息
  78. Connection: close     //用于指定处理完本次请求后是否保持连接. 如果为close时就处理完响应就断开连接(HTTP1.1默认是打开持久连接.如果没有close就默认是连接的.)
  79. Date:Tue, 11 Jul 2000 18:23:51 GMT
  80. Pragma:no-cache     //HTTP1.0中指定不要缓存的HTTP头.
  81. Trailer:Date           //指于在实体信息后面可以出现那些头字段
  82. Transfer_Encoding:chunked    //传输的编码方式.给HTTP内容分段传送。chunked是指每个分段开始都有一个16进制的长度.后后一个分段必须为零的分段.
  83. Upgrade:HTTP/2.0 ,sHTTP/1.3  //希望使用什么协议来通知.
  84. Via:HTTP/1.1 Proxy1,Http/1.1 Proxy2 //代理服务器的信息,如果经过多个,就会在vai中加后面依次加入多个.
  85. 注:Content-Length和Transfer_Encoding分别什么时候用,如果程序在缓冲中知道内容长度就使用Content-Length,如果缓冲区一次不能缓冲,那就只能使用Transfer_Encoding,然后分段传输.
  86. 常用请求头:
  87. 主要是用在客户端向服务器传递附加和信息,比如支持的数据类型,压缩方法,语言
  88. Accept:text/html,image/*           //支持的文件格式
  89. Accept-Charset:ISO-8859-1,unicode-1-1  //支持的字符集
  90. Accept-Encoding:gzip,compress  //支持的编码方式
  91. Accept-language:en-gb,zh-cn   //支持的语言
  92. Authorization:Basic asdfsadfsafdaenh4  //加密认证方法
  93. Host: www.php-oa.com:80    //指定客户端打开的主机名和端口号
  94. if-Match:"aaa","bbb"          //实体标签.用来查看是否是和当前的信息一样.
  95. if-Modified-Since: Tue, 11 Jul 2008 18:03:00 GMT  //上次缓存的网页缓存时间
  96. if-None-Match:"aaa","bbb"    //和if-match相反
  97. if-Range: Tue, 11 Jul 2008 18:03:00 GMT   //只能和Range一起使用.
  98. if_Unmodified-Since:Tue,11 Jul 2008 18:03:00 GMT 和if-Modified-Sinc相反.
  99. Max-Forwards: 1   //通过代理服务器的数量,象ttl值.
  100. Proxy-authorization:  //代理时的方法
  101. Range:bytes=100-599  //断点续传时使用的HTTP头
  102. Referer:HTTP://www.php-oa.com/index.php  //上一跳来源的网站
  103. TE:trailers.deflate  //说明客户除了chunked还能使用什么方法
  104. User-Agent:Mozilla/40(compatible;MSIE5.5;Windows NT 5.0) //浏览器信息
  105. 实体头
  106. 主要用做实体内容的元信息,表示实体内容的属性,包括实体信息类型,长度,压缩方法.最后一次修改时间,数据有效期等.
  107. Allow :GET.POST
  108. Content-Encoding:gzip
  109. Content-Language:zh-cn
  110. Content-Length:800                   //大小
  111. Content-Location:HTTP://www.php-oa.com/index.html   //重定向到
  112. Content-MD5: ABDEDFDEFERDFEFE==           //指出md5,可以算出内容是否被改变过
  113. Content-Range:bytes 2543-4532/7878        //断点续传时用.
  114. Content-Type:text/html;charset=GB2312     //指定文件类型,和字符集
  115. Expires: Tue, 28 Jul 2008 16:49:49          //过期时间
  116. Last-Modified:Tue 11 Jul 2008 16:49:4      //最后更新时间
  117. 扩展头
  118. 在HTTP1.1中没有定义的字段.比如下面的这些.
  119. Cookie
  120. Set-Cookie
  121. Refersh: 1; url=HTTP://www.php-oa.com
  122. Content-Disposition
  123.     Content-Type:application/octet-stream
  124.     Content-Disposition:attachment;filename=aaa.zip //filename为文件保存的名字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值