应用层协议、基于tcp

HTTP/0.9

命令

GET

特点

  • 服务器只能回应HTML字符串
  • 服务器发送完毕后就关闭tcp连接

HTTP/1.0

命令

GET POST HEAD

特点

  • 每次通信都必须包括头信息(HTTP header)
  • 状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等
  • Content-Type
  • Content-Encoding
  • 每个TCP连接只能发送一个请求(用Connection: keep-alive解决)

HTTP/1.1

命令

GET POST PUT PATCH HEAD OPTIONS DELETE

特点

  • 持久连接,tcp连接默认不关闭,可被多个请求复用
  • 管道机制,在同一个tcp连接中,客户端可以同时发送多个请求(但服务器还是按顺序回应请求)
  • Content-Length
  • 分块传输,Transfer-Encoding: chunked,用来传输动态操作的数据,可不指定Content-Length
  • header里新增Host字段指定服务器的域名
  • 队头堵塞,同一个tcp连接里,数据通信是按次序进行的,服务器只有处理完一个回应才会进行下一个回应

SPDY

特点

  • Google大佬自行研发的协议
  • 主要解决HTTP/1.1效率不高的问题
  • 作为HTTP/2的基础

HTTP/2

特点

  • 二进制协议,头信息和数据体都是二进制,统称为 帧
  • 多工,客户端和服务器都可以同时发送多个请求或回应,且不用按照顺序
  • 数据流,同一个连接里连续的数据包可能属于不同的回应,因此需要给数据流(每个请求或回应的所有数据包)编号,客户端发出的数据流ID一律为奇数,服务器发出的ID为偶数
  • 头信息压缩,使用gzip或compress压缩,客户端和服务器共同维护一张表,生成索引号,只发送索引号
  • 服务器推送,服务器可主动向客户端发送资源,比如主动发送js、css等静态资源,不必等服务端解析HTML后发起请求

参考

HTTP协议入门要点的更多相关文章

  1. internet协议入门

    前言 劳于读书,逸于作文. 原文地址:internet协议入门 博主博客地址:Damonare的个人博客 博主之前写过一篇博客:网络协议分析,在这篇博客里通过抓包,具体的分析了不同网络协议的传送的数据 ...

  2. Network - 互联网协议入门

    珠玉在前,不在赘言 互联网协议入门(一) 互联网协议入门(二) 通信协议:HTTP.TCP.UDP 互联网协议入门 互联网协议入门深入 当你输入一个网址,实际会发生什么? Wireshark基本介绍和 ...

  3. SNMP协议入门

    SNMP协议入门 1.引言 基于TCP/IP的网络管理包含3个组成部分: 1) 一个管理信息库MIB(Management Information Base).管理信息库包含所有代理进程的所有可被查询 ...

  4. Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题

    1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动:  %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...

  5. 通信—HTTP 协议入门(转载)

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于199 ...

  6. HTTP协议入门(一)- 版本

    当我们在浏览器的地址栏输入URL后,信息会被发送到WEB服务器,服务器得到响应,将数据传输回来,展示到WEB页面上,这其中的传输方法就是HTTP协议. 一.HTTP 0.9 发布于1991年,是首个H ...

  7. TCP/IP协议入门

    TCP/IP协议入门 1. 简介 Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联协议.它是网络通信的一套协议集合. 先 ...

  8. http协议入门---转载

    http协议入门 ##(一). HTTP/0.9 HTTP 是基于 TCP/IP 协议的应用层协议.它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口. 最早 ...

  9. LDAP协议入门

    LDAP协议入门(轻型目录访问协议) LDAP简介 轻型目录访问协议,全称:Lightweight Directory Access Protocol,缩写:LDAP,它是基于X.500标准的,但是简 ...

随机推荐

  1. js调用php和php调用js的方法举例

    js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="te ...

  2. 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

    这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...

  3. ESXI6.0启用 snmp

    1.首先通过ILO登录远程控制桌面然后按F2输入密码后进入 2.开启shell 3.按住 Alt + F1 切换到shell 4.启用 snmp   esxcli system snmp set -- ...

  4. canvas星星炫耀

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. wpf的UserControl用户控件怎么添加到Window窗体中

    转载自 http://www.cnblogs.com/shuang121/archive/2013/01/09/2853591.html 我们来新建一个用户控件UserControl1.xaml &l ...

  6. XML带多属性解析为一个实体类(利用反射)

    最近在对接一个银行的项目,大概就是类似一个钱包的功能,在请求返回的数据时,发现返回的数据标准的XML格式的支付串,格式如下 <kColl id="inputOrig" app ...

  7. https单向认证和双向认证

    单向认证: .clinet<--server .clinet-->server .client从server处拿到server的证书,通过公司的CA去验证该证书,以确认server是真实的 ...

  8. 改变linux默认配色方案(dircolors和dircolors-solarized使用)

    前言 前几天刚买了阿里云的云服务器,今天使用putty进入服务器,发现linux默认的bash配色实在太丑. 特别是文件夹显示为深蓝色,到了白天,和黑色背景一搭配,根本看不清文字. 好在在github ...

  9. 【leetcode】Roman to Integer

    题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...

  10. C++预定义宏

    C/C++宏体中出现的#,#@,##: - #的功能是将其后面的宏参数进行字符串化操作(stringfication),就是对它所引用的宏变量通过替换后在其左右各加上一个双引号 -##被称为连接符(c ...