网络协议的目的是数据传输,网络上的两个节点要通信,例如节点a向节点b发送数据1,最直接、简单的方式是在两个节点间拉根线,然后配合数模转化,传输就能完成。但是真实的网络是复杂的。
- 节点千千万、网络范围大(两两拉线,线不够,两通信节点可能相隔十万八千里,没那么长的线)
- 节点内通信需求多样(端对端、可靠性、实时性、应用多样性)
基于第一点原因,现在网络中出现了很多专门的网络节点(交换机、路由器),路由器将网络划分成了多个子网(分而治之的思想到处都是)由这些专门的网络节点来负责节点及网络间数据的交换。这里交换的关键就是ip协议,我们知道凡是网络上的节点都会有个自己的ip、子网掩码、网关,路由会根据这些信息来执行路由策略。
基于第二点,为了实现端对端传输及传输的可靠性、完整性,于是有了TCP协议,tcp有端口信息、有校验、有连接握手。为了实现传输的实时性有了UDP协议。由于应用层的多样性,在应用层就有了各种各样的应用层协议(http、ftp、SNMP、SMTP等等)。
基于以上需求的特征及依赖关系,现有的TCP/IP协议划分成了四层链路层、网络层、传输层、应用层。
- 链路层:数据在物理链路上建立逻辑链路(完成相邻节点间传输过程,开始、结束,透明可靠的物理传输)
- 网络层:网络节点的数据传输(路由、转发)
- 传输层:网络节点端点的传输(与应用分离的,支持节点多通道,应用多通道)
- 应用层:应用数据封装、传输(加密、数据格式等)