HTTP协议学习总结

HTTP协议学习总结

友情提示,本文档的图床使用极简图床进行图片存储,默认存储到七牛云空间


本文是对HTTP协议详解的学习记录贴,非原创,向原作者致敬!!

正文

  • HTTP是超文本传输协议,并非某种技术

  • HTTP的网络传输实现依靠的是TCP协议

  • MIME类型有上千种,是一种文本标记,用对象类型/子类型表示:xml文档 .xml text/xml

  • URL是全球唯一定位符,有两种方式

    • URL

    组成方式:协议://ip地址:端口号(可省略)/资源标识符?参数
    举个栗子:https://portal.qiniu.com/bucket/weihao/index

    • URN

    常用来做下拉菜单,不常用


  • HTTP的请求方法 不光有 get和post两种,具体分为以下:

    • HEAD 获得服务器头部 不含主体
    • GET 从服务器获得文档 不含主体
    • POST 向服务器提交数据 包含主体
    • PUT 请求存储在服务器 包含主体
    • DELETE 从服务器删除文档 不包含主体
    • TRACE 从服务器获得报文跟踪 不包含主体
    • OPTIONS 决定服务器操作类型 不包含主体
  • HTTP的工作方式
    客户端发送<font color='red' >request</font>请求到<font color='red' face='宋体'>服务端</font>,通报报文方式,服务器端返回结果(json格式或者html标签)给客户端浏览器,浏览器进行解析后展示数据或者<font color='red'>页面元素</font>

  • HTTP状态码 代表了服务器的返回结果的标识,常用的有以下几个:

    • 200 请求成功并返回
    • 302 请求被重定向 返回头有location确定重定向地址
    • 304 上次请求被缓存,这次直接在缓存中获取 很多<font color ='red'>静态文件</font>会被缓存

    如果你不想使用缓存数据,比如很多js或者css被修改了可以使用ctrl+F5进行强制刷新浏览器

    • 400 提交的参数和服务器映射方法接受的参数不一致 (4开头为客户端错误)
    • 403 服务器接收到了请求,但是拒绝提供服务
    • 404 页面不存在
    • 500 服务器处理请求时内部发生了错误
    • 503 服务端暂时 不能正确处理,稍后可能会恢复(比如部署IIS,webconfig有问题的时候会报)
  • HTTP报文(F12后的请求详情页)

    按照接收方和发送方可以分为:

    • 请求报文
    • 相应报文
  • HTTP的报文组成

    • 请求行
    • 请求头
    • 报文体


    其中1,2,3组成了请求行,既请求地址,请求方法,和网络协议
    4是具体的请求头,里面的内容采用键值对的方式进行表示


参数是报文体,用来携带请求参数,也可以通过get方式的?后携带

  • 对于HTTP的get请求有个显著的特点就是 body是空的

  • TCP/IP是HTTP的传输依赖.HTTP处于TCP/IP的应用层范围
    TCP/IP的层分类

    • 网络接口层
    • 网络层
    • 传输层
    • 应用层

TCP的补充说明:HTTP位于TCP的上层,TCP其实也位于IP的上层.

  • HTTP协议发送报文前需要 建立TCP/IP连接,其中IP地址类似于小区地址,而端口号相当于门牌号,两者确定唯一的网络地址

  • HTTP代理是位于服务器和客户端中间实体,作为中间人角色转发HTTP请求

对代理服务器的补充: 目前HTTP支持两种发送方式

