概述
这里提出两个问题。
为什么分层?
早在最初的ARPANET设计时就提出了分层的设计理念。官方一点可以定义"分层"可将庞大而复杂的问题,转化为若干较小的比较易于研究和处理局部问题。
分层的原因
简化设计与实现:将复杂的网络功能分解为多个层次,每一层专注于特定的功能。这种分层结构使得设计、实现和维护变得更加简单。
模块化:分层模型允许不同层之间相对独立的开发和修改。改变某一层的实现不会影响到其他层,从而促进了技术的演进和兼容性。
标准化:分层模型为协议的设计提供了标准框架,便于不同厂商和技术之间的互操作性。各层协议可以由不同的团队或公司开发,符合标准化接口。
便于调试和维护:分层结构使得问题的定位和解决更加直观。可以逐层测试和调试,缩小故障排查的范围。
促进协议的开发与创新:由于各层之间的解耦,可以在不影响其他层的情况下,引入新的协议或技术。这鼓励了网络协议的创新与发展。
提高可扩展性:随着网络需求的增长,可以在特定层中添加新功能或协议,而无需重构整个系统。
支持不同网络技术:分层模型使得不同类型的网络技术(如无线、光纤、以太网等)能够在同一架构下共存,提升了网络的灵活性。
利用分层设计,网络模型可以更好地应对复杂性,同时提高了灵活性、可维护性和标准化水平。这些优点使得网络技术能够不断发展和适应新的需求。
为什么OSI模型是理论上的网络模型,实际上Liunx系统用的是TCP/IP模型?
OSI 模型是一个理论框架,提供了一个标准化的七层模型,用于理解网络协议的不同功能和相互作用。然而,TCP/IP 模型更符合实际网络的实现,且广泛应用于互联网中。
层数不同:OSI 模型有七层,而 TCP/IP 模型通常被简化为四层(应用层、传输层、网络层和链路层),更简洁,易于实现。
开发历史:TCP/IP 模型是为了应对实际网络需求而发展起来的,符合互联网的设计原则,经过实践检验。OSI 模型更多是为了理论讨论而设计,实际应用较少。
协议实际使用:在 Linux 系统和大多数现代网络中,使用的是 TCP/IP 协议族(如 TCP、UDP、IP),而 OSI 模型的协议没有得到广泛采用。
灵活性与扩展性:TCP/IP 模型更灵活,支持多种网络技术和协议,能够适应快速变化的网络环境。
因此,虽然 OSI 模型在教学和理论研究中具有重要意义,实际应用中,TCP/IP 模型更具实用性和广泛性。
常见体系结构
应用程序通信
流程图
浏览器流程
应用层按照 HTTP 协议规定,构建 HTTP请求报文。应用层将 HTTP 请求报文交给运输层处理。
运输层给 HTTP 请求报文添加 TCP 首部(区分应用进程,实现可靠传输),生成 TCP 报文段。运输层将TCP报应段交付给网络层处理。
网络层给 TCP 报文添加 IP 首部(IP数据报可以传输,被路由器转发),网络层将 IP 数据报交付给数据链路层处理。
数据链路层给 IP 数据报添加首部(让帧在链路或网络上传输,被目的主机接受)和尾部(让目的主机检查接收的帧是否有误码)封装成帧。数据链路层将帧交付给物理层。
物理层将帧看作比特流,给比特流添加前导码(让目的主机做好接收帧准备)。物理层将含有前导码比特流转换成信号发送给传输媒体。
路由器流程
物理层将信号转换为比特流,去除前导码,交付给数据链路层。实际上交付的是帧。
数据链路层将帧的首部尾部去掉,交付给网络层。实际上交付的是 IP 数据报。
网络层解析 IP 数据报首部,提取目的网络地址,查找自身路由表,确定转发端口。交付数据给数据链路层。
数据链路层将 IP 数据报添加一个首部,尾部封装成帧,将帧交付给物理层。
物理层给比特流添加前导码,转换成信号发送给传输媒体。
Web服务器又是对比特流的层层解码。等应用层对 HTTP 请求报文进行解析,然后发送 HTTP 响应报文,之后的流程和上述流程类似,HTTP 响应报文需要在Web服务器层层封装。