关闭

HTTP协议

349人阅读 评论(0) 收藏 举报
分类:

参考文档:
1. wireshark怎么抓包、wireshark抓包详细图文教程
2. 深入理解HTTP协议
3. Cache-control 百度百科
4. HTTP中cache-control的应用及说明
5. 让浏览器不再显示https页面中的http请求警报
6. 关于HTTP头(header)的Vary的解释
7. transfer-encoding:chunked的含义

一、使用Wireshark抓包

  1. 安装Wireshark

  2. 通过捕获-捕获过滤器设置捕获过滤器:TCP or UDP port80(HTTP)
    这里写图片描述

  3. 设置显示过滤器:目标地址(如果要增加本地ip过滤:可以添加“or ip.src= 你的ip),目标地址以http://image.baidu.com/ 为例,其ip为:112.80.248.122
    这里写图片描述

    根据域名查询 http://image.baidu.com/ 的ip:在cmd中输入如下:
    C:\Windows\System32>ping image.baidu.com

  4. 从过滤结果中找到对应HTTP结果项,右键-追踪流-TCP流,可以看到三次握手的记录
    这里写图片描述

二、三次握手

从上面抓包的结果可以观察到如下情况:

Created with Raphaël 2.1.0客户端客户端服务器服务器第一次握手:Sequence number: 0;Acknowledgement number:0;Flags: SYN第二次握手;Sequence number: 0;Acknowledgement number: 1;Flags: SYN,ACK第三次握手;Sequence number: 1;Acknowledgement number: 1;Flags: ACK

三、Http请求

经过TCP的三次握手之后才可以发送Http请求。
请求方的http报头结构:通用报头|请求报头|实体报头 。

GET / HTTP/1.1
Host: image.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: ***
Upgrade-Insecure-Requests: 1
User-Agent: ***
Referer: ***
Accept-Encoding: ***
Accept-Language: ***
Cookie: ***
  1. GET / HTTP/1.1 :
    请求方法(GET)、URI协议(HTTP)、版本号(1.1)

  2. Host :
    主机和端口号,这里是域名

  3. Connection :
    此header的含义是当client和server通信时对于长链接如何进行处理。 在http1.1中,client和server都是默认对方支持长链接的,如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close。不论request还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在当天请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接了。

  4. Cache-Control :
    指定请求的缓存机制,在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。

    属性说明

    Cache-directive 说明
    public 所有内容都将被缓存(客户端和代理服务器都可缓存)
    max-age = * 缓存的内容将在*秒后失效, 这个选项只在HTTP 1.1可用, 并如果和Last-Modified一起使用时, 优先级较高
    private 内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不可缓存)
    no-cache 必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。因此,如果存在合适的验证令牌 (ETag),no-cache 会发起往返通信来验证缓存的响应,如果资源未被更改,可以避免下载
    no-store 所有内容都不会被缓存到缓存或 Internet 临时文件中
    must-revalidation/proxy-revalidation 如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证

    浏览器响应:

    Cache-directive 在地址栏回车 在新窗口打开该页面 回退到该页面 刷新
    public 读取缓存 读取缓存 读取缓存 访问服务器
    max-age = * 在*秒内读取缓存 在*秒内读取缓存 在*秒内读取缓存 访问服务器
    private 第一次回车访问服务器,再次读取缓存 访问服务器 读取缓存 访问服务器
    no-cache/no-store 访问服务器 访问服务器 访问服务器 访问服务器
    must-revalidation/proxy-revalidation 第一次回车访问服务器,再次读取缓存 访问服务器 读取缓存 访问服务器
  5. Expires
    头部字段提供一个日期和时间,响应在该日期和时间后被认为失效。失效的缓存条目通常不会被缓存(无论是代理缓存还是用户代理缓存)返回,除非首先通过原始服务器(或者拥有该实体的最新副本的中介缓存)验证。(注意:cache-control max-age 和 s-maxage 将覆盖 Expires 头部。)

  6. Accept
    代表发送端(客户端)希望接受的数据类型。

  7. Upgrade-Insecure-Requests
    告诉服务器,浏览器支持将http请求升级为https的操作。

  8. Referer
    Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。

  9. Accept-Encoding
    声明浏览器支持的编码类型。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间

    Encoding类型 说明
    Accept-Encoding: 默认支持identity
    Accept-Encoding: compress, identity 支持compress 和gzip类型
    Accept-Encoding:compress;q=0.5, gzip;q=1.0 按(q值)顺序支持 gzip , compress
    Accept-Encoding: * 支持任意类型
    不写 支持任意类型

    没有q值定义的情况下,如果Accept-Encoding中有identity 那么应该优先返回identity

  10. Accept-Language
    告诉服务器,浏览器支持什么语言

  11. Cookie
    (1). Cookie 本意是指就着牛奶一起吃的点心。在Internet上,Cookie指的是小量信息
    (2). Cookie是由 Web服务器创建并保存在用户浏览器上的小文本文件,它以key/value的形式保存用户的相关信息,这些数据通常会经过加密处理。
    更多Cookie的介绍参见什么是Cookie?

  12. Authorization
    授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中;

