文章目录
HTTP历史
老的历史就不说了,只说1.0和1.1版本:
下面会说到RFC,Request For Comments 征求意见稿,虽然叫这个名字,实际上发布的RFC都是已经完成的工作。
HTTP/1.0
HTTP正式作为标准被公布是在1996年的5月,版本被命名为HTTP/1.0,并记载于RFC1945。虽说是初期标准,但该协议标准至今仍被广泛使用在服务器端。
RFC1945- Hypertext Transfer Protocol
HTTP/1.0 http://www.ietf.org/rfc/rfc1945.txt
HTTP/1.1
1997年1月公布的HTTP/1.1是目前主流的HTTP协议版本。当初的标准是RFC2068,之后发布的修订版RFC2616就是当前的最新版本。
RFC2616- Hypertext Transfer Protocol –
HTTP/1.1 http://www.ietf.org/rfc/rfc2616.txt
可见,作为Web文档传输协议的HTTP,它的版本几乎没有更新。新一代HTTP/2.0正在制订中,但要达到较高的使用覆盖率,仍需假以时日。
网络基础TCP/IP
为了理解HTTP,我们有必要事先了解一下TCP/IP协议族。
通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。
TCP/IP协议族
计算机与网络设备要相互通信,双方就必须基于相同的方法,所有的这一切都需要一种规则,而我们就把这种规则称为协议(protocol)。
TCP/IP是互联网相关的各类协议族的总称。(包括上图中的所有协议)
把与互联网相关联的协议集合起来总称为TCP/IP。
TCP/IP的分层管理
TCP/IP协议族按层次分别分为以下4层:应用层、传输层、网络层和数据链路层。
分层的好处:层次化之后,设计也变得相对简单了;把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。
TCP/IP协议族各层的作用如下。
应用层
应用层决定了向用户提供应用服务时通信的活动。
TCP/IP协议族内预存了各类通用的应用服务。比如,FTP(File TransferProtocol,文件传输协议)和DNS(Domain Name System,域名系统)服务就是其中两类。
HTTP协议也处于该层。
传输层
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。
TCP称为可靠协议,UDP是不可靠协议。
网络层(又名网络互连层)
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。
该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
链路层(又名数据链路层,网络接口层)
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。
TCP/IP通信传输流
下图以HTTP举例:
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。
这种把数据信息包装起来的做法称为封装(encapsulate)。
IP、TCP和DNS 简单介绍
IP
IP协议的作用:负责传输,就是把各种数据包传送给对方。
按层次分,IP(Internet Protocol)网际协议位于网络层。几乎所有使用网络的系统都会用到IP协议。TCP/IP协议族中的IP指的就是网际协议,协议名称中占据了一半位置,其重要性可见一斑。可能有人会把“IP”和“IP地址”搞混,“IP”其实是一种协议的名称。
IP协议,包括IPv4和IPv6两个协议,IPv4使用32位地址,IPv6使用128位地址。目前IPv4仍占主流。
而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址(Media AccessControl Address):
IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更改。
使用ARP协议凭借MAC地址进行通信:ARP协议(Address Resolution Protocol)。ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
TCP
按层次分,TCP位于传输层。
TCP协议的作用:提供可靠的字节流服务。
- 字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。
- 可靠的传输服务是指,能够把数据准确可靠地传给对方。
一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
三次握手
为了准确无误地将数据送达目标处,TCP协议采用了三次握手(three-wayhandshaking)策略。
用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。
握手过程中使用了TCP的标志(flag)——SYN(synchronize)和ACK(acknowledgement)。
过程:
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
DNS
DNS协议的作用:它提供域名到IP地址之间的解析服务(通过域名查找IP地址,或逆向从IP地址反查域名)。
DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议。
产生的原因:
用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。为了解决上述的问题,DNS服务应运而生。
综上:在一次HTTP请求中,上面的DNS、TCP、IP协议都会参与进来。
URI和URL
URI
URI是(Uniform Resource Identifier,统一资源标识符)。
RFC2396分别对这3个单词进行了如下定义。
- Uniform
规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式。另外,加入新增的协议方案(如http:或ftp:)也更容易。 - Resource
资源的定义是“可标识的任何东西”。不仅是文档文件,图像或服务(例如当天的天气预报)等能够区别于其他类型的,全都可作为资源。另外,资源不仅可以是单一的,也可以是多数的集合体。 - Identifier
表示可标识的对象。也称为标识符。
URI,统一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。
URI的结构组成
URI通常由三部分组成:
①资源的命名机制;
②存放资源的主机名;
③资源自身的名称。
(注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件
)
URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了
URL
URL(Uniform Resource Locator,统一资源定位符)。URL正是使用Web浏览器等访问Web页面时需要输入的网页地址。
URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。
通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL是URI概念的一种实现方式。
URL的一般格式为(带方括号[]的为可选项):
protocol://hostname[:port]/path/[;parameters][?query]#fragment
URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用://
符号隔开,
第二部分和第三部分用/
符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略。
协议方案是指访问资源所使用的协议类型名称。
采用HTTP协议时,协议方案就是http。除此之外,还有ftp、mailto、telnet、file等。标准的URI协议方案有30种左右。
URI和URL之间的区别
你可能觉得URI和URL可能是相同的概念,其实并不是,URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。
URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。
URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155785.html