1、HTTP概述

  1.1、什么是HTTP?
    它是Hyper Text Transfer Protocol的缩写。超文本传输协议。
    它是客户浏览器和web服务器之间的一种一问一答的规则。问答机制/握手机制。

  1.2、HTTP版本
    1.0版本:
      创建连接(TCP/IP)
      发送请求
      接收响应
      关闭连接
    1.1版本:
      创建连接(TCP/IP)
      发送请求1
      接收响应1
      发送请求2
      接收响应2........
      请求超时(手动关闭)
    1.1版本比1.0版本多了几个消息头
  1.3、特殊说明
    当浏览器发现script标签,link标签和img标签时,会自动发出请求。

2、HTTP主要组成

  2.1、请求部分
      请求行
      请求消息头
      请求正文

  GET /myapp/2.html HTTP/1.1  //如请求行

  Host:"localhost:8080"

  User-Agent:"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"

  Accept:"*/*"

  Accept-Language:"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"

  Accept-Encoding:"gzip, deflate"

  Referer:"http://localhost:8080/jeecg/logController.do?statisticTabs&isIframe"

  Cookie:"JEECGINDEXSTYLE=hplus; JSESSIONID=051CDE615BD426D727B41B2481B4A1C3; ZINDEXNUMBER=1990"

  Connection:"keep-alive"

  2.2、响应部分
    响应行
    响应消息头
    响应正文

  HTTP/1.1 200 OK // 响应行

  Cache-Control:"no-cache, no-store"

  Content-Language:"zh-CN"

  Content-Type:"text/html;charset=UTF-8"

  Date:"Wed, 17 May 2017 02:42:27 GMT"

  Expires:"Thu, 01 Jan 1970 00:00:00 GMT"

  Pragma:"no-cache"

  Server:"Apache-Coyote/1.1"

  Transfer-Encoding:"chunked"

如下图:

    

  2.3、消息头的共性
    (1)头名称首字母大写,多个单词每个单词的首字母都大写。
    (2)多个单词用-分隔
    (3)名称和值之间用:分隔
    (4)值和:之间有一个空格
    (5)多个值之间用,分隔
    (6),和值之间也有一个空格
    (7)两个头之间用回车分隔

    MIME类型:多用途互联网邮件扩展类型
    MIME:(Multipurpose Internet Mail Extensions)

3、请求部分详解
  请求行:GET /myapp/2.html HTTP/1.1
  GET:请求的方式。GET和POST
  /myapp/2.html:请求资源URI。
  

  URI:Uniform Resource Identifier 统一资源标识符
  URL:Uniform Resource Locator 统一资源定位符
  URL: http://localhost:8080/jeecg/logController.do?statisticTabs&isIframe
      协议    主机     端口      URI
  

  HTTP/1.1:协议的版本

  请求消息头:客户浏览器给服务器的暗语
  Accept:
    告知服务器,浏览器所支持的MIME类型。
  Accept-Encoding:
    告知服务器,浏览器所支持的压缩编码格式。常用的一个GZIP压缩。
  Accept-Language:
    告知服务器,浏览器所支持的语言。例如zh_CN,en_US等等。
  Referer:
    告知服务器,当前请求的来源。注意:只有有来源的才会有此消息头。
    作用:
      1.投放广告。
      2.防盗链。
  Content-Type:
    告知服务器,请求正文的MIME类型。
  Content-Length:
    告知服务器,请求正文的长度。
  User-Agent:
    客户浏览器的相关信息
  Connection: Keep-Alive
    连接状态:保持连接
  If-Modified-Since:
    客户端缓存的最后更新时间。
  Cookie:
    会话管理相关。(非常重要)
  请求的正文:
    什么时候有,什么时候没有,当什么属性取什么值的时候,请求的正文是什么体现形式?
    POST方式:username=test&password=123 key=value&key=value 在请求体中
    GET方式: username=test&password=123 key=value&key=value 在地址栏中
    表单输入域中,只要有name属性的时候,正文内容就会被提交。如果没有name属性,则不会被提交.
    正文的体现形式不受请求的方式控制。
    表单的第三个重要属性:enctype属性:控制编码表单的MIME类型
      enctype是有默认值的:application/x-www-form-urlencoded 它对应的表单正文的体现形式就是key=value
      enctype取值为multipart/form-data时,请求正文的体现形式是:
      -----------------------------7df1592a410fc
      Content-Disposition: form-data; name="username"

      test
      -----------------------------7df1592a410fc
      Content-Disposition: form-data; name="password"

      123
      -----------------------------7df1592a410fc
      Content-Disposition: form-data; name="fileone"; filename="C:\Users\zhy\Desktop\请求部分.jpg"
      Content-Type: image/pjpeg

      ??
      -----------------------------7df1592a410fc

