1. 协议分层与OSI参考模型
协议分层就如同计算机软件中的模块化开发,OSI参考模型的建议是比较理想化的。
OSI参考模型中每个层的作用:
7层通信实例:假设主机A的用户A要给主机B的用户B发送一封电子邮件:
发送方从第7层、第6层到第1层由上至下按照顺序传输数据,而接收端则从第1层、第2层到第7层由下至上向每个上一级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复为原装。
2. TCP/IP与OSI参考模型
上图列出了TCP/IP与OSI分层之间的大概关系,不难看出,TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。
2.1 硬件(物理层)
TCP/IP的最底层是负责数据传输的硬件。这种硬件就相当于以太网或者电话线路等物理层的设备。
2.2 网络接口层(数据链路层)
网络接口层利用以太网中的数据链路层进行通信,因此属于接口层。也就是说,把它当作让NIC起作用的“驱动程序”也无妨。驱动程序是在操作系统与硬件之间起桥梁作用的软件。计算机的外围附加设备或扩展卡,不是直接插到电脑上或电脑的扩展槽上就能马上使用的,还需要有相应驱动程序的支持。
2.3 互联网层(网络层)
互联网层使用IP协议,它相当于OSI模型中的第3层网络层。IP协议基于IP地址转发分包数据。
TCP/IP分层中的互联网层与传输层的功能通常由操作系统提供。尤其是路由器,它必须得实现通过互联网层转发分组数据包的功能。
此外,链接互联网的所有主机跟路由器必须都实现IP的功能。其他连接互联网的网络设备(如网桥、中继器或者集线器)就没必要一定实现IP或TCP的功能。
2.3.1 IP
IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。
IP还隐藏着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的低层数据链路都能够实现通信。
虽然IP也是分组交换的一种协议,但是它不具有重发机制。即使分组数据包未能到达对端主机也不会重发。因此,属于非可靠性传输协议。
2.3.2 ICMP
IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一功能制定的。它有时也被用来诊断网络的健康状况。
2.3.3 ARP
从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。
2.4 传输层
传输层最主要的功能就是能够让应用程序之间实现通信。计算机内部,通常同一时间运行多个程序。为此,必须分清是哪些程序与哪些程序在进行通信。识别这些应用程序的是端口号。该层的功能本身与OSI参考模型的传输层类似。
2.4.1 TCP
TCP是一种面向有连接的传输层协议。它可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。此外,TCP还能够有效利用带宽,缓解网络拥堵。
然而,为了建立与断开连接,有时它需要至少7次的发包收包,导致网络资源的浪费。此外,未了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因而不利于视频会议等场合使用。
2.4.2 UDP
UDP是一种面向无连接的传输层协议。UDP不会关注对端是否真的收到了传送过去的数据,如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。
UDP常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。
2.5 应用层
TCP/IP的分层中,将OSI参考模型中的会话层、表示层、应用层的功能都集中到了应用程序中实现。
2.5.1 WWW
浏览器与服务端之间的通信所用的协议是HTTP,所传输数据的主要格式是HTML。
HTTP是属于OSI应用层的协议,而HTML是属于表示层的协议。
2.5.2 电子邮件
发送电子邮件时用到的协议叫做SMTP。
起初只能发送文本格式的邮件,后来经由MIME协议进行拓展,邮件内容可以支持视频、音频、图像等信息。MIME属于OSI模型中的表示层。
2.5.3 文本传输
文本传输协议FTP。
在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。
2.5.4 远程登录
远程登录是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。TCP/IP网络中远程登录常用TELNET和SSH两种协议。
2.5.5 网络管理
在TCP/IP中进行网络管理时,采用SNMP(Simple Network Management Protocol)协议。使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。SNMP正是这个Manager和Agent所要用到的协议。
在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB(Management Information Base)访问。因此,在TCP/IP的网络管理中,SNMP属于应用层协议,MIB属于表示层协议。
一个网络范围越大,结构越复杂,就越需要对其进行有效的管理。而SNMP可以让管理员即使检查网络拥堵情况,及早发现故障,也可以为以后扩大网络收集必要的信息。
3. 延伸
包、帧、数据报、段、消息
以上五个术语都是用来表述数据的单位,大致区分如下:
- 包是全能性术语。
- 帧用于表示数据链路层中包的单位。
- 数据报时IP和UDP等网络层以上的分层中包的单位。
- 段则表示TCP数据流中的信息。
- 消息是指应用协议中数据的单位。