记关于HTTP

281 阅读6分钟

网络基础

HTTP(HyperText Transfer Protocol,超文本传输协议),这种译法并不严谨,或许叫做超文本转移协议更为严谨一些。

URL(Uniform Resource Locator,统一资源定位符)。

WWW这一名称,是Web浏览器当年用来浏览超文本的客户端应用程序时的名称。现在则用来表示这一系列的集合,也可以简称为Web。

TCP/IP协议族,通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运行的,而HTTP属于它内部的一个子集。

计算机与网络设备要互相通信,双方必须基于相同的方法,比如:如何探测通信目标,由哪一边先发起通信,使用何种语言通信,怎么样结束通信,不同硬件,不同操作系统之间的通信,所有的这一切都需要一种规则,于是我们把这一种规则称为协议(protocol)。(IEEE802.3,FDDI,ICMP,TCP,HTTP,IP,DNS,FTP,SNMP,PPPoE,UDP,IP)等...

TCP/IP是指具体的TCP协议和IP协议还是实在IP协议的通信过程中使用到协议族的统称呢?

TCP/IP协议族分层:

应用层

传输层

网络层

数据链路层

分层的优势既是灵活

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

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

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

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

TCP/IP通信传输流

[客户端]:HTTP <==> TCP <==> IP <==> 网络

         应用层        传输层      网络层     链路层 ↑↓
             

[服务端]:HTTP <==> TCP <==> IP <==> 网络

[客户端]:HTTP数据 => [TCP首部 [HTTP数据]] => [IP首部 [TCP首部 [HTTP数据]]]=>[以太网首部 [IP首部 [TCP首部 [HTTP数据]]] ]

[服务端]: [以太网首部 [IP首部 [TCP首部 [HTTP数据]]] ] => [IP首部 [TCP首部 [HTTP数据]]] => [TCP首部 [HTTP数据]] => HTTP数据

与HTTP关系密切的协议:IP、TCP和DNS

按层次分,IP(Internet Protocol)网际协议位于网络层。Internet Prorocol 这个名称可能听起来有点夸张,但事实正是如此,因为几乎所有使用网络的系统都会用到IP协议。TCP/IP协议族中的IP指的就是网际协议,协议名称中占据了一半的位置。

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

IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址,IP地址可以和MAC地址进行配对,IP地址可变换,但MAC地址基本上不会更改。

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

确保可靠的TCP协议。TCP位于传输层,提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service)是指为了方便传输大数据时将数据分割为以报文段为单位的数据包进行管理。而可靠的传输服务是指,能够准确无误的将数据传递给对方。一言蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP亦能够确认数据是否最终到达对方。

三次握手:首先发送端会发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带有SYN/ACK标志的数据包以示数据已经接收到,最后发送端发送一个ACK标志的数据包,代表握手结束。

解析域名的DNS服务。每一个域名都有对应的IP地址,DNS服务提供IP查询域名以及反向通过域名查询IP地址的服务。

URI统一资源标识符

URI是URI是Uniform Resource Identifier的缩写,RFC2396分别对这三个单词进行了如下定义。

Uniform:规定统一格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源制定的访问方式。另外,加入新增的协议方案(如:http或ftp)也更容易。

Resource:资源的定义是:“可标识的任何东西”。不仅仅是文档文件,图像或是服务等能够区别于其他类型的,全部都可当作资源。另外,资源不仅仅可以是单一的,也可以是多数的集合体。

Identifier:表示可标识的对象,也称作标识符。

URL是URI的子集,URI表示的某一互联网资源,URL表示资源的地点,L(location,位置)。

绝对URI格式: “user:pass@www.example.com:80/dir/index.h…

上述URI中包含:

协议方案:http://

登录信息:user:pass

服务器地址:www.example.com

服务端口号:80

带层次的文件路径:/dir/index.html

查询字符串:uid=1

片段字符串:#ch1