@DevWiki
2015-07-23T12:51:26.000000Z
字数 2309
阅读 1864
HTTP学习笔记
更多内容详见:HTTP学习笔记系列
当我们在浏览器的地址栏输入URL之后,信息会被送到某处,然后从某处返回相应的内容,最后显示在浏览器上.
客户端
像这种通过发送请求获取服务资源的Web浏览器等,被称为客户端
Web使用一种名为HTTP的协议作为规范,完成从客户端到服务器端等一系列运作流程.
HTTP问世,但那是的HTTP存在多处的模糊不清,并没有被作为正式的标准被建立.
1996年5月HTTP正式被作为标准,版本命名为HTTP/1.0,并记载于RFC1945.
1997年1月公布的HTTP/1.1是目前主流的HTTP协议版本.当初的标准是RFC2068,之后发布的修订版RFC2616是当前的最新版.
通常我们使用的网络是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集.
计算机与网络设备要互相通信,双方就必须基于相同的方法.不同的硬件,操作系统之间的通信,所有的这一切都需要一种规则.而我们就把这种规则称为协议.
广义上讲:TCP/IP是互联网相关的各类协议族的总称,包括:TCP、IP、ICME、IEEE802.3、FDDI、HTTP、PPPoE、DNS、UDP、SNMP、FTP等.
侠义上讲:TCP/IP是指TCP和IP这两种协议.
TCP/IP协议族按层次分为以下4层:
- 应用层
- 传输层
- 网络层
- 数据链路层
应用层
应用层决定了向用户提供应用服务时通信的活动.
TCP/IP协议族内预存了各类通用的应用服务.比如:FTP(File Transfer Protocol,文件传输协议)、DNS(Domain Name System,域名系统)、HTTP(Hypertext Transfer Protocol,超文本传输协议)等;
传输层
传输层对应上层应用层,提供处于网络连接中的两台计算机之间的数据传输.
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议).
网络层(网络互联层)
网络层用来处理在网络上流动的数据包.
数据包是网络传输的最小数据单位.该层规定了通过怎样的路径到达对方的计算机,并把数据包传给对方.
链路层(网络接口层)
链路层用来处理连接网络的硬件部分.
硬件包括:控制操作系统,精简的设备驱动,NIC,及光纤等物理可见部分.
利用TCP/IP协议族进行通信时,通信传输流入下图所示:
以HTTP举例说明,客户端在应用层发出一个想看某个Web页面的HTTP请求.
发送端在曾与层之间传输数据时,每经过一层必定会被打上一个该层所属的首部信息.反之,接收端在层与层之间传输数据时,每经过一层必定会对应的首部消去.如下图所示:
按层次分,IP网际协议位于网络层.
IP协议的作用是把各种数据包传给对方.而要确保传到对方哪里,则需要满足各类条件,其中两个重要的条件是IP地址和MAC地址.
IP地址指明了节点被分配到的地址,MAC地址是网卡所属的固定地址.IP地址可以变换,但MAC地址基本不可变.
IP间的通信依赖MAC地址.在网络上,通信双方在同一局域网内的情况很少,通常是经过多态计算机和网络设备中转才能连接到对方,中转时会采用ARP协议根据通信方的IP地址反查出对应的MAC地址.
中转过程如下:
按层次分,TCP位于传输层,提供可靠的字节流服务.
所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理.
可靠的传输服务是指,能够把数据准确可靠地传给对方.
为了确保数据能准确地到达目标,TCP采用三次握手的策略,其过程如下图所示:
DNS服务和HTTP协议一样位于应用层的协议.
DNS提供域名到IP之间的解析服务.
解析过程如下图:
各种协议与HTTP的关系如下图所示:
URI是Uniform Resource Identifier的缩写,RFC2396的规定如下:
Uniform
规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来十倍资源指定的访问方式.
Resource
资源的定义是可标识的任何东西.
Identifier
表示可标示的对象.
综上可知:URI就是有某个协议方案表示的资源定位标识符.协议方案是指访问资源使用的协议类型名称.
标准的URI协议方案有30z种左右,其统一的资源标识符通用语法如下:
ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
URI的格式如下: