图解 HTTP 学习笔记(一):网络基础

1. 网络基础 TCP/IP

我们使用的网络是在 TCP/IP 协议族的基础上运行的, HTTP 属于它内部的一个子集。

1. TCP/IP 协议族

计算机与网络设备之间需要相互通信、不同硬件和不同系统之间的通信,双方就必须基于相同的方法,所有的一切都需要一种规则,我们把这种规则称为协议。

把互联网相关联的协议的集合起来称为 TCP/IP 协议族。

2. TCP/IP 的分层管理

TCP/IP 协议族里重要的一点就是 分层 ,按照层次分为以下 4 层 (TCP/IP 概念层模型):

  • 应用层
  • 传输层
  • 网络层
  • 数据链路层 。

TCP/IP 的分层是有好处的,分层之后更容易管理,各层内部设计不受其它层的干扰,只考虑本层的职责。

2.1 TCP/IP 概念层模型

应用层

应用层决定了向用户提供应用服务时通信的活动。

HTTP 属于该层。

传输层

传输层对上层 (应用层) 提供处于网络连接中的两台计算机之间的数据传输。

传输层中有两个性质不同的协议:

  • TCP(Transmission Control Protocol,传输控制协议)
  • UDP(User Data Protocol,用户数据包协议)。
网络层

网络层用来处理在网络上流动的数据包 (数据包是网络传输的最小数据单位)。

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

链路层

用来处理连接网络的硬件部分。

控制硬件操作系统、硬件的设备驱动、NIC(网络适配器,即网卡)、光纤等物理可见部分的硬件部分均在链路层的范围之内。

2.2 TCP/IP 通信传输流

利用 TCP/IP协议族进行网络通信时,会通过分层顺序与对方通信,发送端从应用层往下走,接收端从链路层往上走。

发送端在层与层之间传递数据,没经过一层必定被打上一个该层所属的首部信息,反之,接收端在层与层之间传递数据时,每经过一层会把对应的首部信息去掉,具体见上图。

这种把信息包装起来的做法叫做封装。

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

1. 负责传输的 IP 协议

IP(Internet Protocol) 协议位于网络层。

IP 协议的作用是把各种数据包传送给对方,确保数据包正确传送到对方,需要满足各类条件,其中最重要的是 IP 地址MAC 地址 (Media Access Control Address)

  • IP 地址指明了节点被分配到的地址,可变换。
  • MAC 地址指的是网卡所属的固定地址,基本不会变更。

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

IP 间的通信依赖 MAC 地址。在网络通信过程中,进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。 ARP 协议是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。

2. 确保可靠的 TCP 协议

TCP 位于传输层,作用是提供可靠的字节流服务。

在上面对 TCP 的描述中,有两个关键字:

  1. 字节流服务:是指为了传输方便,将大块的数据分割为以报文段 (segment) 为单位的数据包进行管理。
  2. 可靠性:是指能够把数据准确的传送给对方。

三次握手:确保数据能达到目标

使用 TCP 协议把数据包发送出去, TCP 会向对方确认数据是否成功送达到对方。在握手中使用了 TCP 标志 – SYC(sychronize 同步) 和 ACK(acknowledgement 确认、收条)。

3. 负责域名解析的 DNS 服务

DNS( Domain Name System) 服务位于应用层,提供域名到 IP 地址之间的解析服务。

人们记忆主机名或域名比较容易,但是对于计算机处理 IP 地址比较容易些。为了解决以上问题,DNS 服务就应运而生。

DNS 协议通过域名查找 IP 地址,或者通过 IP 地址逆向查找域名的服务。

4. 各种协议与 HTTP 协议的关系

由上面的图中,我们可以看出在 HTTP 协议的通信过程中 TCP、IP 协议和 DNS 发挥的作用。

URI 和 URL

URI:Uniform Resource Identifiier,统一资源标识符
URL:Uniform Resource Locator,统一资源定位府

我们平时在 Web 页面输入的网页地址如:http://www.abc.com 就是 URL。

URI: 就是由某个协议方案表示的资的定位标识符,协议方案是指访问资源所用到的协议类型名称。常见的协议方案:http、ftp、file 等。

URI 用字符串标志某一互联网资源,而 URL 表示资源的地点(互联网上所处的位置),URL 是 URI 的子集。