图解HTTP----读书笔记

HTTP的历史

3 项 WWW 构建技术,分别是:把 SGML(Standard Generalized Markup Language,标准通用标记语言)做为页面的文本标记语言的浏览器

                                                      HTML(HyperText Markup Language,超文本标记语言);做为文档传递协议的 HTTP ; 指定文档所在地址的安全

                                                      URL(Uniform Resource Locator,统一资源定位符)服务器


HTTP/0.9 HTTP 于1990 年问世。那时的 HTTP 并无做为正式的标准被创建。如今的 HTTP 其实含有 HTTP1.0 以前版本的意思,所以被称为HTTP/0.9。网络

HTTP/1.0 HTTP 正式做为标准被公布是在 1996 年的 5 月,版本被命名为HTTP/1.0,并记载于 RFC1945。虽然说是初期标准,但该协议标准至今仍被普遍使用在服务器端。ide

HTTP/1.1 1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的标准是 RFC2068,以后发布的修订版 RFC2616 就是当前的最新版本。编码

HTTP/2.0 主要技术方向加密

 

 

TCP/IP

TCP/IP的分层管理

应用层:决定了向用户提供应用服务时通讯的活动。TCP/IP 协议族内预存了各种通用的应用服务。好比,FTP(FileTransfer Protocol,文件传输协议)和 DNS(Domain Name System,域名系统)服务就是其中两类。HTTP 协议也处于该层。spa

传输层:传输层对上层应用层,提供处于网络链接中的两台计算机之间的数据传输。在传输层有两个性质不一样的协议:TCP(Transmission ControlProtocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)。操作系统

网络层:用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了经过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间经过多台计算机或网络设备进行传输时,网络层所起的做用就是在众多的选项内选择一条传输路线3d

数据链路层:用来处理链接网络的硬件部分。包括控制操做系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括链接器等一切传输媒介)。硬件上的范畴均在链路层的做用范围以内

TCP/IP通讯传输流

 


 


 

 利用 TCP/IP 协议族进行网络通讯时,会经过分层顺序与对方进行通讯。发送端从应用层往下走,接收端则往应用层往上走。

举例来讲明,首先做为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。

接着在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

在网络层(IP 协议),增长做为通讯目的地的 MAC 地址后转发给链路层。

接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求

 


 

 

 

发送端在层与层之间传输数据时,每通过一层时一定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每通过一层时会把对应的首部消去。这种把数据信息包装起来的作法称为封装。

负责传输的 IP 协议

IP 协议的做用是把各类数据包传送给对方。而要保证确实传送到对方那里,则须要知足各种条件。其中两个重要的条件是 IP 地址和 MAC地址(Media Access Control Address)

IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址能够和 MAC 地址进行配对。IP 地址可变换,但 MAC地址基本上不会更改。使用 ARP 协议凭借 MAC 地址进行通讯IP 间的通讯依赖 MAC 地址。

在网络上,通讯的双方在同一局域网(LAN)内的状况是不多的,一般是通过多台计算机和网络设备中转才能链接到对方。而在进行中转时,会利用下一站中转设备的 MAC地址来搜索下一个中转目标。这时,会采用 ARP 协议(AddressResolution Protocol)。ARP 是一种用以解析地址的协议,根据通讯方的 IP 地址就能够反查出对应的 MAC 地址---------这种机制称为路由选择

 

TCP 协议

 

 TCP 位于传输层,提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理

 为了准确无误地将数据送达目标处,TCP 协议采用了三次握手

 

 

握手过程当中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement)

发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,表明“握手”结束。若在握手过程当中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包

各类协议与 HTTP 协议的关系

 

 

 

URL(UniformResource Locator,统一资源定位符)URL 正是使用 Web 浏览器等访问 Web 页面时须要输入的网页地址

 URI(统一资源标识符):URI 就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称

 

 

HTTP/1.0 和 HTTP/1.1 支持的方法

 

 

持久链接

 HTTP/1.1 和一部分的 HTTP/1.0 想出了持久链接(HTTP Persistent Connections,也称为 HTTP keep-alive 或HTTP connection reuse)的方法。持久链接的特色是,只要任意一端没有明确提出断开链接,则保持 TCP 链接状态

 

 

 

管线化 

持久链接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求

 

 

 

Cookie管理

 


 

 

 

 

 

HTTP报文

HTTP 报文大体可分为报文首部和报文主体两块。二者由最初出现的空行(CR+LF)来划分。一般,并不必定要有报文主体

 

 

编码提高传输速率

-报文(message)是 HTTP 通讯中的基本单位,由 8 位组字节流(octet sequence,其中 octet 为 8 个比特)组成,经过 HTTP 通讯传输。

-实体(entity)做为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

HTTP 报文的主体用于传输请求或响应的实体主体。

压缩传输的内容编码

经常使用的内容编码有如下几种
gzip(GNU zip)
compress(UNIX 系统的标准压缩)
deflate(zlib)
identity(不进行编码)

 

分割发送的分块传输编码

 

 

4 种 HTTP 首部字段类型

通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部。

请求首部字段(Request Header Fields)
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加
内容、客户端信息、响应内容相关优先级等信息。

响应首部字段(Response Header Fields)
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加
内容,也会要求客户端附加额外的内容信息。

实体首部字段(Entity Header Fields)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更
新时间等与实体有关的信息。

 

 

 

 

HTTPS

HTTP 主要有这些不足,例举以下

  • 通讯使用明文(不加密),内容可能会被窃听
  • 不验证通讯方的身份,所以有可能遭遇假装
  • 没法证实报文的完整性,因此有可能已遭篡改

HTTP+ 加密 + 认证 + 完整性保护
=HTTPS


经过和 SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通讯内容。用 SSL 创建安全通讯线路以后,就能够在这条线路上进行 HTTP通讯了。与 SSL 组合使用的 HTTP 被称为 HTTPS(HTTPSecure,超文本传输安全协议)或 HTTP over SSL

 

 

 报文完整性的方法,但事实上并不便捷、可靠。其中经常使用的是 MD5 和 SHA-1 等散列值校验的方法

相关文章
相关标签/搜索