方式一 服务端和客户端直连
方式二 服务端和客户端无法直接连接,需要通过代理服务器 连接,以突破网络限制

  • 代理服务器的访问不仅可以突破IP网络限制,而且可以提高网速,原理是,当大部分请求url相同时,网络代理服务器一般会做缓存处理
    下一次其他用户访问时,缓存会大大提高访问速度

  • 代理服务器也可以隐藏真实IP地址

  • HTTP请求时无状态的.对于来自同一个客户端的两次相同请求,http服务器分辨不出,所以引入了<font color='red'>Cookie(缓存)</font>的概念

  • 一个请求无法返回呈现出的页面,但请求返回的html中有其他引用,比如jpg,css,javascript等静态文件时,客户端会再次发送请求


  • Request头详细信息:

    • <font color='red'size='4'>cache头域</font>
      • If-Modified-Since

        客户端第一次发送请求时会缓存页面到本地文件,并记录文件修改时间,第二次发送时会将该时间作为比对字符串和服务器返回的Last-Modified(最后修改时间)做比较
        如果时间相同,则使用本地缓存,如果时间不同,则替换本地文件并保存缓存

      • If-None-Match

        该参数在HTTP1.1协议上产生,是为了更精准的细化确定缓存资源,If-Modified-Since因为采用的时间戳,所以精度有限,只精确到秒,所以只适用于不经常变化的静态资源文件.  
        这个参数需要和response头信息中的`Etag`配合验证,在第一次请求时,服务器会设置Etag,之后用于二次请求时的验证依据  
        

        关于该参数的具体使用,请参考REST笔记(五):你应该知道的HTTP头------ETag

      • cache-control
        该参数是用来指定response头的缓存机制

         ![](http://or316jtnw.bkt.clouddn.com//17-8-22/48059186.jpg)    
         常用的配置是:  
        
      • Cache-Control:Public
        可以被任何缓存所缓存()

      • Cache-Control:Private
        内容只缓存到私有缓存中

      • Cache-Control:no-cache
        所有内容都不会被缓存 (对于每次返回的数据不同的请求)

  • <font color='red'size='4'>Clint头域(浏览器声明部分)</font>

    • Accept
      客户端发送请求时,告诉服务端 接受什么样的返回数据,*/*代表接受所有类型参数,如果不做特别处理,一般浏览器的Accept接受*/*(比如AJAX特别指定参数类型)

    • Accept-Language
      浏览器声明的自己可以接受的语言类型

    • Accept-Encoding
      浏览器声明的可以接受的压缩方式

    • User-Agent
      告诉服务器当前客户端的操作系统的版本号,位数及浏览器的相关信息

  • <font color='red'size='4'>Cookie/Login 头域</font>


    将cookie值发送给服务器,在header信息中属于重要的级别

  • <font color='red'size='4'>Entity头域</font>

    • Content-Type
      描述发送或者接受的实体类型

    • Content-Length
      描述发送或者接受的实体长度

  • <font color='red'size='4'>Miscellaneous 头域</font>
    提供了上下文服务器地址,可以通过Referer参数查询该链接的产生是通过何种路径引导过来的(上个访问的服务器地址)

  • <font color='red'size='4'>Transport 头域</font>
    • Host
      发送请求时的必备参数之一, 指定了请求资源的internet地址和端口号(端口号可以省略)

    • Connection
      指定了获取TCP/IP连接后的处理方式 分为以下两种

    • Connection: keep-alive
      完成请求后,TCP/IP连接保持连接,当有新的请求产生时,依然使用该TCP/IP连接

    • Connection: close
      当一个请求完成后,立马关掉TCP/IP请求,当有新的请求产生时,会重新进行TCP/IP连接


  • Response头详细信息:

    • <font color='red'size='4'>cache头域</font>

      • Data
        生成消息的具体时间和日期

      • Expires
        缓存过期时间设置(多用于静态资源)


    • <font color='red'size='4'>Cookie/Login头域</font>

      • P3P
        作用: 用于跨域设置Cookie, 这样可以解决iframe跨域访问cookie的问题

        • Set-Cookie
          非常重要的header, 用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie.
    • <font color='red'size='4'>Entity头域</font>

      • ETag
        详情参考 request头中的If-None-Match
      • Last-Modified
        详情参考 request头中的'If-Modified-Since'
      • Content-Type
        描述了 服务器返回的实体类型
      • Content-Length
        描述了实体长度
      • Content-Encoding
        描述了服务端的压缩方式
      • Content-Language
        描述了服务端返回的语言类型
    • <font color='red'size='4'>Miscellaneous 头域</font>

      • Server:

        作用:指明HTTP服务器的软件信息

        例如:Server: Microsoft-IIS/7.5 或者 Apache

      • X-AspNet-Version
        如果.net平台开发,会有这个选项,说明了.net的版本号

      • X-Powered-By:
        说明了服务端采用的后台编程语言类型 ,下图中百度采用的是HPHP

  • <font color='red'size='4'>Transport头域</font>
    本部分和request对应的该部分内容相同,请翻阅参考

  • <font color='red'size='4'>Location头域</font>
    location用来描述304的具体重定向url地址


  • HTTP1.1的默认 TCP连接方式是保持TCP/IP连接,连接时间取决于发布服务器平台(比如APACHE,IIS等的详细设置) Connection:keep-active

随笔

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,322评论 6 152
  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 1,851评论 0 3
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,194评论 3 82
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,502评论 18 139
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 1,208评论 0 7