互联网高度普及的现在,我们无时无刻不在网络上分享自己的点点滴滴,从智能手机到智能穿戴设备,从微信到微博、抖音。互联网的普及,让我们和世界的距离越来越近,但是物理世界是如何同虚拟世界建立联结的呢?一根网线如何能够点到点的数据传输的呢?
TCP/IP协议簇
如果你是一个虚拟世界的总设计师,你会设计出怎样的规则,来规定物理设备之间的数据传输,搭建从现实世界到虚拟世界桥梁?
假设你有两台电脑,你会如何设计,实现它们之间的通信呢?
物理层
首先存在各种各样不同的数据传输介质,比如电缆、光纤、无线电等,但是不同的传输介质本质上的作用都是将各种不同的信号转换为二进制数据。为了统一数据传输的规范,于是针对不同的传输介质,定义了不同的协议规范,比如电话网络modems-V、USB物理层、Bluetooth物理层、WiFi物理层、DSL等。
注:TCP/IP协议中不包括这一层,这里是为了解释整个数据传输协议分层的需要,才做介绍。
链路层
数据传输的问题解决之后,便要解决数据传输稳定性的问题,物理介质总是容易出错的,比如数据传输中断网、断电等,那如何针对这些问题进行容错处理,保证数据传输的稳定可靠呢?
数据传输发生差错时,就只能将发生差错的数据重复,我们则需要将二进制数据流组合成以帧为单位传输。每个数据帧除了包含要传输的数据外,还包括校验码,以检查传输中是否存在差错。
当真正发生差错时,我们还要考虑如何处理差错,是自动重发还是空闲时再重发。
由于不同介质的数据传输和接受能力的不同,我们则需要考虑数据接收方的处理能力来控制数据传输的速率。
网络层
数据传输的稳定性得到保证后,便是要实现如何在众多的机器中,将数据从源机器上准确地传输给目标机器。这一层便是开启虚拟世界大门的钥匙。它定义了机器之间在复杂的虚拟网络中如何进行数据传输的规则。IP,ICMP,IGMP等协议便是在这一层。
IP协议中则包含了协议版本、报头长度、总长度、数据分片标识、数据存活时间、源地址、目标地址、数据等信息。
传输层
同样的,网络中的数据传输问题解决后,我们便要保证在网络中数据传输的稳定性,网络中的数据传输的稳定性取决于硬件的状态。因此在这一层,我们同样要考虑,数据分割,差错控制,以及流量控制的问题。此外,由于此时是处在虚拟网络当中,我们还需要处理按端口寻址,连接管理等功能
TCP和UDP协议就处在这一层;TCP为两台主机提供了可靠的数据传输的机制,UDP则是提供了简单的数据传输服务,保证负责将数据从一台主机传输到另一台主机,并不能保证数据一定能够到达另一台主机。
应用层
数据传输的稳定性解决了之后,我们则需要制定针对应用程序的数据传输的规则。这一层规定了,运行在不同的操作系统的程序之间,如何传递报文。
这层的协议则规定了,报文类型,报文的语法,报文中的字段语义,程序之间如何发送报文并对报文进行响应。
其中的协议则包括DNS、FTP、SMTP、HTTP、Telnet等协议。
总结
TCP/IP协议簇是网络通信中最基本的通信协议,主要分为链路层,网络层,传输层和应用层。
各个分层都规定了实现相应功能的规范:链路层保证了物理链路中数据传输的稳定,网络层实现了源主机向目标主机准确传输数据的功能,传输层则规定了主机与主机之间数据传输的稳定性规范,应用层则定义了程序之间进行报文传输的规范。