理解性记忆:这是我自己创造的一个理解性记忆口诀,大家别笑我
七层:因为七层协议并没有得到应用,所以物(物理层) 联(数据链路层) 网(网络层) 专业的叔叔只会(会话层)使(表示层)用(应用层)网络,不会应用
五层:因为五层协议最完善,所以物(物理层)联(数据链路层)网(网络层)专业的叔叔将 ”会(会话层)使(表示层)用(应用层)“ 直接改为 ”应用(应用层)“,表明了自己想要应用五层协议的决心
四层:因为四层协议被应用了,所以物(物理层)联(数据链路层)网专业的叔叔能够了加入网络(网络接口层)公司,物联层和数据链路层合并成立网络接口层
为什么要对网络进行分层?
分层这个操作在计算机领域是很常见的,比如我们熟知的 MVC 分层、MVVM分层,不同层对应不同的职责,让每一层的职责更加专业化(使之符合软件开发中的单一职责原则),降低整个系统的复杂度,同时实现层与层之间的耦合度,一次提高整个系统的可维护性,同时便于后续的扩展。再比如,在早期Web开发都是使用 JSP,前端后端代码都混合着写在一起,但是现在都是前后端分离,前端负责写前端的代码,后端负责写后端的代码,这样简化了开发,提高了开发效率。
总结:对网络进行分层是为了降低网络系结构的复杂度,提高网络结构的可维护性、可扩展性
网络分层的历史
早期网络(1974年之前)互相通信的两个计算机必须高度协调工作才行,但是这种协调工作十分复杂,网络沟通的成本十分困难且巨大,于是在 1974 年,IBM 公司宣布了 SNA 这个著名的网络分层标准,后续的网络科技公司也都陆续推出了自己公司的标准。
备注:最早提出分层概念的不是 IBM 公司,而是在1962年 Leonard Kleinrock 设计 ARPA网络 的团队提出的
OSI七层协议模型的历史
续借上文,继 IBM 发布自己的网络分层标准之后,其它公司也陆续推出了自己公司的网络分层标准,这就导致用户在使用不同公司的网络设备时,无法实现正常的通信,十分不利于网络的推广,给用户带来不必要的烦恼。于是1974年,国际标准化组织成立专门的机构来制定一个通用的标准,这个标准就算OSI七层协议模型。
总结:OSI七层协议是为了使不同设备之间的网络沟通更加方便,让网络更加易于推广。总的来讲 OSI七层协议是为了标准化网络,事物标准化能带来很多好处:降低沟通成本、提高便利性、提高一致性、让生产厂家不必过度关心沟通问题有更多的精力放在设备的更新和优化上
既然有了OSI七层协议为什么还有TCP/IP四层协议?
前文我们提到了 OSI 七层协议是 1974 年开始制定的,但是最终协议的发布是在 1983 年,从协议开始指定到协议的成功指定历时 9 年,这也足见网络协议标准是制定是多么困难的!而 TCP/IP 协议早在 1973 年由卡恩与瑟夫就已经制定成功了,在 OSI 协议制定的期间,TCP/IP 协议就已经被应用于市场,并经过不断的完善和扩展,已经形成了十分完善的生态了,后面等到 OSI 协议制定出来之后,各厂家兼顾成本也不愿意再去更换网络协议了,于是 TCP/IP 就成了整个互联网的国际标准协议了
总结:OSI的失败是由于专家们缺乏实际经验,没有商业区动力,同时在设计的时候考虑的太多导致制定周期长,丧失了市场,同时 OSI 协议的各层之间存在重叠,加大了网络的复杂性。所以做事不能过于追求完美,要以完成度和效率作为追求标准,同时做技术也是一样,不能为了技术而搞技术,要以业务为驱动力去研究技术
为什么有了 TCP/IP 四层协议还需要设计五层协议?
前面完美已经知道 TCP/IP 协议是在 1974 年制定,这个协议制定的太早了,随着物联网的发展,虽然他也在不断完善,但是一些弊端还是无法避免的,比如:
- 缺乏细粒度控制:四层协议模型中没有明确的会话层,而会话管理和控制是应用程序之间交互的关键部分。缺少会话层可能限制了对通信会话的更细粒度控制和管理,如会话的建立、同步、终止等。
- 安全性限制:四层协议模型在传输层提供了基本的错误检测和纠正功能,但在应对安全性挑战方面的功能相对有限。会话层可以提供更强大的安全性保护措施,例如加密、身份验证等。缺乏会话层可能对数据的机密性、完整性和认证产生一定的限制。
为了解决这些 TCP/IP 早期设计的不足指出,五层协议就诞生了,它综合了 OSI 和 TCP/IP 两种协议的优点,是一种更加完善的协议。但是由于大多数互联网应用和服务都建立在四层协议模型的基础上,例如Web浏览器、电子邮件、文件传输等,这就导致更换成本是十分巨大的,各厂商也不愿意推导重来,所以目前互联网还是采用 TCP/IP 四层协议。
其实这种情况在计算机界是很常见的,比如 IPv4 和 IPv6,IPv4初始设计也存在不足导致现在 IP 数量不足,后面虽然出现了 VLAN 技术缓解了这一紧张局面,但是 IPv6 的推广也是在慢慢进行中的,JavaScript的 ES4 版本同样由于更新力度太大,遭到各大厂商地址,最终也没有推广起来,直接就到 ES5 了……
总结:设计五层协议的目的是为了弥补 TCP/IP 四层协议早期设计的不足
七层协议中各层之间的职责
PS:四层和五层协议中各层的职责可以对比着七层协议中的各层职责,比如:五层协议中的应用层就兼顾了七层协议中的应用层和表示层还有会话层三层的职责
TCP/IP各层对应的物理设备
这一小节主要介绍 TCP/IP 四层协议各层中的常见的协议
HTTP
(Hypertext Transfer Protocol):用于在Web浏览器和Web服务器之间传输超文本内容。HTTPS
(Hypertext Transfer Protocol Secure):用于在Web浏览器和Web服务器之间通过加密方式传输超文本内容。HTTPS基于TLS/SSL协议提供安全性。FTP
(File Transfer Protocol):用于在客户端和服务器之间进行文件传输,支持上传、下载、删除等操作。SFTP
(SSH File Transfer Protocol):一种通过SSH协议进行文件传输的安全文件传输协议。SMTP
(Simple Mail Transfer Protocol):用于电子邮件的发送和传输,在发送方和接收方之间进行邮件传递。POP3
(Post Office Protocol version 3):用于电子邮件的接收,允许用户从邮件服务器上下载邮件到本地客户端。IMAP
(Internet Message Access Protocol):也用于电子邮件的接收,支持在客户端和邮件服务器之间对邮件进行管理和同步。DNS
(Domain Name System):用于将域名解析为对应的IP地址,实现域名与IP地址之间的映射。DHCP
(Dynamic Host Configuration Protocol):用于动态分配IP地址和其他网络配置信息给网络设备,使得设备能够自动获取网络参数。SNMP
(Simple Network Management Protocol):用于网络设备的管理和监控,可以获取和修改网络设备的状态信息。Telnet
:用于远程登录和执行命令的协议,但通信内容不加密,已逐渐被SSH取代。SSH
(Secure Shell):用于通过加密的方式远程登录和执行命令,提供了安全的远程终端访问。NTP
(Network Time Protocol):用于同步计算机系统时钟的协议,确保计算机时间的准确性。TCP
(Transmission Control Protocol):提供面向连接、可靠的数据传输服务,确保数据的完整性和顺序性。UDP
(User Datagram Protocol):提供无连接、不可靠的数据传输服务,传输速度快,适用于实时性要求高的应用。SCTP
(Stream Control Transmission Protocol):一种面向消息的传输协议,具备TCP的可靠性和UDP的多路复用功能,适用于多流多路复用、容错性需求较高的应用。DCCP
(Datagram Congestion Control Protocol):提供基于UDP的可靠传输和拥塞控制机制,适用于对实时性要求高且对拥塞敏感的应用。RSVP
(Resource Reservation Protocol):用于在网络中为特定通信会话分配资源,支持实时多媒体流和服务质量(QoS)的传输。IP
(Internet Protocol):是最核心的网际层协议,用于将数据包从源主机传输到目标主机。IP协议定义了数据包的格式、寻址方案和路由选择算法。ICMP
(Internet Control Message Protocol):用于在IP网络上发送错误报告、网络状况信息以及进行网络诊断。例如,ping命令就是使用ICMP来测试主机之间的连通性。ARP
(Address Resolution Protocol):用于将IP地址解析为对应的物理(MAC)地址,以实现在局域网上进行数据包的直接交换。RARP
(Reverse Address Resolution Protocol):与ARP相反,它将物理(MAC)地址解析为对应的IP地址,主要用于无盘工作站等特殊设备。IPsec
(Internet Protocol Security):提供IP层的安全性,包括数据加密、认证和数据完整性保护等功能,用于构建安全的虚拟专用网络(VPN)。OSPF
(Open Shortest Path First):一种动态路由协议,用于计算并选择最短路径来进行数据包的转发,常用于内部网关协议(IGP)。BGP
(Border Gateway Protocol):一种外部网关协议(EGP),用于在不同自治系统之间进行路由选择和交换网络可达性信息。ICMPv6
(Internet Control Message Protocol version 6):IPv6环境下使用的ICMP协议版本,与IPv4环境下的ICMP类似,但支持IPv6的特性和功能。Ethernet
:以太网是一种广泛使用的局域网协议,定义了数据帧的格式、传输速率、MAC地址等。它是最常见的有线局域网技术。Wi-Fi
(无线保真):Wi-Fi是一组无线局域网协议和标准,基于IEEE 802.11系列标准。它允许通过无线信号进行数据传输,适用于无线网络环境下的移动设备连接。PPP
(Point-to-Point Protocol):PPP是一种用于串行点对点连接的协议,通常用于拨号上网或专线连接。它提供了数据链路层的功能,支持多种网络层协议的封装和传输。HDLC
(High-Level Data Link Control):HDLC是一种数据链路层协议,主要用于广域网中点对点连接。它提供了可靠的数据传输和错误检测纠正功能。PPPoE
(Point-to-Point Protocol over Ethernet):PPPoE是将PPP封装在以太网中的协议,常用于ADSL等宽带接入方式。ATM
(Asynchronous Transfer Mode):ATM是一种基于电路交换的数据传输技术,常用于广域网和运营商网络中。Token Ring
:Token Ring是一种局域网协议,使用环形拓扑结构和令牌传递的方式来控制数据访问。参考资料:
- 计算机网络各层分别有哪些设备? - 知乎 (zhihu.com)