HTTP协议 网络协议

我们访问某个网站的时候,首先要在浏览器的地址栏中输入网址,然后回车,浏览器就会呈现出我们需要的 Web 界面。

这个界面是如何产生的呢? 我们在浏览器中输入的URL(网址),浏览器就会从服务器端获取对应的文件资源等信息,然后将资源显示在浏览器上面,这就是我们看到的界面。

像这种通过发送请求获取服务器资源的 Web 浏览器等,都可以称之为客户端(Client)。

Web 使用 HTTP 协议作为规范,来完成从客户端到服务端等一系列的运作流程,而协议指的就是规则的约定。

为了理解 HTTP,有必要简单介绍下 TCP/IP 协议族

计算机与网络设备之间互相通信,双方就必须基于同样的方法。比如:如何发现通信目标、由谁发起通信、使用什么语言通信、怎么结束通信都需要事先确定,所有这些都需要一种规则,这种规则就是协议。协议中存在多种的内容:从电缆的规格到 IP地址的选定方法,寻找异地用户的方法,建立通信的顺序,以及 Web 页面显示需要处理的步骤等等。

我们把与这些与互联网相关联的协议,合在一起起统称为 TCP/IP。

 

1. TCP/IP 的分层

TCP/IP 很重要的一个特点就是分层。按照层次分为以下四层:应用层、传输层、网络层、数据链路层

分层的好处:如果互联网只由一个协议统筹,那么某一地方出问题,整体都会出现问题,无法使用;分层后,只需替换出现问题的或者需要修改的即可,而且分层后针对具体的设计也变得更为简单。

1)应用层

应用进程间通信交互的规则。

TCP/IP 协议族预存了各类通用的应用服务,比如:

ftp:文件传输协议

dns:域名系统协议

http:万维网应用协议

smtp:电子邮件协议

以上几种是常用的几种,还有很多其他的协议,感兴趣的可以找找其他专业的书籍看看。

2)传输层

提供处于网络连接中的两台计算机间的数据传输,其中包括TCP和udp两种性质不同的协议。

TCP:传输控制协议,传输的单位为报文段,提供面向连接的,可靠的数据传输服务。

udp:传输单位为用户数据报,它是尽最大努力的提供数据传输服务,不保证可靠性。

3)网络层

又名网络连接层。

用来处理在网络上流动的数据包(封装)。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机并把数据包传给对方。

4)链路层

又名数据链路层,网络接口层。

处理连接网络的硬件部分。比如控制操作系统、硬件的驱动、网络适配器、光钎等。

5)数据的封装

用户端发送一个请求,从应用层开始,一直到链路层,每一层都会被打上该层所属的首部信息;反之,接收端在层与层之间传输时,每经过一层会去掉该层的首部信息,这种做法叫做封装。

 

2. 与 HTTP 密切相关的协议

1) IP 协议

位于网络层,作用是把各种数据包传送给对方,而要准确的把数据传送给对方,就需要满足各类条件,其中有2个很重要的条件:IP地址和 MAC 地址。

IP 地址相信有点基础的人都知道,就是节点被分配到的地址,MAC 地址则是指网卡所属的固定地址,IP 和 MAC 地址可以进行配对。

IP 间的通信依赖于 MAC 地址,在信息传输中,有时候由于中转太多,因此会采用 ARP 协议,这是个用来解析地址的协议,通过 IP地址就可以反查出对应的 MAC 地址。

2. TCP 协议

位于传输层,确保传输的可靠性。

数据传输中为了传输方便,会将大块数据分割成报文段,而 TCP 协议能确认数据最终是否传送给对方。

为了准确传输,传输中采用了三次握手策略(这种手段可以理解为多次确认,来确保数据传输的可靠性)。

3. dns协议

负责域名解析,位于应用层,提供域名 IP 地址间的解析。

通过域名查找 IP 地址,或者逆向从 IP 地址反查域名。

 

3. URL 和 URI

URL:统一资源定位符:表示资源的地点,具体指向(门牌号)。

URI:统一资源标识符:用字符串标识某些互联网资源(该门牌号的地方具体有什么资源)。

URL 是 URI 的子集。

TCP/IP的含义,一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称。具体点,IP或ICMP、TCP或UDP、TELENT或FTP、以及HTTP等都属于TCP/IP协议,而TCP/IP一词泛指这些协议,有时称它们为TCP/IP为网际协议族/TCP/IP协议族。