协议
什么是协议?我觉得要理解什么是协议,首先要知道他是属于计算机中的术语。另一方面,也要清楚认识到,计算机是“傻瓜式”的,他不会做什么多余的工作的,它会按照我们给他的命令执行工作。对于要实现在两台计算机之间实现数据传输,我们要给计算机设置好命令,比如,如何建立连接,怎么样进行传输,怎样结束连接等等。因此,协议就可以理解为我们给计算机设置的一系列规则。
TCP/IP协议族
定义
根据《图解HTTP》中的理解,TCP/IP协议族是指与网络通信有关的所有协议的集合。
特点
TCP/IP协议族最大的特点是实现结构上的分层
为什么要进行分层?
假设我们在整个数据传输的过程中只使用一个协议,那么如果此时我想对数据传输的某一个过程进行优化时,比如我想要在数据传输的过程中进行数据的加密,这时候使用一个协议统筹的话,可能要替换整个协议。相反,采用分层结构之后,对于不同的层使用不同的协议,这样的话,如果进行某一层的优化不会影响其他层,且各层分工明确又相互协作,提交了效率。
层次结构:4层
- 应用层:向应用程序提供系统服务。主要协议有:HTTP,FTP,DNS
- 传输层:提供处于网络连接之中的两台计算机之间的数据传输,主要协议有TCP,UDP
- 网络层:处理网络中的流动的数据包。该层规定了数据包通过怎样的路径到达对方计算机。如果两台计算机之间的数据传输需要通过路由器等中转站时,该层的作用是从多条路线中选择一条合适的路线。
- 数据链路层:处理网络连接中的硬件部分。主要是通过MAC地址进行两台主机之间的数据帧的传输。
具体传输流程
发送端:
- 在传输层构造HTTP请求,并将请求报文发送给传输层
- 在传输层,为了传输效率考虑,TCP协议将请求报文分割成以数据报为单位的数据包,并给每个数据包依次加上序号及端口号
- 在网络层,IP协议通过IP寻址和路由选择传送至数据链路层
- 在数据链路层,通过ARP协议获得在网络层获取到的接下来要传输的目标主机或路由器的MAC地址,通过MAC地址实现数据帧的传输。
接收端:
- 数据链路层
- 网络层
- 传输层
-
应用层
image.png
要注意的是,在发送的时候,每经过一层就会在请求头部加上该层专有的首部信息,同样,接收端在接收时每经过一层就删除所属该层的首部信息。
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
网友评论