美文网首页
HTTP入门知识的记录

HTTP入门知识的记录

作者: 庄超人 | 来源:发表于2016-05-03 22:27 被阅读0次

本文内容基本来自于《图解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主要改动,写得很详细。

相关文章

  • HTTP入门知识的记录

    本文内容基本来自于《图解HTTP》一书,只是对其中个人相对重要的内容进行记录,以便日后查找。 协议:不同的硬件、操...

  • WEB 前后端开发学习资料

    1.前端 基础入门知识 语言基础入门知识的网站:http://www.runoob.com/ CSS/HTML 基...

  • ReactNaticve入门1

    记录入门过程。希望对大家有所帮助。入门网站:http://wiki.jikexueyuan.com/project...

  • 软件程序学习

    一、理论知识 1、HTTP协议 资料:阮一峰的HTTP协议入门 2、软件架构 资料:阮一峰的软件架构入门 3、MV...

  • 《图解HTTP》读书笔记(3)

    记录方式: 主要根据目录记录主要的知识点,HTTP相关知识点书中写的很容易理解,建议阅读《图解HTTP》 Part...

  • 入门级知识

    入门知识_1 入门知识_2 入门知识_3 入门知识4

  • 《图解HTTP》读书笔记(1)

    记录方式: 主要根据目录记录主要的知识点,HTTP相关知识点书中写的很容易理解,建议阅读《图解HTTP》 1.Pa...

  • 《图解HTTP》读书笔记(2)

    记录方式: 主要根据目录记录主要的知识点,HTTP相关知识点书中写的很容易理解,建议阅读《图解HTTP》 3.Pa...

  • OpenGL (二)OpenGL入门理论知识

    @[TOC](OpenGL (二)OpenGL入门理论知识) OpenGL 学习网址 http://www.ope...

  • 【网络学习笔记】HTTP基础知识点

    目录 HTTP协议是很基础但又很容易被忽略的知识。本篇文章整理了HTTP协议相关的基础知识点,适合入门学习的同学。...

网友评论

      本文标题:HTTP入门知识的记录

      本文链接:https://www.haomeiwen.com/subject/mralrttx.html