多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
CP/IP是一个庞大的协议族,它是众多网络协议的集合,包括:ARP、IP、ICMP、UDP、TCP、DNS、DHCP、HTTP、FTP、MQTT等等。这些协议按照功能,可以被划分为几个不同的层次,如图 1‑1 TCP/IP协议的分层图 1‑1所示。我们在上一节中介绍的HTTP、FTP、MQTT,它们隶属于应用层。那么TCP/IP为什么需要分层,分层又是依靠什么依据呢? ![](https://box.kancloud.cn/fb0fda632ab04b339e8b0c4b7b69ed51_537x400.png) TCP/IP协议栈中不同协议所完成的功能是不一样的, 某些协议的实现要依赖于其它协议,依据这种依赖关系,可以将协议栈分层。在图 1‑1中,低层协议为相邻的上层协议提供服务,是上层协议得以实现的基础。 其中,物理层(PHY)规定了传输信号所需要的物理电平、介质特征;链路层(MAC)规定了数据帧能被网卡接收的条件,最常见的方式是利用网卡的MAC地址,发送方会在欲发送的数据帧的首部加上接收方网卡的MAC地址信息,接收方只有监听到属于自己的MAC地址信息后,才会去接收并处理该数据;每台网络设备都应该有自己的网络地址,网络层规定了主机的网络地址该如何定义,以及如何在网络地址和MAC地址之间进行映射,即ARP协议;网络层实现了数据包在主机之间的传递,而一台主机内部可能运行着多个网络程序,传输层可以区分数据包是属于哪一个应用程序的,可以说传输层实现了数据包端到端的传递。另外,数据包在传输过程中可能会出现丢包、乱序和重复的现象,网络层并没有提供应对这些错误的机制,而传输层可以解决这些问题,如TCP协议;应用层以下的工作完成了数据的传递工作,应用层则决定了你如何应用和处理这些数据,之所以会有许多的应用层协议,是因为互联网中传递的数据种类很多、差异很大、应用场景十分多样。