基础
1.五层协议的体系结构分别是什么?每一层都有哪些协议?
通过上节的对比,可以看到OSI与TCP/IP体系都有成功和不足的地方。OSI的七层协议体系结构相对复杂,又不实用,但其概念清晰,体系结构理论也比较完整。TCP/IP协议应用性强,现在得到了广泛的使用,但它的参考模型的研究却比较薄弱。TCP/IP虽然是一个四层的体系结构,但实际上只有应用层、传输层和网络互连层三层,最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采用Andrew S.Tanenbaum建议的一种混合的参考模型。这是一种折中的方案,采用五层协议的体系结构,吸收了OSI和TCP/IP的优点,如图2-8所示,这样概念阐述起来既简洁又清晰。
下面简单介绍一下各层的主要功能,更详尽的讨论将在第3~7章展开。读者也只有认真学完后续章节的内容后才能更好地理解各层的作用。
物理层:物理层是五层体系结构中的底层。它的任务是利用传输介质为通信的网络结点之间建立、管理和释放物理连接,透明地传送比特流。“透明地传送比特流”表示上层协议只看到“0”、“1”比特流,而不用关心物理信号的传输,因而也就“看不见”物理层是如何实现比特流的传输的。物理层利用的一些物理媒体(如双绞线、同轴电缆、光缆等)并不在物理层协议之内而是在物理层协议的下面。因此也有人把这些物理媒体认为是网络体系结构的第0层。
数据链路层:数据链路层在五层体系结构中位于物理层和网络层之间,相对于高层,数据链路层所用的服务和协议都比较成熟。在发送数据时,数据链路层的任务是将在网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送以帧(frame)为单位的数据。每一帧都是由数据和一些必要的控制信息,如同步信息、地址信息、差错控制以及流量控制信息等组成的。
网络层:网络层在五层体系结构中位于数据链路层和传输层之间,它的作用是为分组交换网上的不同主机提供通信。而传输层的作用是为运行在不同主机中的进程提供逻辑通信。注意它们之间的区别。在发送数据时,网络层会把传输层产生的报文段或用户数据报封装成分组进行传送。网络层还有一个任务就是路由的选择,使源主机传输层所传下来的分组能够交付到目的主机。
传输层:传输层在五层体系结构中位于网络层和应用层之间,其作用是为运行在不同主机中的进程提供逻辑通信。
应用层:应用层是五层体系结构中的最高层。它可以根据用户所产生的服务请求确定进程之间通信的性质是否满足用户的需要。应用层直接为用户的应用进程提供服务。
图2-9直观地说明了分层的协议体系对应用进程中的数据的影响,数据是如何在各层之间进行传递的,以及在分层的协议体系传递过程中所发生的变化。
假定两台计算机是直接相连的,发送端的应用程序进程要与接收端的应用程序进程进行数据交换,具体过程如下:
1)发送端应用程序进程将它的数据发送到应用层,应用层数据加上本层的控制报头H5,形成应用层的协议数据单元,传到传输层。
2)传输层收到这个数据单元后,加上本层的控制报头H4,再向下交给网络层。
3)网络层进行同样的处理,加上本层的控制报头H3,再传到数据链路层。
4)数据链路层得到数据后,将控制信息分成两部分,分别加到本层数据单元的首部(H2)和尾部(T2),构成数据链路层的协议数据单元,再向下交给物理层。
5)数据到达物理层后,物理层将以比特流的方式将数据通过物理传输媒体传送到接收端主机。比特流是从有首部的这头开始传送的。
6)比特流到达接收端后,再从接收端的物理层开始依次上传,每层根据控制信息进行必要的操作,剥去控制信息,将剩下的数据单元上交给更高的一层。直到最后,把发送端应用程序进程发送的数据交给接收端的应用程序进程。
从这个过程可以看出数据在传送过程中有这样的特点:在发送端自顶向下层层添加控制信息,在接收端自底向上层层剥去控制信息。这样做有什么好处呢?首先,如果数据在传送过程中出现错误,可以根据这些控制信息及时发现和纠正,保证数据传送的可靠性。其次,上层的数据不含有下层的协议控制信息,这样相邻层之间可以保持相对独立性,下层具体实现方法的变化不会影响上层功能的执行。
应用程序进程间的数据交换是一个复杂的过程,但在用户看来,就好像发送端应用程序进程直接把它的数据交给了接收端应用程序进程。同理,图2-8中任何两个对等层之间,也好像直接把数据传送给对方一样。实际上对等层之间是没有直接通信能力的,这只是一种形式上的逻辑通信,需要依靠下面各层提供支持。
2.为何有MAC地址还要IP地址?
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议
mac地址通常是不变的,ip地址是可变的,尤其是移动设备,ip地址会经常变更。
mac地址的设计不携带设备在网络中的位置信息,想要通过mac地址通信,我们得在所有的设备上维护一张很大的表,记录所有mac地址路由在当前位置的的下一跳,这显然是不合理的。
MAC地址在固定的,类似于你的家庭住址,而ip地址是你的手机号码,如果在同一网络中,MAC地址也能通信,如果不在同一网络,就需要ip地址来找到通信对象