四、Http响应

响应格式:状态行|通用报头|响应报头|实体报头

HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html
Date: Wed, 31 Aug 2016 03:27:04 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Search_result: OK
Server: Apache
Set-Cookie: BDRCVFR[X_XKQks0S63]=mk3SLVN4HKm; path=/; domain=.baidu.com
Tracecode: 16246681250496487690083111
Vary: Accept-Encoding
X-Bd-Id: 14704930773111916548
X-Bd-Oc: 0
X-Bd-Ul: 9cd10c5ab95e2efdc2de2f16af6f004c
Transfer-Encoding: chunked
  1. HTTP/1.1 200 OK:
    状态行,包括URI协议、版本号、状态码和原因

  2. Connection
    如果如果server方不想支持长链接,需要明确说明connection的值为close.

  3. Content-Encoding
    文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。

  4. Content-Type:
    表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。

  5. Date
    当前时间

  6. P3p
    提供个人隐私保护策略的东东

  7. Server
    服务端软件信息

  8. Set-Cookie
    回传给客户端的cookie

  9. Vary
    vary的意义在于告诉代理服务器/缓存/CDN,如何判断请求是否一样,vary中的组合就是服务器/缓存/CDN判断的依据,比如Vary中有User-Agent,那么即使相同的请求,如果用户使用IE打开了一个页面,再用Firefox打开这个页面的时候,CDN/代理会认为是不同的页面,如果Vary中没有User-Agent,那么CDN/代理会认为是相同的页面,直接给用户返回缓存的页面,而不会再去web服务器请求相应的页面。

  10. Transfer-Encoding
    用于http传送过程的分块技术,表示输出的内容长度不能确定,常用于动态网页。

0
0
查看评论

《浅谈HTTP协议》

博主从网络上整合了一些讲解HTTP协议的文章,结合自身所学习的内容,对其进行了汇总。力求精简。文章主要从以下几个方面总结HTTP协议的基本内容: 1.基本概念;2.方法;3.无状态协议;4.TCP连接;5.数据传输流程;6.状态码;7.WEB缓存;8.安全性HTTPS
  • mengzhengyu1025
  • mengzhengyu1025
  • 2016-04-03 17:59
  • 1824

http协议概念及其工作流程

一、概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。 HTTP协议,即超文本传输协议(Hypertext transfer prot...
  • bv1315008634
  • bv1315008634
  • 2016-12-13 22:57
  • 660

HTTP协议图解

HTTP
  • peterli_xue
  • peterli_xue
  • 2017-06-28 11:19
  • 316

Java Web之HTTP协议总结

HTTP协议总结HTTP协议(超文本传输协议)http 是一个基于请求与响应模式的,无状态的,应用层的协议,该协议基于TCP链接(三次握手),HTTP 1.1版本中给出一种持续链接的机制,绝大多数的Web开发都是构建在HTTP协议之上的。URL 是一种特殊类型的URI(统一资源标识符),包含用于查找...
  • lisdye2
  • lisdye2
  • 2016-06-12 23:33
  • 1772

HTTP协议头详解

 HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP 协议的详细内容请参 考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、...
  • caojunling
  • caojunling
  • 2007-12-04 19:37
  • 28484

深入理解HTTP协议(二)——协议详解篇

1.HTTP/1.0和HTTP/1.1的比较 RFC 1945定义了HTTP/1.0版本,RFC 2616定义了HTTP/1.1版本。 1.1建立连接方面 HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1 新的请求可以在上次请求...
  • huangjianxiang1875
  • huangjianxiang1875
  • 2015-03-07 16:38
  • 8353

HTTP协议及GET、POST的差异

<br />摘选自吴秦:http://www.cnblogs.com/skynet/archive/2010/05/18/1738301.html1、HTTP概述<br />为了唤醒你对HTTP协议的记忆或使你能够对HTTP协议有所了解,首先简单一下HTTP协议。超文本传输协...
  • xiemk2005
  • xiemk2005
  • 2010-12-31 02:13
  • 3367

HTTP文件上传协议的具体格式示例

POST /myweb/upload HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0 Accept: tex...
  • darennet
  • darennet
  • 2014-10-30 19:10
  • 3264

WebService之Http协议和SOAP协议的不同

SOAP = 在HTTP的基础上+XML数据。
  • liu537192
  • liu537192
  • 2014-05-19 22:19
  • 1113

HTTP请求协议格式

GET /day4/img.html HTTP/1.1            // 请求行 Accept: */*      ...
  • u012550054
  • u012550054
  • 2015-11-23 11:51
  • 769
    个人资料
    • 访问:97448次
    • 积分:1628
    • 等级:
    • 排名:千里之外
    • 原创:58篇
    • 转载:2篇
    • 译文:9篇
    • 评论:50条
    最新评论