找外国女朋友的网站建设,中国有名的网站建设公司,看手表网站,网站跟网页有什么区别文章目录 计算机网络的诞生与演进#xff1a;从独立到互联初识协议网络世界的“共同语言”协议分层 #xff1a;化繁为简的智慧网络模型 #xff1a;协议分层的蓝图1. OSI 七层模型 (Open System Interconnection Model)2. TCP/IP 五层 (或四层) 模型 再识协议#xff1a;深… 文章目录 计算机网络的诞生与演进从独立到互联初识协议网络世界的“共同语言”协议分层 化繁为简的智慧网络模型 协议分层的蓝图1. OSI 七层模型 (Open System Interconnection Model)2. TCP/IP 五层 (或四层) 模型 再识协议深入理解其本质为什么要有TCP/IP协议什么是TCP/IP协议TCP/IP协议与操作系统的关系宏观上如何实现所以究竟什么是协议朴素的理解 总结 欢迎来到计算机网络的世界在这个信息爆炸的时代网络无处不在它如同空气和水一般成为我们生活和工作中不可或缺的一部分。但你是否曾好奇过这背后错综复杂的网络是如何运作的数据是如何在千里之外的计算机之间精准传递的这篇博客将带你从基础概念入手逐步深入为你构建一个清晰的网络知识框架。 计算机网络的诞生与演进从独立到互联
在计算机出现的早期它们像一座座孤岛各自独立工作。如果需要对文件进行共享的话需要用软盘来将文件从一台计算机拷贝到另一台计算机上。所以大佬们就会想着做一个可以让两个计算机直接通信的东西处理啊。如果能将这些计算机连接起来共享数据和资源将会极大地提高工作效率。于是网络的概念应运而生。
计算机网络的发展经历了以下几个主要阶段
独立模式: 这是最原始的阶段计算机之间没有任何连接各自为政。想象一下你需要拷贝文件只能依赖U盘、软盘等物理介质效率低下且不便。 网络互联: 为了解决数据共享的问题人们开始尝试将多台计算机连接在一起。最初的网络结构相对简单但它标志着计算机从独立走向互联的关键一步。 局域网: 随着连接的计算机数量增多局域网应运而生。在局域网中计算机通过交换机 (Switch) 和路由器 (Router) 等网络设备连接在一起形成一个覆盖特定地理范围如一间办公室、一栋大楼或一个校园的网络。数据在局域网内可以高速传输。 广域网: 当需要连接远隔千里的计算机时广域网便派上了用场。互联网 (Internet) 就是全球最大的广域网它将世界各地的计算机和网络连接起来形成一个巨大的信息共享平台。 现代网络是如何搭建的 我们使用的网络是由互联网公司、运营商、通信公司这三者共同维护的它们的关系可以这么理解
做通信工具的公司 (设备制造商/技术提供商):
角色 这类公司是整个网络信息高速公路的“筑路工”和“车辆制造商”。它们研发和生产构成网络基础设施的硬件设备和软件技术。 硬件设备 例如华为、中兴、思科、爱立信、诺基亚等公司它们生产路由器、交换机、基站、光纤、服务器、调制解调器光猫等物理设备。软件技术 例如高通等公司它们研发通信芯片和相关的专利技术如5G技术标准还有一些公司专注于网络操作系统、数据库、虚拟化技术等。 贡献 它们为运营商建设网络基础设施提供必要的“砖瓦”和“工具”。没有这些公司提供的设备和技术运营商就无法搭建起覆盖广泛的通信网络。依赖关系 它们依赖运营商的大规模采购来获得收入和市场份额同时也依赖互联网公司的业务发展来驱动对更先进、更高性能设备的需求。
运营商 (网络服务提供商):
角色 运营商是网络信息高速公路的“建设者”和“运营者”。它们利用通信工具公司提供的设备和技术投入巨资建设和维护覆盖全国乃至全球的通信网络基础设施。 典型的运营商 例如中国移动、中国联通、中国电信国外的ATT、Verizon、Vodafone等。核心业务 它们铺设光纤、建设基站、部署核心网设备形成庞大的通信网络包括固定网络和移动网络。然后它们向个人用户和企业用户提供网络接入服务如宽带上网、手机通话和数据流量、专线服务等。 贡献 它们是连接最终用户和互联网应用服务的桥梁。没有运营商建设和运营的物理网络互联网公司的服务就无法触达用户用户也无法访问互联网。依赖关系 对上游做通信工具的公司 依赖它们提供稳定、先进的网络设备和技术支持。对下游互联网公司 互联网公司的各种应用和服务如视频、游戏、社交、电商会消耗大量的网络带宽和数据流量为运营商带来主要的收入来源。运营商也需要互联网公司提供丰富的应用来吸引用户使用其网络服务。对用户 用户的网络使用需求是运营商建设和升级网络的根本动力。
互联网公司 (应用和服务提供商):
角色 互联网公司是网络信息高速公路上的“内容提供者”、“服务运营者”和“交通参与者”。它们基于运营商提供的网络基础设施开发和运营各种各样的应用程序和服务。 典型的互联网公司 例如谷歌、亚马逊、Facebook (Meta)、腾讯、阿里巴巴、字节跳动等。核心业务 它们提供搜索引擎、社交媒体、电子商务、在线视频、网络游戏、云计算、在线办公等服务。 贡献 它们极大地丰富了网络的内容和服务使得网络对用户具有巨大的吸引力从而驱动了整个网络生态的发展。依赖关系 对运营商 它们高度依赖运营商提供的稳定、高速、低延迟的网络连接以及数据中心等基础设施来保证其应用和服务的质量和用户体验。它们需要向运营商支付带宽费用、服务器托管费用等。对做通信工具的公司 间接地互联网公司对高性能计算、大容量存储、高速网络传输的需求也会驱动通信工具公司进行技术创新和产品升级。
总结它们之间的关系
做通信工具的公司 为 运营商 提供设备和技术支撑其进行“大量的网络基础设施建设”。运营商 建设和运营网络基础设施为 互联网公司 的业务开展提供基础的网络平台。互联网公司 在运营商的网络上提供各种应用和服务这些服务会产生大量的网络流量从而为运营商带来收入并可能间接刺激对更先进通信工具的需求。同时运营商 也可能直接向 做通信工具的公司 购买服务或进行合作研发。互联网公司 也可能直接与 做通信工具的公司 合作例如定制服务器硬件、参与网络技术标准的制定等。
这三者形成了一个相互依存、共同发展的生态链
通信工具公司是基石提供技术和设备。运营商是桥梁建设和维护网络通道。互联网公司是驱动力通过丰富的应用和服务吸引用户产生价值。
任何一方的缺失或薄弱都会影响整个网络生态的健康发展。 需要注意的是“局域网”和“广域网”是一个相对的概念。例如我们常说的“中国特色”的广域网从某种意义上也可以看作是一个规模非常庞大的局域网。 思考 为什么网络会产生 计算机是人的工具人要协同工作注定了网络的产生是必然的。网络产生的根本原因——协同工作的需求。无论是文件共享、信息传递还是资源协作网络都为人类的协同工作提供了强大的支持。 初识协议
网络世界的“共同语言”
想象一下两个人要进行交流他们首先需要一种共同的语言比如中文或英文。如果一个人说中文另一个人只懂葡萄牙语那么即使他们都想表达同一个意思也无法有效沟通。
在计算机网络中情况也是类似的。计算机之间通过光信号和电信号进行通信这些信号通过“频率”和“强弱”等方式来表示0和1这样的二进制信息。要想让这些0和1承载起复杂的文字、图片、音视频等信息并被不同的计算机正确解读就需要一套双方都认可的规则和约定这就是网络协议 (Network Protocol)。
什么是协议 简单来说“协议”就是一种约定。减少计算机之间沟通的成本用于快速达成共识。
思考 只要通信的两台主机约定好协议就可以了吗
并非如此简单。仅仅约定好制定好“我们要通信”是不够的。如果一台计算机用频率高低表示0和1而另一台计算机用信号强弱表示0和1即使它们都想发送相同的数据也会因为“语言不通”而无法正常通信。这就像两个人虽然都同意要交流但一个人说中文另一个人说葡萄牙语结果可想而知。
因此完善的协议需要更多、更细致的规定并且所有参与通信的设备都必须严格遵守这些规定。
网络协议的重要性
计算机生产厂商众多 市场上有各种品牌的计算机。计算机操作系统多样 Windows, macOS, Linux 等操作系统并存。计算机网络硬件设备繁杂 路由器、交换机、网卡等设备也来自不同厂商。
如何让这些不同厂商生产的、运行不同操作系统的计算机和网络设备能够顺畅地进行通信呢答案就是统一的网络协议。需要有权威的组织或公司站出来制定一套共同的标准让所有设备都遵循这套标准进行通信。
谁能定制协议标准
一般而言能够定制协议或标准的组织或公司通常是在业界具有公认地位和影响力的。课件中列举了一些主要的标准制定组织例如
国际标准化组织 (International Organization for Standardization, ISO): 著名的OSI七层模型就是由ISO提出的。国际电信联盟 (International Telecommunication Union, ITU): 联合国下属的专门机构负责制定电信领域的国际标准。电气和电子工程师协会 (Institute of Electrical and Electronics Engineers, IEEE): 制定了大量电子、电气和计算机科学领域的标准如著名的IEEE 802系列标准例如Wi-Fi标准802.11。互联网工程师任务组 (Internet Engineering Task Force, IETF): 负责开发和推广互联网协议特别是构成TCP/IP协议族的协议其发布的RFCRequest for Comments文档是互联网标准的重要来源。区域标准化组织 如ETSI欧洲电信标准学会、ASTAP亚洲与泛太平洋电信标准化协会。公司 一些大型科技公司也会参与甚至主导某些协议标准的制定或者自研标准协议栈。官方机构 如美国的FCC联邦通信委员会。
这些组织通过制定和推广标准化的协议确保了全球网络的互联互通。
协议分层 化繁为简的智慧
网络通信是一个极其复杂的过程涉及到硬件、软件、数据传输、错误处理、地址管理等方方面面。如果将所有这些功能都揉在一个庞大的协议中那么这个协议将会变得难以设计、难以理解、难以维护并且任何微小的改动都可能影响整个系统。
为了解决这个问题计算机网络的先驱们借鉴了软件工程中的模块化设计思想将复杂的网络功能进行拆分把不同功能划分到不同的层次中每一层负责特定的任务并为其上一层提供服务。这就是协议分层 (Protocol Layering)。
软件分层的好处
想象一下我们要完成一次跨国电话交流。这个过程可以粗略地分为两层
语言层 我们选择一种双方都能听懂的语言例如英语。通信设备层 我们使用电话作为通信工具。 这两层是相对独立的。如果我们想换一种语言例如法语只要对方也懂法语通信设备层电话仍然可以正常工作也就是说同层之间可以“直接”通信。同样如果我们想换一种通信工具例如网络视频通话只要我们仍然使用双方都懂的语言语言层也不受影响这就是对层次的解耦。 站在工程师的视角通信是分层的用户之间并不是直接通信而是用户作为上层将数据交给下层通信设备然后再通过下层通信设备的数据交互再处理信息交给上层用户。站在用户的角度我就是直接和同层次的用户通信的。 协议分层的好处显而易见
解耦合 : 每一层的功能相对独立层与层之间通过明确的接口进行交互。修改某一层的实现细节只要接口不变就不会影响到其他层。模块化 : 各层可以独立开发和测试降低了整体的复杂性。易于维护和更新 : 当技术发展或需求变化时可以针对特定层次进行升级或替换而不需要重写整个网络协议栈。标准化 : 每一层的功能和接口都可以进行标准化促进了不同厂商设备之间的互操作性。
实际的网络通信协议比上面举的例子要复杂得多需要划分更多的层次。通过该节只需要知道分层可以实现肌肉和让软件维护成本更低。
网络模型 协议分层的蓝图
为了更好地理解和实现协议分层人们提出了不同的网络模型。其中最著名的两个模型是OSI七层模型和TCP/IP四层/五层模型。
1. OSI 七层模型 (Open System Interconnection Model)
OSI模型是由国际标准化组织 (ISO) 提出的一个理论上非常完善的参考模型它将网络从逻辑上划分为七个层次 应用层 (Application Layer): 为应用程序提供网络服务例如HTTP网页浏览、FTP文件传输、SMTP邮件发送等。表示层 (Presentation Layer): 负责数据的格式转换、加密解密、压缩解压缩等确保不同系统之间交换的信息能被正确理解。会话层 (Session Layer): 负责建立、管理和终止两个通信主机之间的会话连接。传输层 (Transport Layer): 负责端到端的数据传输控制提供可靠或不可靠的数据传输服务如TCP和UDP协议。网络层 (Network Layer): 负责数据的路由选择和转发将数据包从源主机发送到目标主机IP协议工作在这一层。数据链路层 (Data Link Layer): 负责在相邻网络节点间的链路上无差错地传输数据帧例如以太网协议。物理层 (Physical Layer): 负责在物理媒介上传输原始的比特流0和1定义了接口的电气、机械、过程和功能特性例如网线、光纤、无线电波等。
OSI模型的优点
概念清晰 明确区分了服务、接口和协议这三个概念。理论完整 提供了一个结构化的框架有助于理解复杂的网络通信过程。促进标准化 为不同系统和网络之间的可靠通信提供了指导。
OSI模型的缺点
过于复杂且不实用 七层划分过于细致某些层次如会话层和表示层在实际的网络实现中往往被合并或简化。实施困难 严格按照OSI模型实现网络协议栈的成本较高。
但是其实在网络角度OSI定的协议7层模型其实非常完善但是在实际操作的过程中会话层、表示层是不可能接入到操作系统中的所以在工程实践中最终落地的是5层协议。具体如下文。
2. TCP/IP 五层 (或四层) 模型
相比OSI模型TCP/IP模型是实际应用中更为广泛和成功的网络协议体系。它通常被描述为一个五层或四层的结构。我们这里以五层模型为例进行讲解 应用层 : 对应OSI模型的应用层、表示层和会话层。负责应用程序之间的沟通常见的协议有HTTP, FTP, SMTP, Telnet, DNS等。我们的网络编程主要就是针对应用层。传输层 : 对应OSI模型的传输层。负责两台主机之间的数据传输提供端到端的通信服务。主要协议有 TCP (Transmission Control Protocol, 传输控制协议): 提供面向连接的、可靠的字节流服务。它能确保数据按序、无差错地从源主机发送到目标主机。UDP (User Datagram Protocol, 用户数据报协议): 提供无连接的、不可靠的数据报服务。它传输效率高但不保证数据的可靠性和顺序性。 网络层 | 互联网层 | 网际层 : 对应OSI模型的网络层。负责地址管理和路由选择将数据包从源地址发送到目的地址。核心协议是 IP (Internet Protocol, 网际协议)它通过IP地址来标识网络中的主机并通过路由表规划数据传输的路径。路由器 (Router) 工作在网络层。数据链路层 | 网卡层 : 对应OSI模型的数据链路层。负责在相邻设备之间例如主机与交换机之间或两个路由器之间传输数据帧。它处理物理地址如MAC地址、帧同步、冲突检测和数据差错校验等工作。常见的标准有以太网 (Ethernet)、令牌环网 (Token Ring)、无线LAN (WLAN) 等。交换机 (Switch) 工作在数据链路层。物理层 : 对应OSI模型的物理层。负责光/电信号的传递方式定义了物理设备接口的规范。例如我们常用的网线双绞线、早期的同轴电缆现在主要用于有线电视、光纤以及Wi-Fi无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器 (Hub) 工作在物理层。
为什么有时也称TCP/IP四层模型
在某些划分中会将数据链路层和物理层合并为“网络接口层”或“链路层”这样就得到了一个四层模型应用层、传输层、网络互连层、网络接口层。由于物理层的内容更多涉及硬件我们在软件层面关注较少因此有时会简化为四层模型来讨论。
不同网络设备工作的层次
主机 (Host): 其操作系统内核通常实现了从传输层到物理层的内容。应用程序运行在应用层。路由器 (Router): 实现了从网络层到物理层的功能主要负责在不同网络之间转发数据包。交换机 (Switch): 实现了从数据链路层到物理层的功能主要负责在同一局域网内转发数据帧。集线器 (Hub): 只实现了物理层的功能简单地将接收到的信号放大并广播到所有其他端口。
需要注意的是这也不是绝对的。例如现在很多高级交换机也具备了网络层的转发功能称为三层交换机很多路由器也可能实现部分传输层的功能如端口转发。
再识协议深入理解其本质
前面我们对协议有了初步的认识。
为什么要有TCP/IP协议
单机内部也存在协议 即使在一台计算机内部不同组件之间的通信也需要协议。例如CPU与内存通信有内存总线协议硬盘与主板通信有SATA、IDE、SCSI等磁盘协议。但这些协议通常由硬件实现用户感知不明显且通信距离近通过主板就可以连接直接一根线的连接一般不会有很多问题问题相对较少。所以计算机内部冯诺依曼体系本身就是一个网络结构。网络通信的挑战 当计算机之间的距离变远总不能使用一条网线将所有设备都进行连接复杂又庞大所以当远程通信通过网络进行通信时会引入很多新的问题 如何处理数据数据丢了怎么办怎么定位目标主机呀怎么解决到一个主机后下一个目标地点在哪
往往距离远了后就会用更长的线但是线长了后就会造成信号随着路程长度增加而减弱的问题减弱后就需要使用集线器来放大信号。但是如果每个主机之间都要通信那岂不是要每个主机和其他主机全部都每个都互相连接吗全世界那么多主机每个都和其他连接怎么可能
所以在机房或家中通常使用路由器或交换机进行通信如果要和外面通信将本地路由器连接互联网连接到了远程目标网络路由器通过本地的主机将信息发给本地路由器然后本地路由器将信息发给网络路由器而网络路由器又可以通过一个个路径选择到你要发送信息给的目标主机所连接的本地路由器然后通过它的本地路由器再将信息转发给目标主机。
所以一条信息的通信中可能会经过很多个路由器进行转发那么只要是信息的传输就一定会一有信息丢失的风险经过一层层中转的话丢失的风险一定更大。怎么解决呢并且你要发送的目标主机的位置要怎么进行定位呢本地路由器怎么知道要给谁发即使知道给谁发那沿路的路由器在哪里要怎么知道怎么才能知道下一个到达的路由器是谁
还有发数据不是真正目的吧如何发送数据给目标主机只是通信的手段如何去使用数据才是真正的目的所以我们也需要一个全球统一方法来标识要如何处理数据 所以需求的本质就是通信主机距离变远了。因此TCP/IP协议族的出现就是为了解决远程主机之间可靠、高效通信所面临的各种挑战是一种网络长距离通信的解决方案 数据的传输是一种问题数据的处理也是一种问题不同的问题要怎么处理这样不同的类型处理也造就了协议分层各层协议各司其职处理不同性质不同种类的问题。
什么是TCP/IP协议
TCP/IP协议的本质是一种解决方案 它不是单一的协议而是一组协同工作的协议形成了一个协议簇Protocol Suite。这个协议簇为互联网的各种应用提供了全面的通信解决方案。TCP/IP协议能分层前提是因为问题本身能分层 网络通信的复杂性决定了其面临的问题也是多层次的。例如物理信号的传输是一个问题如何在众多主机中找到目标主机是另一个问题如何保证数据传输的可靠性又是另一个问题。TCP/IP协议的分层结构正是对这些不同层次问题的针对性解决。
TCP/IP协议与操作系统的关系宏观上如何实现 图示展示了 Windows 和 Linux 两种操作系统下TCP/IP 协议栈在操作系统内部的实现分层结构。从宏观上看操作系统与 TCP/IP 协议的关系是操作系统作为 TCP/IP 协议栈的载体和管理者为其运行提供环境、资源和接口并协调应用程序与协议栈以及协议栈与硬件之间的交互。
具体来说这种关系和实现方式体现在以下几个方面
操作系统内核承载协议栈实现 TCP/IP 协议栈的大部分核心功能如传输层的 TCP/UDP、网络层的 IP 等是作为操作系统内核的一部分来实现的。这意味着协议的处理逻辑、状态维护、数据包的封装和解封装等关键操作都在操作系统的核心层完成享有较高的执行权限和效率。系统调用和 API 接口 操作系统为运行在用户空间的应用程序提供了一系列的网络编程接口最典型的就是 Socket套接字API。应用程序通过调用这些接口来使用 TCP/IP 协议栈提供的服务例如建立连接、发送数据、接收数据等。操作系统负责将应用程序的请求传递给协议栈的相应层次进行处理并将协议栈的处理结果返回给应用程序。图示中的“应用层”与“传输层”之间的交互就是通过操作系统提供的接口来完成的。资源管理和调度 操作系统负责管理与网络通信相关的系统资源如内存缓冲区用于存储待发送和接收的数据、网络接口卡网卡等。它也负责调度进程和线程确保网络通信任务能够及时有效地执行。驱动程序与硬件交互 操作系统通过设备驱动程序与物理网络接口卡进行交互。驱动程序是操作系统内核的一部分负责将协议栈处理好的数据发送到网卡以及从网卡接收原始数据并传递给协议栈进行处理。图示中的“数据链路层/物理层”或“网卡驱动/网卡”部分就体现了操作系统对硬件的管理和交互。分层实现与协作 TCP/IP 协议本身是一个分层模型而操作系统在实现时也遵循了这种分层结构。每一层都有其特定的功能并通过定义明确的接口与上下层进行交互。操作系统确保这些层次能够协同工作完成端到端的数据传输。例如应用程序通过 Socket 接口将数据交给传输层传输层加上 TCP/UDP 头部后交给网络层网络层加上 IP 头部后交给数据链路层最后通过网卡发送出去。接收数据时则执行相反的过程。
宏观上如何实现连接
从宏观上看操作系统通过将 TCP/IP 协议栈集成到内核中并提供标准的编程接口实现了应用程序与网络之间的连接。当一个应用程序需要通过网络发送数据时它调用操作系统提供的网络 API如 send() 函数。操作系统接收到这个请求后会
将数据交给 TCP/IP 协议栈的相应层次进行处理。协议栈各层按照协议规范对数据进行封装添加头部信息。最终数据被传递给网卡驱动程序。驱动程序将数据发送到物理网络上。
当有数据从网络到达时网卡接收到数据并通知操作系统。操作系统通过网卡驱动程序获取数据然后将数据传递给 TCP/IP 协议栈进行逐层解封装最终将数据传递给相应的应用程序。
因此操作系统在宏观上为 TCP/IP 协议提供了一个运行平台和一套服务接口使得应用程序能够方便、安全地利用网络进行通信而无需关心底层复杂的网络细节。操作系统是连接应用程序和 TCP/IP 协议栈以及协议栈和物理网络的桥梁。 这样不就解决了上面所提到的问题与回答吗。协议的每一层有这不同的作用操作系统的结构对应着协议的每一层将每一层的作用功能实现。
操作系统内核实现协议传输层和网络层的功能 传输层TCP关注的是如何将数据可靠、有序地从源主机上的某个进程传输到目标主机上的某个进程。它可以看作是网络层提供的“主机到主机”服务的延伸增加了“端口到端口”的维度并提供了更高级的服务质量保证如可靠性。网络层IP不关心数据是否丢失、顺序是否正确也不关心是哪个应用程序发送或接收了数据它只负责将“信封”数据包送到正确的“城市”目标网络的“街道地址”目标IP地址。 操作系统的驱动部分实现了协议中关于数据链路层的功能 操作系统通过特定的设备驱动程序与网络接口硬件如网卡进行交互。这些驱动程序与操作系统内核的数据链路层实现协同工作负责管理物理介质的访问如CSMA/CD或CSMA/CA、数据的成帧、物理寻址MAC地址以及在直接相连的两个节点之间进行无差错的或检测差错的、按顺序的数据帧传输。它们是协议栈与物理硬件之间的桥梁。 物理层主要做了数据链路层传来的数据和在物理媒介上传输的信号的转变所以操作系统与协议得关系不大不做深入理解。 现在再理解图示刚开始已经说明是Linux和windos下的实现。只是举例其实所有的操作系统都是这样的
有那么多的操作系统不仅仅是Linux操作系统还是基于Unix的macOS系统操作系统体系结构内部一定都是这么实现的如果某个操作系统厂商拒绝按照标准实现那么就无法和其他操作系统的主机进行通信。
所以再理解为什么需要网络协议呢就是为了通信统一标准
即使是不同的操作系统只要内部关于传输层、网络层、数据链路层的实现统一那么数据就可以在任何一个系统上进行包装或者拆解每个系统都可以理解其他系统对于信息的包装因为关于网络的部分设计一定是一样的全世界都用着同一个协议标准
再关于得到数据后对于数据在上层应用的处理那是程序员做的事情将数据与所写的程序结合应用层与底层的设计完全分割实现高内聚低耦合
网络协议栈注定了操作系统设计是层状的结构
所以究竟什么是协议朴素的理解 OS源代码一般都是用C/C语言写的。 所谓协议就是通信双方都认识的结构化的数据类型。
想象一下我们用C语言定义了一个结构体
struct protocol {int a;int b;char c[10];// ... 其他数据成员
};如果主机A要发送数据给主机B它可以将数据填充到这个 struct protocol 类型的变量中然后将这个结构体变量在内存中的二进制表示字节序列发送给主机B。
问题主机B能识别data并且准确提取a, b, c的值吗
回答答案是肯定的 前提是主机B也拥有完全相同的 struct protocol 定义。因为双方都使用了相同的结构体定义它们对数据在内存中的布局、每个成员的类型和偏移量都有共同的认识。当主机B收到字节序列后它可以按照相同的结构体定义来解析这些字节从而准确地提取出各个成员的值。
这种“共同的认识”或“共同的结构体定义”就是协议的一种朴素体现。
推广到分层协议
由于网络协议是分层的每一层都有其特定的协议。在每一层通信双方例如两台主机的传输层或者两个相邻路由器的网络层都会使用该层约定的“结构化数据类型”即该层的协议头部格式来封装和解析数据。同层之间因为遵循相同的协议格式所以能够相互识别对方发送的数据。 整型为什么四个字节 这就是约定通过类型标识当写入或者读取时直接按照类型标识所对应约定好的大小进行读取或者写入这样就能保证数据的完整。对于协议也是这样的对结构体做一个约定写入和读取的时候都是按照该约定的大小进行读取或者写入保证互相的沟通无障碍~ 可以用我们平时接触很多的快递来理解快递上的各个信息就是用来通信的无论是收件方还是发件方都有这对应的信息快递实体是什么什么时候发出什么时候签收地址是哪里这些会作为数据放在表单结构体上发件方和收件方都可以理解这个内容这就做到了通信并且通信地点准确
总结
计算机网络是一个庞大而精密的系统。通过本篇博客的学习我们了解了
网络从独立主机发展到互联互通的历程。协议是网络通信的基石是设备间沟通的“共同语言”。协议分层是将复杂问题简单化的有效手段它带来了模块化、解耦合和易维护等诸多好处。OSI七层模型和TCP/IP五层或四层模型是理解网络协议分层的重要框架其中TCP/IP模型是实际应用的主流。TCP/IP协议的本质是解决远程通信问题的方案其分层结构源于问题本身的可分层性。从朴素的角度理解协议可以看作是通信双方都认识的结构化数据类型。