计算机网络基础之TCP/IP协议层 与 DNS协议,IP协议,ARP协议


协议

什么是协议? 我觉得要理解什么是协议,首先要知道他是属于计算机中的术语。另一方面,也要清楚认识到,计算机是“傻瓜式”的,他不会做什么多余的工作的,它会按照我们给他的命令执行工作。对于要实现在两台计算机之间实现数据传输,我们要给计算机设置好命令,比如,如何建立连接,怎么样进行传输,怎样结束连接等等。因此,协议就可以理解为我们给计算机设置的一系列规则。

TCP/IP协议族

定义

根据《图解HTTP》中的理解,TCP/IP协议族是指与网络通信有关的所有协议的集合。

特点

TCP/IP协议族最大的特点是实现结构上的***分层***

为什么要进行分层?

假设我们在整个数据传输的过程中只使用一个协议,那么如果此时我想对数据传输的某一个过程进行优化时,比如我想要在数据传输的过程中进行数据的加密,这时候使用一个协议统筹的话,可能要替换整个协议。相反,采用分层结构之后,对于不同的层使用不同的协议,这样的话,如果进行某一层的优化不会影响其他层,且各层分工明确又相互协作,提交了效率。

层次结构:4层

  • 应用层:向应用程序提供系统服务。主要协议有:HTTP,FTP,DNS
  • 传输层:提供处于网络连接之中的两台计算机之间的数据传输,主要协议有TCP,UDP
  • 网络层:处理网络中的流动的数据包。该层规定了数据包通过怎样的路径到达对方计算机。如果两台计算机之间的数据传输需要通过路由器等中转站时,该层的作用是从多条路线中选择一条合适的路线。
  • 数据链路层:处理网络连接中的硬件部分。主要是通过MAC地址进行两台主机之间的数据帧的传输。

具体传输流程

发送端:

  • 在传输层构造HTTP请求,并将请求报文发送给传输层
  • 在传输层,为了传输效率考虑,TCP协议将请求报文分割成以数据报为单位的数据包,并给每个数据包依次加上序号及端口号
  • 在网络层,IP协议通过IP寻址和路由选择传送至数据链路层
  • 在数据链路层,通过ARP协议获得在网络层获取到的接下来要传输的目标主机或路由器的MAC地址,通过MAC地址实现数据帧的传输。

接收端:

  • 数据链路层
  • 网络层
  • 传输层
  • 应用层
    计算机网络基础之TCP/IP协议层 与 DNS协议,IP协议,ARP协议

要注意的是,在发送的时候,每经过一层就会在请求头部加上该层专有的首部信息,同样,接收端在接收时每经过一层就删除所属该层的首部信息。

DNS协议

DNS,全名叫“域名解析系统”,提供IP地址和域名之间的***双向解析***服务。

DNS的解析过程

域名的层级结构如下:

主机名. 次级域名. *域名. 根域名

以查询zh.wikipedia.org为例:

  • 客户端首先会将查询报文发送至本地DNS服务器,DNS服务器会首先检查自身缓存,如果存在记录则直接返回结果。
  • 如果缓存过期或者缓存不存在:
    • DNS服务器会发送查询报文到根域名服务器,获取其对应的*域名.org对应的根域名服务器地址。
    • DNS服务器发送查询报文到*域名.org的权威域名服务器,获取其对应的次级域名.wikipedia.org的权威域名服务器的地址
    • DNS服务器发送查询报文到次级域名wikipedia.org的权威域名服务器,获得主机zh的A记录(主机记录,用于将主机名映射为相应的IP地址),存入自身缓存并返回给客户端。

查询的类型

  • 递归查询:主要是客户端的查询方式。 客户端发送查询报文到本地DNS服务器 ——> 获得最终结果
  • 迭代查询:一般是DNS服务器之间的查询方式。主要是本地DNS服务器查询主机IP地址的过程。

IP协议

要注意,IP协议和IP地址的区别。IP协议是指一种协议,是规则。IP地址是节点被分配到的地址。

功能

  • IP寻址:对网络层而言,通过IP地址进行相互之间的通信。
  • 路由选择
    • 对于处于同一局域网的计算机之间的通信,通过数据链路层就可以完成相互通信。对于不同的网络之间的通信,需要借助路由器等第三方设备。
    • 当需要借助第三方设备即需要路由选择时,在传输转送的过程中,计算机和路由器只知道粗略的传输路线。就像发快递,到达一个转运点后,由那个转运点决定下一站发到哪里。

ARP协议

地址解析协议,指将目标IP地址转换为目标MAC地址的过程。主要功能为MAC寻址。

  • 同一局域网中,两台计算机通过MAC地址就可以实现通信。
  • 非同一局域网中,即使知道了目标主机的MAC地址也不能进行直接通信,必须经过路由转发才可以。此时,发送端获取到的不是真正的目的主机的MAC地址,而是路由器的MAC地址。然后,将数据帧发送给路由器,由路由器继续进行数据的转发。

参考文档

  • *
  • 阮一峰老师
  • 图解HTTP