4、响应部分详解
  响应行:HTTP/1.1 200 OK
  HTTP/1.1:使用的协议及版本
  200:响应状态码
  常用的状态码:
    200 :一切都OK
    302/307 :重定向
    304 :请求资源未改变,使用缓存
    404 :请求资源未找到
    500 :服务器内部错误
  OK:状态码描述
  响应消息头:服务器给客户浏览器的暗语
    Location:
      重定向的地址
    Server:
      服务器相关信息
    Content-Type:
      告知浏览器,响应正文的MIME类型
    Content-Length:
      告知浏览器,响应正文的长度
    Content-Encoding
      告知浏览器,响应正文使用的压缩编码格式。
    Content-Language:
      告知浏览器,响应正文语言。
    Content-Disposition:
      告知浏览器,以下载的方式打开。
    Refresh:
      定时刷新
    Last-Modified:
      服务器资源的最后修改时间。当浏览器发出请求时,会使用客户端缓存最后更新时间和该消息头的值进行比较。如果一致则使用缓存。如果不一致,发送新的请求。
    Set-Cookie:
      会话管理相关(非常重要)
    Expires:-1:设置缓存时间。当设置为-1时,表示不要缓存。时间是以毫秒为单位。
    Catch-Control: no-catch(1.1)//针对http协议1.1版本
    Pragma:no-catch(1.0)//针对http协议1.0版本
  响应的正文:
    和你在浏览器右键查看源文件,看到的内容是一模一样的。

HTTP协议详细分析的更多相关文章

  1. Ubuntu搭建NFS服务器,NFS协议详细分析

    目录 1. Ubuntu搭建NFS服务器 2. NFS协议分析 2.1 实验拓扑: 2.2 在kali抓包分析 1. Ubuntu搭建NFS服务器 ​ NFS(Network FileSystem,网 ...

  2. tcpdump抓包二进制tcp协议详细分析

    1.tcpdump -i eth0 port 11751 and src host 192.168.1.34 -x -s0 tcpdump: verbose output suppressed, us ...

  3. 韩顺刚-tcp报文头协议详细分析第一包数据:序号是0,发送数据的长度是0,因为没有收到对端的数据,所以确认号是0, Syn的标志位设置成1,这里没有发送的数据,只发送TCP的20个字节的头部

    TCP报文段首部格式 大部分TCP报文头部都是20个字节,有的数据包要加上选项. 上面一行代表4个字节,源端口和目的端口都是2个字节. TCP协议是面向字节流的协议 TCP是一段一段分块的发送数据的 ...

  4. Android IOS WebRTC 音视频开发总结(八十六)-- WebRTC中RTP/RTCP协议实现分析

    本文主要介绍WebRTC中的RTP/RTCP协议,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID ...

  5. NS2仿真:两个移动节点网络连接及协议性能分析

    NS2仿真实验报告2 实验名称:两个移动节点网络连接及协议性能分析 实验日期:2015年3月9日~2015年3月14日 实验报告日期:2015年3月15日 一.实验环境(网络平台,操作系统,网络拓扑图 ...

  6. HashMap 源码详细分析(JDK1.8)

    一.概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap.HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现.HashMap 允许 null 键和 null 值, ...

  7. LinkedHashMap 源码详细分析(JDK1.8)

    1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,Linke ...

  8. ArrayList 源码详细分析

    1.概述 ArrayList 是一种变长的集合类,基于定长数组实现.ArrayList 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个 ...

  9. 一个DOS攻击木马的详细分析过程

    一个DOS攻击木马的详细分析过程 0×01 起因 网路流量里发现了大量的的1.exe的文件,而且一直在持续,第一感觉就像是一个木马程序,而且每个1.exe的MD5都不一样,对比发现只有几个字节不一样( ...

随机推荐

  1. DES数据解密

    /// <summary> /// DES数据解密 /// </summary> /// <param name="targetValue">& ...

  2. <1>Python生成高质量Html文件:Pyh模块+Bootstrap框架

    一,介绍 QQ交流群:585499566 本文的目的是怎么使用Pyh+Bootstrap快速生成简约,大方,清新的Html页面,涉及到的技能:Python小白技能,Pyh会阅读中文文档,Html基础, ...

  3. .net webapi 后台导出excel 申请付款单实例

    [HttpGet, AllowAnonymous] public void ExportSettlementPrint(string code) { FinSettlementModel settle ...

  4. NAT穿越(一) NAT类型

    NAT分为四种类型: (1)完全透明NAT(Full Cone NAT): 从内部主机  (IN IP ipa) +端口(IN PORT porta) 发送的数据映射为  IP(OUT IP IPA) ...

  5. [20181130]control file sequential read.txt

    [20181130]control file sequential read.txt --//昨天上午探究了大量控制文件读的情况,链接:http://blog.itpub.net/267265/vie ...

  6. SQL语句计算距离今天生日还差几天

    转载于:http://www.w3dev.cn/article/20110125/sql-compute-birthdate-now-days.aspx SQL语句计算距离生日还差几天原理很简单,将要 ...

  7. 三、Tableau筛选器的使用

    一.使用筛选器制作联动效果 注意,下面两幅图以‘是否盈利’来添加颜色标签 图一:地图 图二:月度销售客户细分 图三:月度销售产品类别 1.新增仪表盘:将图一.图二.图三拉进同一个仪表盘 2.在图一原图 ...

  8. Windows Server 2016-WinSer 2016标准版与数据中心版的区别

    今天在整理文章的时候看到有读者问到他现在的测试环境是用的Windows Server 2016标准版,和我现阶段系列文章的环境是否有区别. 其实针对Windows Server 2016 Active ...

  9. Zabbix Agent安装与卸载

    cmd /c "C:\zabbix\bin\win64\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -i" ...

  10. MacOS远程Windows提示:远程桌面连接无法验证您希望连接的计算机的身份

    解决方法: 1.在Windows端,运行输入 “gpedit.msc”,打开本地组策略编辑器 2.依次打开[计算机配置]→[管理模板]→[windows组件]→[远程桌面服务]→[远程桌面会话主机]→ ...