网络体系结构与网络协议
《易经》说:“天地万物 , 阴阳五行 , 相生相克 , 周而复始 , 皆有规律可循”。为了使世间各种事情有条不紊、规律的朝着人们所期待的方向行进, 我们总是喜欢发现规律、总结规律、创造规定、利用规律。如此一来,当前人在考虑计算机网络的通信与资源交互时,必然要创造出统一遵守的计算机通信与资源交互的规定,以方便人们使用计算机进行有条不紊的大规模的数据、资源交换。
如此,人们就制定了大量的标准,这些标准规定了计算机网络通信与数据交换所需的共同遵守的条规, 这些标准就是协议。大量的各种各样的协议共同构成了一套完整的体系。由于大量的协议体系过于复杂, 于是人为的将这套协议体系划分为几个层次, 这样一来, 大量的协议就容易分门别类的化整为零, 将协议一层一层的实现。由计算机互联通信所需的功能,,划分成定义明确的层次,规定了同层次进程通信的协议和相邻层之间的接口服务 (接口可理解为下层与上层交互的门户,下层通过接口向上层提供特定的服务。这些层、同层进程通信的协议及相邻层接口统称为网络体系结构。
在学习网络体系结构和协议时,不免要和 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是接收端收到数据段后,查看序列号, 如果已经成功接收该数据包, 则丢弃后面这个