网络体系结构与网络协议
《易经》说:“天地万物,阴阳五行,相生相克,周而复始,皆有规律可循”。为了使世间各种事情有条不紊、规律的朝着人们所期待的方向行进,我们总是喜欢发现规律、总结规律、创造规定、利用规律。如此一来,当前人在考虑计算机网络的通信与资源交互时,必然要创造出统一遵守的计算机通信与资源交互的规定,以方便人们使用计算机进行有条不紊的大规模的数据、资源交换。
如此,人们就制定了大量的标准,这些标准规定了计算机网络通信与数据交换所需的共同遵守的条规,这些标准就是协议。大量的各种各样的协议共同构成了一套完整的体系。由于大量的协议体系过于复杂,于是人为的将这套协议体系划分为几个层次,这样一来,大量的协议就容易分门别类的化整为零,将协议一层一层的实现。由计算机互联通信所需的功能,,划分成定义明确的层次,规定了同层次进程通信的协议和相邻层之间的接口服务(接口可理解为下层与上层交互的门户,下层通过接口向上层提供特定的服务)。这些层、同层进程通信的协议及相邻层接口统称为网络体系结构。
在学习网络体系结构和协议时,不免要和RFC打交道。RFC是tcp/ip协议族的标准文档,里面写有4000多个协议的定义。在那么多的协议中,tcp、ip协议可以说是互联网最基本的两个通信协议,tcp/ip的五层分层原理应用十分常见。这五层,从上往下依次是:应用层、传输层、网络层、数据链路层和物理层。它们之间的通信服务类型可分为面向连接服务和无连接服务,混合上确认机制,共有四种服务类型。分别是面向连接确认服务、无连接确认服务、面向连接不确认服务和无连接不确认服务。根据通信要求,权衡效率与可靠性后,可选择合适的通信服务类型。
在最高层应用层里,有FTP协议、Telnet协议、HTTP协议、DNS协议等等。在传输层中,有著名的TCP和UDP协议。
在下层网络层里面,有IP协议、ICMP协议、IGMP协议、ARP协议、RARP 等协议。
在数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC 编码,为最后的数据传输做准备。PPP协议、Ethernet协议、HDLC(高级链路控制协议)等协议在这一层。
最低层物理层,属于硬件层次。负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等。所以有些书并不把这个层次放在tcp/ip协议族里面,因为它几乎和tcp/ip协议的编写者没有任何的关系。
发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。
为了便于理解网络体系结构层次与协议,以下从最底层开始向最高层依次作出说明。
物理层确保原始的数据可在各种物理媒体上传输,主要为数据端设备提供传送数据通路、传输数据。这一层的媒介有:光纤、电缆、信道、路由器、中继器、交换机、网卡(也工作在数据链路层)甚至插头和双绞线等,都属于物理层的媒介。传输时数据单位为比特。物理层的设计解决了所有物理接口特性不一致的问题。
数据链路层有三个目的:1为IP模块发送和接收IP数据报;2为ARP模块发送ARP请求和接收ARP应答;3为RARP发送RARP请求和接收RARP应答。
ARP叫做地址解析协议,用IP地址转换为MAC地址的一种协议。RARP叫做逆地址解析协议。这一层的协议主要有:以太网协议(网卡)协议,ppp协议(adsl 宽带)和loopback协议等。二层交换机、网卡(也工作在物理层)、网桥都工作在数据链路层。数据链路层提供的功能主要有:差错控制、流量控制、透明传输和MAC寻址等。此层使用的通信信道有:点到点信道(收发一对一)和广播信道(发收一对多)。传输时数据单位为帧。此层提供无连接不确认服务、无连接确认服务和面向连接确认服务。数据链路层提供了并行数据向串行数据转换的过程,即使得计算机终端的数据可以在物理层上传输。
第三层网络层。主要负责把网络协议数据通过路由选择、阻塞控制和网际互联等方式选择适当路径发送到目的端计算机,是实现端对端的数据透明传送。网络层中的IP协议是TCP/IP协议族的最主要的协议之一。
IP协议提供的是“尽力而为”的不可靠、无连接的传输服务;主要的功能有无连接数据报传送、数据报路由选择和差错控制。在网络层与其相关的协议有:ARP协议、RARP协议、ICMP协议和IGMP协议。ARP协议是地址解析协议,就是在主机将数据帧发送到目标主机前,将目标IP地址转换成目标主机的MAC 地址的过程。RARP协议则是通过每个计算机唯一的MAC地址来寻找出拥有此MAC地址的目标主机的IP地址。ICMP是因特网控制报文协议,是面向无连接的协议。主要是因为IP协议是不可靠的协议,没有差错控制和查询机制,所以用ICMP来传输出错报告控制信息,包括报告错误、交换受限控制和状态信息等。网络层的传输数据时数据单位是分组。常用的Ping命令和Windows下的Tracert 命令都是基于ICMP协议的。IGMP是因特网组管理协议,可以使计算机向邻近的路由器报告它的广播组成员。
第四层是传输层。它分割并重组上层提供的数据,在终端用户之间提供透明的数据传输服务。主要功能有分组、重组数据、端口寻址、连接管理、差错控制、流量控制和纠错。在传输层,有TCP和UDP两大协议。TCP协议是一个可靠的面向连接的协议,UDP是不可靠的无连接的协议。
TCP协议规定在传输前需要进行著名的“三次握手”来建立连接;传输过程中,双方的协议模块继续进行通信;通信结束后,双方还要使用改进的三次握手来关闭连接。“三次握手”需要进行三次数据报的交换,系统开销较大;但是,TCP 在传输过程中确保了传输的可靠性:1是在“三次握手”后,序列号被初始化,所以在传输过程中,TCP继续用此序列号标记发送的数据报,接受端可以依据序列号重装收到的数据,解决数据报的乱序问题;2是在传输过程中,接收方收到一个数据段后,会用ACK应答码向发送端回复一个IP包进行应答,确认号ACK (应答号)用来告诉发送端哪些数据包已经成功接收,发送方对未被应答的报文段提供重传,解决数据报丢失的问题;3是接收端收到数据段后,查看序列号,如果已经成功接收该数据包,则丢弃后面这个数据段,解决数据报传输重复的问题;4是延时造成的第一个问题,就是数据包达到接收端时乱序。当延时严重时,接收端一直未收到数据段,则不会回复ACK,发送端认为丢包,重发,这样就可以解决传输延时的问题。需要注意的是“三次握手”实际上是面向虚电路的,逻辑上的,物理上不存在的连接。传输层传输数据时的数据单位为报文。
UDP协议因为是不可靠的无连接的协议,不需要进行“三次握手”式的保证通信方法,所以占用系统的资源开销相比TCP协议而言较小。如此一来,UDP 可以高效率的重传出现问题(如丢失)的数据包。因此,UDP协议适宜用在高效可靠的网络环境、轻权通信(传输数据量很小)、对实时性要求强(如:视频