🔥个人主页: 中草药
🔥专栏:【Java】登神长阶 史诗般的Java成神之路
🛡️一.认识网络
网络是指由多个设备(如计算机、服务器、打印机等)通过通信介质(如电缆、光纤、无线信号等)相互连接而成的系统,这些设备可以通过网络进行数据交换、资源共享等活动。网络可以按照不同的标准进行分类,比如按照规模、拓扑结构、传输介质等。
基本组成部分
- 节点(Nodes):网络中的设备,如计算机、路由器、交换机等。
- 链路(Links):连接节点的物理或逻辑通道,如网线、无线信号等。
- 协议(Protocols):规定网络中数据传输的规则和标准,如TCP/IP、HTTP等。
分类
- 局域网(LAN):在一个相对较小的地理区域内连接的网络,如办公室内的网络。
- 城域网(MAN):覆盖城市范围的网络。
- 广域网(WAN):覆盖广阔地理区域的网络,如互联网。
- 个人区域网(PAN):覆盖个人周边设备的小型网络,如蓝牙网络。
拓扑结构
- 总线型(Bus):所有节点都连接到一条公共的主线上。
- 星型(Star):所有节点都连接到一个中心节点(如交换机或路由器)。
- 环型(Ring):节点形成一个封闭的环,数据沿着环传递。
- 树型(Tree):类似于分支结构,适用于大型网络。
- 网状(Mesh):所有节点都与其他节点连接,提供高冗余和可靠性。
功能
- 数据通信:允许节点之间交换数据。
- 资源共享:使用户可以访问网络上的硬件和软件资源,如打印机、文件服务器等。
- 分布式处理:将任务分散到多个节点上进行处理,提高效率和性能。
- 消息传递:允许用户在网络中发送和接收消息。
层次结构
网络通常遵循分层模型,其中最著名的是OSI七层模型和TCP/IP四层模型。
- OSI七层模型:从低到高分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
- TCP/IP四层模型:从低到高分别为网络接口层、网际层、传输层和应用层。
IP地址
定义: IP地址(Internet Protocol Address)是为互联网上的设备分配的一个唯一地址标识。IPv4使用32位地址空间,IPv6则使用128位地址空间,以适应未来互联网的发展需求。IP地址用于定位主机的网络地址。
作用:
- 标识网络中的设备。
- 用于路由选择,确保数据包能够到达正确的目的地。
端口号
定义: 端口号是用来标识特定网络服务或应用程序的逻辑地址部分,与IP地址一起构成完整的TCP/UDP地址。端口号用于定位主机中的进程。
作用:
- 区分同一台计算机上不同的应用进程。
- 与IP地址结合使用,形成一个完整的地址,用来发送和接收数据。
协议*
定义: 网络协议是一组规则和标准,用于规定数据在不同系统之间传输的方式。最终体现为网络上传输的数据包的格式。
例子:
- TCP (Transmission Control Protocol):提供可靠的数据传输服务。
- UDP (User Datagram Protocol):提供简单的、无连接的数据报服务。
- HTTP (Hypertext Transfer Protocol):用于网页浏览的应用层协议。
协议分层
定义: 为了简化网络设计和实现,网络被分为多个层次,每一层负责特定的功能。
OSI模型与TCP/IP模型:
- OSI模型将网络通信分为7个层次:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- TCP/IP模型通常分为4层:网络接口层、网际层、传输层、应用层。
TCP/IP模型是实际互联网使用的模型,它将网络协议分为五个主要层次:
-
应用层(Application Layer)
- 包括HTTP、FTP、SMTP等协议。
- 提供面向用户的网络应用服务。
-
传输层(Transport Layer)
- 使用TCP或UDP协议来传输数据。
- 提供端到端的可靠或非可靠数据传输服务。
-
网络层(Internet Layer)
- 使用IP协议来传输数据包。
- 关注传输中的路径规划选择,且负责地址管理
-
数据链路层(Network Interface Layer)
- 包含数据链路层和物理层的功能。
- 负责数据帧的封装/解封装以及比特流的传输。(具体实施)
- 硬件层
传输层,网络层由系统内核实现
协议分层的好处
- 模块化:每个层次独立,解耦合,可以单独开发和测试,不需要关注其他协议的实现细节。
- 标准化:各层之间的接口定义清晰,有助于标准化。
- 灵活性:可以替换特定层次的实现而不影响其他层次。
- 可扩展性:易于添加新的服务或协议。
封装与分用*
封装和分用,是网络通信的最核心的流程
封装: 在数据传输过程中,上层的数据被下一层添加头部信息包裹起来,形成一个新的数据单元。
分用: 当数据到达目的地后,根据头部信息将数据拆解并分发给相应的上层处理。
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
- 应用层数据通过协议栈发到网络上时,每层协议都要加上⼀个数据首部(header),称为封装 (Encapsulation)。
- 首部信息中包含了⼀些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理。
- 网络层也有多种协议,其中最主要的是IPv4,此外还有IPv6
客户端与服务器
定义: 客户端-服务器架构是一种分布式应用架构,其中客户端发起请求,服务器响应请求。
作用:
- 客户端:发起请求和服务的用户界面。
- 服务器:处理客户端请求并返回结果的服务程序。
请求与响应
定义: 客户端向服务器发送请求消息,服务器处理请求后返回响应消息。
过程:
- 客户端构建请求,并将其发送到服务器。
- 服务器接收到请求后进行处理。
- 服务器构建响应,并将其发送回客户端。
- 客户端接收并处理响应。
🪚二.两台主机之间网络通信的流程
两台主机之间的网络通信是一个复杂但有序的过程,涉及到多个层次和组件的交互。下面我们将详细探讨这一流程:
1. 发送方主机
应用层
- 步骤1: 用户通过应用程序(如浏览器、邮件客户端等)发起通信请求。
- 步骤2: 应用层创建数据,并将其组织成合适的数据格式。
传输层
- 步骤3: 传输层(如TCP)对数据进行封装,添加源端口号和目的端口号。这一步是为了确保数据可以准确地送达目标应用程序。
- 步骤4: 如果使用的是TCP协议,则还会建立连接,确保数据传输的可靠性。
网络层
- 步骤5: 网络层(如IP)添加源IP地址和目的IP地址。这一步是为了确保数据包可以到达正确的网络位置。
- 步骤6: 数据包可能还需要经过路由选择,以确定最优路径。
数据链路层
- 步骤7: 数据链路层(如Ethernet)添加源MAC地址和目的MAC地址。这一步是为了确保数据可以在物理网络上正确传输。
- 步骤8: 数据链路层还可能进行错误检测和纠正,确保数据的完整性。
物理层
- 步骤9: 物理层将二进制数据转换成电信号或光信号,在物理介质(如光纤、双绞线等)上传输。
2. 中间路由器
路由选择
- 步骤10: 数据包到达路由器后,路由器会检查IP数据包的头部信息来确定下一跳。
- 步骤11: 路由器可能会更新TTL(Time To Live)字段,并进行其他必要的处理。
3. 接收方主机
物理层
- 步骤12: 物理层接收电信号或光信号,并将其转换为二进制数据。
数据链路层
- 步骤13: 数据链路层解析MAC地址,确认数据包是否是发给自己的。
- 步骤14: 数据链路层执行错误检测,如果发现错误,则可能需要重新传输。
网络层
- 步骤15: 网络层解析IP地址,确认数据包是否是发给自己的。
- 步骤16: 网络层可能会计算校验和以验证数据包的完整性。
传输层
- 步骤17: 传输层(如TCP)根据端口号将数据包分发给正确的应用程序。
- 步骤18: 如果使用的是TCP,则还需要进行流量控制和拥塞控制等操作。
应用层
- 步骤19: 应用层处理数据,并显示给用户或进一步处理。
4. 响应流程
- 步骤20: 接收方主机根据请求生成响应,并按照上述相反的顺序发送回发送方主机。
- 步骤21: 发送方主机接收响应,并通过应用程序展示给用户。
这个流程展示了数据如何从一台主机传输到另一台主机,并最终到达用户的应用程序。每一步都有其特定的功能和作用,共同保证了数据的正确传输。
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
以上,就是本期的全部内容啦,若有错误疏忽希望各位大佬及时指出💐
制作不易,希望能对各位提供微小的帮助,可否留下你免费的赞呢🌸