HTTP入门知识的记录

本文内容基本来自于《图解HTTP》一书,只是对其中个人相对重要的内容进行记录,以便日后查找。

协议:不同的硬件、操作系统之间的通信所需要的规则被称为协议。
TCP/IP协议族:互联网相关的各类协议族的总称。
TCP/IP按层次分为4层,分别是应用层传输层网络层数据链路层。层次化的好处在于在规划好各层接口后,在改变设计时不需要顾虑整体,只需把变动的层替换掉即可,也使得各层在设计上变得相对简单。

  • 应用层:应用层决定了向用户提供应用服务时通信的活动。(HTTP协议位于该层)
  • 传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。(有TCPUDP两个性质不同的协议)
  • 网络层(又名网络互连层):网络层用来处理在网络上流动的数据包 。数据包是网络传输的最小数据单位。网络层所起的作用就是在众多的选项内选择一条传输路线。
  • 链路层(又名数据链路层、网络接口层):用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(网卡)及光纤等物理可见部分。
    传输时各层对数据信息的封装

IP(网际协议):位于网络层,用于把各种数据包传送给对方。
传送需要IP地址(节点被分配到的地址)和MAC地址(网卡所属的固定地址),IP地址可变换,MAC地址基本上不会更改。根据ARP协议,根据IP地址查出MAC地址,通过路由中转最终送达。

TCP三次握手:发送端SYN--接收端SYN/ACK--发送端ACK
TCP四次挥手:发送端FIN--接收端ACK--接收端FIN--发送端ACK

DNS:提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

HTTP协议报文分为请求报文响应报文两类。而请求报文是由请求方法请求URI协议版本可选的请求首部字段内容实体构成。响应报文是由协议版本状态码用以解释状态码的原因短语可选的响应首部字段以及实体主体构成。

报文结构图
  • 报文:是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。
  • 实体:作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。
    通常,报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

HTTP协议是无状态协议,自身不对发送过的请求和响应之间的通信状态进行保存。但可以通过在URL带参数查询或通过Cookie技术,可以在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie:首次请求时,服务器会生成Cookie信息,并在响应中添加Cookie信息后返回,当再次向同一个服务器发送请求时,客户端会在请求报文中添加之前保存过的Cookie信息。

HTTP/1.1 中可使用的方法:GETPOSTPUTHEADDELETEOPTIONS
TRACECONNECT
常用的方法有GET(获取资源)、POST(更新资源)、PUT(传输文件)、HEAD(类似于GET,但不返回报文主题)、DELETE(删除文件)。
在HTTP/1.1中,所有的连接默认都是持久连接。而持久连接使得管线化得以实现,客户端发送请求后无需等待响应即可发送下一个请求。

常用状态码
  • 2xx 成功
  • 200 请求处理成功
  • 204 请求处理成功,但没有资源可返回
  • 206 成功执行范围请求
  • 3xx 重定向
  • 301 资源的资源已被永久分配了新的uri
  • 302 和301类似,但是302状态码代表的资源不是被永久移动,只是临时性质的。
  • 303 和302类似,但是明确要求客户端改用GET请求
    当301、302返回时,几乎所有的浏览器都会把POST改成GET,但标准是禁止将POST改成GET。
  • 304 表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况
  • 307 类似于302,但会遵照浏览器标准,不会从POST变成GET
  • 4xx 客户端错误
  • 400 请求报文中存在语法错误
  • 401 表示发送的请求需要有通过HTTP认证的认证信息,初次接收到401响应,会弹出认证用的对话窗口。第二次表示用户认证失败
  • 403 表示对请求资源的访问被服务器拒绝了(未获得文件系统的访问授权,访问权限出现问题等情况都可能是发生403的原因)
  • 404 服务器上无法找到请求的资源,也可以在服务器端拒绝请求且不想说明理由时使用。
  • 5xx 服务器本身发生错误
  • 500 表示服务器端在执行请求时发生了错误
  • 503 表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先知道解除以上状态需要的时间,最好写入RetryAfter首部字段再返回给客户端
HTTP/1.1规范定义了如下47种首部字段
通用首部字段
首部字段名 说明
Cache-Control 控制缓存的行为
Connection 逐跳首部、连接的管理
Date 创建报文的日期时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知
请求首部字段
首部字段名 说明
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
Authorization Web认证信息
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
if-Match 比较实体标记(ETag)
if-Modified-Since 比较资源的更新时间
if-None-Match 比较实体标记(与if-Match相反)
if-Range 资源未更新时发送实体Byte的范围请求
if-Unmodified-Since 比较资源的更新时间(与if-Modified-Since相反)
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节请求范围
Referer 对请求中URI的原始获取方
TE 传输编码的优先级
User-Agent HTTP客户端程序的信息
响应首部字段
首部字段名 说明
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
ETag 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息
实体首部字段
首部字段名 说明
Allow 资源可支持的HTTP方法
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小(单位:字节)
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified 资源的最后修改日期时间
通信的加密
  • HTTPS:超文本传输安全协议,用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了。而且SSL提供了证书这一途径,可用于确定双方身份。HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制
    HTTPS既可防止被窃听,还可以防止被篡改。
HTTPS通信过程
  • 将参与通信的内容本身加密(报文首部不会被加密,报文主体加密),但仍有被篡改的风险。

加密方式:共享密钥加密和公开密钥加密方式。
共享密钥加密双方共用一个密钥,但密钥的传递过程存在风险。公开密钥分为公钥和私钥,发送方通过公钥加密,接收方通过私钥解密,极难破解。
证书:用以证明服务端公钥的真实性。方式--服务端向双方信赖的第三方数字证书认证机构提出公开密钥的申请。第三方则用自己的私有密钥向服务端的公开密钥署数字签名并颁发公钥证书。客户端拿到公钥证书后,使用第三方的公钥向公钥证书签名,以确认服务器公钥的真实性。

SPDY,Google2010年发布,旨在解决HTTP的性能瓶颈,缩短Web页面的加载时间(50%)。其没有完全改写HTTP协议,而是在TCP/IP的应用层与运输层之间通过新加会话层的形式运作。同时,为了安全性,规定通信中使用SSL。由于以会话层控制数据的流动,且仍是采用HTTP建立通信,因此可照常使用GET和POST等方法、Cookie以及HTTP报文等。
优势:

  • 压缩HTTP首部
  • 推送功能。服务器可直接发送数据而不必等待客户端的请求。
  • 服务器提示功能。服务器可以主动提示客户端请求所需的资源。

至于HTTP2.0就不过多赘述,可以参考HTTP2.0主要改动,写得很详细。

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

推荐阅读更多精彩内容