HTTP协议

本文章是图解HTTP书籍阅读笔记

HTTP

1.1 TCP /IP 的分层管理

TCP/IP 协议族里重要的一点就是分层。TCP/IP 协议族按层次分别
分为以下4层:应用层、传输层、网络层和数据链路层
把TCP/IP 层次化是有好处的。比如,如果互联网只由一个协议统
筹, 某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层
之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后,
每个层次内部的设计就能够自由改动了。值得一提的是,层次化之后,设计也变得相对简单了。处于应用层上的应用可以只考虑分派给自己的任务,而不需要弄清对方在地球上哪个地方、对方的传输路线是怎样的、是否能确保传输送达等问题。
TCP/IP 协议族各层的作用如下。

  • 应用层
    应用层决定了向用户提供应用服务时通信的活动。
    TCP/IP 协议族内预存了各类通用的应用服务。比如, FTP ( File Transfer Protocol , 文件传输协议)和DNS ( Domain Name System,域名系统)服务就是其中两类。
    HTTP 协议也处于该层。
  • 传输层
    传输层对上层应用层,提供处于网络连接中的两台计算机之间的
    数据传输。在传输层有两个性质不同的协议: TCP ( Transmission Control Protocol, 传输控制协议)和UDP (User Data Protocol, 用户数据报协议)。
  • 网络层(又名网络互连层)
    网络层用来处理在网络上流动的数据包。数据包是网络传输的最小
    数据单位。该层规定了通过怎样的路径( 所谓的传输路线) 到达对
    方计算机, 并把数据包传送给对方。
    与对方计算机之间通过多台计算机或网络设备进行传输时, 网络层
    所起的作用就是在众多的选项内选择一条传输路线。
    链路层(又名数据链路层, 网络接口层)
    用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱
    动、NIC (Network Interface Card, 网络适配器, 即网卡),及光纤
  • 链路层
    用来处理链接网路硬件部分,包括控制操作系统,硬件的设备驱动光纤线路,硬件范畴的均在链路层作用范围内
    20190817164032.png
    应用层以浏览网页为例 应用层发送一个Http请求
    传输层将上层的应用层的数据分割,编号,用特定的编号发送出去
    在网络层ip协议,增加作为通讯目的MAC地址转发给数据链路层
    服务器按顺序往上层发送直到应用层

20190817165358.png
发送端每经过一层增加一层头部和尾部,接收端没经过一层会把对应的首部和尾部消去。

负责传输的IP 协议

按层次分, IP ( In ternet Protocol) 网际协议位于网络层。Internet
Protocol 这个名称可能听起来有点夸张,但事实正是如此,因为几乎所
有使用网络的系统都会用到IP 协议。TCP/IP 协议族中的1P 指的就是网
际协议,协议名称中占据了一半位置,其重要性可见一斑。可能有人会
把" IP" 和" JP 地址”搞混, " IP " 其实是一种协议的名称。
IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对
方那里,则需要满足各类条件。其中两个重要的条件是1P 地址和MAC
地址(Media Access Control Address )。
IP 地址指明了节点被分配到的地址, MAC 地址是指网卡所属的固
定地址。IP 地址可以和MAC 地址进行配对。IP 地址可变换,但MAC
地址基本上不会更改

使用ARP 协议凭借MAC 地址进行通信

IP 间的通信依赖MAC 地址。在网络上,通信的双方在同一局域网
( LAN) 内的情况是很少的,通常是经过多台计算机和网络设备中转才
能连接到对方。而在进行中转时, 会利用下一站中转设备的MAC 地址
来搜索下一个中转目标。这时, 会采用ARP 协议( Address Resolution
Protocol )。A即是一种用以解析地址的协议,根据通信方的IP 地址就
可以反查出对应的MAC 地址。

三次握手

20190817170814.png

DNS

负责域名解析的DNS 服务DNS ( Domain Name System ) 服务是和HTTP 协议一样位于应用层
的协议。它提供域名到IP 地址之间的解析服务。
计算机既可以被赋予IP 地址,也可以被赋予主机名和域名。比如
www.hackr.jp 。
20190817170909.png

一次浏览网页发生了什么

20190817170943.png

URI&URL

20190817171336.png
URI 在于I(Identifier)是统一资源标示符,可以唯一标识一个资源。URL在于Locater,一般来说(URL)统一资源定位符,可以提供找到该资源的路径,比如http://www.zhihu.com/question/21950864,但URL又是URI,因为它可以标识一个资源,所以URL又是URI的子集。举个是个URI但不是URL的例子:urn:isbn:0-486-27557-4,这个是一本书的isbn,可以唯一标识这本书,更确切说这个是URN。总的来说,locators are also identifiers, so every URL is also a URI, but there are URIs which are not URLs.

HTTP 支持的方法

20190817171946.png

持久连接节省流量

20190817172549.png
以当年的通信情况来说,因为都是些容握很小的文本传输,所以即
使这样也没有多大问题。可随着HTTP 的普及,文档中包含大蜇图片的
情况多了起来。
比如, 使用浏览器浏览一个包含多张图片的HTML 页面时, 在发
送请求访问HTML 页面资源的同时, 也会请求该HTML 页面里包含的
其他资源。因此,每次的请求都会造成无谓的TCP 连接建立和断开,
增加通信量的开销。

  • 持久连接
    为解决上述TCP 连接的问题, HTTP/1. 1 和一部分的HTTP/1.0 想出
    了持久连接( HTTP Persistent Connections , 也称为HTTP keep-alive 或
    HTTP connection reuse) 的方法。持久连接的特点是,只要任意一端没
    有明确提出断开连接,则保持TCP 连接状态。
    20190817172938.png
  • 管线化
    持久连接使得多数请求以管线化( pipelining) 方式发送成为可能。
    从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术
    出现后,不用等待响应亦可直接发送下一个请求。
    这样就能够做到同时并行发送多个请求,而不需要一个接一个地等
    待响应了。
    20190817173254.png

压缩传输的内容编码

向待发送邮件内增加附件时,为了使邮件容最变小,我们会先用
ZIP 压缩文件之后再添加附件发送。HTTP 协议中有一种被称为内容编
码的功能也能进行类似的操作。内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。
20190817173501.png

分割发送的分块传输编码

服务器在HTTP 通信过程中, 请求的编码实体资源尚未全部传输完成之
前,浏览器无法显示请求页面。在传输大容损数据时,通过把数据分割
成多块, 能够让浏览器逐步显示页面。这种把实体主体分块的功能称为分块传输编码( Chunked Transfer Coding )。
分块传输编码会将实体主体分成多个部分( 块)。每一块都会用
十六进制来标记块的大小,而实体主体的最后一块会使用"O(CR+LF)"
来标记。20190817174842.png
使用分块传输编码的实体主体会由接收的客户端负责解码, 恢复到
编码前的实体主体。
HTTP/1. 1 中存在一种称为传输编码( Transfer Coding) 的机制,它
可以在通信时按某种编码方式传输,但只定义作用千分块传输编码中。

3.4 发送多种数据的多部分对象集合

20190817174911.png

  • multipart/form~data
    在Web 表单文件上传时使用。
  • multipart/byteranges
    状态码206 ( Partial Content, 部分内容)响应报文包含了多个范
    围的内容时使用。,047
  • multipart/form-data

状态码表格

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值