HTTP协议入门要点
应用层协议、基于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协议入门要点的更多相关文章
- internet协议入门
前言 劳于读书,逸于作文. 原文地址:internet协议入门 博主博客地址:Damonare的个人博客 博主之前写过一篇博客:网络协议分析,在这篇博客里通过抓包,具体的分析了不同网络协议的传送的数据 ...
- Network - 互联网协议入门
珠玉在前,不在赘言 互联网协议入门(一) 互联网协议入门(二) 通信协议:HTTP.TCP.UDP 互联网协议入门 互联网协议入门深入 当你输入一个网址,实际会发生什么? Wireshark基本介绍和 ...
- SNMP协议入门
SNMP协议入门 1.引言 基于TCP/IP的网络管理包含3个组成部分: 1) 一个管理信息库MIB(Management Information Base).管理信息库包含所有代理进程的所有可被查询 ...
- Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题
1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...
- 通信—HTTP 协议入门(转载)
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于199 ...
- HTTP协议入门(一)- 版本
当我们在浏览器的地址栏输入URL后,信息会被发送到WEB服务器,服务器得到响应,将数据传输回来,展示到WEB页面上,这其中的传输方法就是HTTP协议. 一.HTTP 0.9 发布于1991年,是首个H ...
- TCP/IP协议入门
TCP/IP协议入门 1. 简介 Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联协议.它是网络通信的一套协议集合. 先 ...
- http协议入门---转载
http协议入门 ##(一). HTTP/0.9 HTTP 是基于 TCP/IP 协议的应用层协议.它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口. 最早 ...
- LDAP协议入门
LDAP协议入门(轻型目录访问协议) LDAP简介 轻型目录访问协议,全称:Lightweight Directory Access Protocol,缩写:LDAP,它是基于X.500标准的,但是简 ...
随机推荐
- Erlang C1500K长连接推送服务-内存
上篇 Erlang C1500K长连接推送服务-性能 提到:150w连接,使用了23GB内存,每个连接占用15KB,约一半是内核使用. 大概分析一下: 1. Erlang 节点 12GB,内部因为有内 ...
- 【ASP.NET】利用Nuget打包package——命令行方式
通过命令行 官方说明,可以参考:creating-and-publishing-a-package 如果你希望可以使用图形界面的方式,请参考这篇文章 打包dll 使用如下的命令: nuget ...
- iOS getter setter
getter setter 给成员变量起名字用的 setter方法 设置成员变量值 1. setter 方法一定是对象方法 不可能是类方法 2.一定没有返回值 3. 以set开头,并且set后面跟上需 ...
- Apple Pay 初探
Apple Pay 一.概述 1.支付方式:Touch ID/ Passcode 2.设备要求:iPhone6以上(iphone:线上/线下 ipad:线上 watch:线下) 3.系统要求:iOS8 ...
- Java_File类讲解_打印目录树状结构_递归算法
package cn.xiaocangtian.testFile; import java.io.File; public class FileTree { public static void ma ...
- 与你相遇好幸运,用sinopia搭建npm私服
需求: >在企业内部搭建私有npm服务器,企业开发人员上传下载自己开发的npm包 >私有npm服务器包不存在时,找npm或者taobao的镜像站点 >服务器硬盘有限,希望只缓存下载过 ...
- PHP7函数大全(4553个函数)
转载来自: http://www.infocool.net/kb/PHP/201607/168683.html a 函数 说明 abs 绝对值 acos 反余弦 acosh 反双曲余弦 addcsla ...
- Jquery判断变量是否为空
var aaa=''; if(aaa) { //aaa不为空也不是不可识别对象时执行 } else { //aaa为空或不可识别时执行 } aaa必须是变量,对象的属性好像是不行,
- F#之旅3 - F# PK C#:简单的求和
原文链接:https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/posts/fvsc-sum-of-squares.html Comp ...
- 动态更换应用Icon
转:原理1--activity-alias 在AndroidMainifest中,有两个属性: // 决定应用程序最先启动的Activity android.intent.action.MAIN // ...