当前位置: 首页 > news >正文

JavaEE初阶网络原理-初识

文章目录

  • 网络原理初识——从孤岛到互联
    • 一、 网络是如何诞生的?—— 一部通信发展史
      • 1.1 独立模式:计算机的“孤岛时代”
      • 1.2 网络互连:从孤岛到大陆
        • 1.2.1 局域网 (LAN)
        • 1.2.2 广域网 (WAN)
    • 二、 网络通信的基石:地址与端口
      • 2.1 IP 地址:你在网络世界的“门牌号”
      • 2.2 端口号:找到那个“对的人”
      • 2.3 一个悬而未决的问题
    • 三、 认识协议:网络世界的“通用语言”
      • 3.1 什么是协议?
      • 3.2 为什么需要协议?
      • 3.3 五元组:一次网络通信的“身份证”
    • 四、 协议分层:化繁为简的“架构之美”
      • 4.1 什么是协议分层?
      • 4.2 分层的好处是什么?
      • 4.3 OSI 七层模型:理想化的理论丰碑
      • 4.4 TCP/IP 五层(或四层)模型:事实上的工业标准
        • 经典面试题:网络设备分别工作在哪一层?
    • 五、 数据包的奇幻漂流:封装与分用
      • 5.1 封装:层层打包,准备上路
      • 5.2 分用:层层拆解,送达终点
      • 5.3 中间设备的工作
    • 六、 本文核心要点总结 (Key Takeaways)

网络原理初识——从孤岛到互联

大家好!今天我们来聊一个既熟悉又陌生的话题:网络。我们每天都在上网,但数据究竟是如何在计算机之间飞速穿梭的呢?这背后其实隐藏着一套精密而强大的规则体系。这篇笔记将带你从零开始,一步步揭开网络世界的神秘面纱,理解计算机是如何从一个个“孤岛”连接成我们今天所知的庞大“互联网”的。

一、 网络是如何诞生的?—— 一部通信发展史

1.1 独立模式:计算机的“孤岛时代”

在计算机诞生之初,它们彼此之间是完全独立的,就像一座座信息孤岛。每台计算机只能处理自己的任务,数据交换需要借助软盘、磁带等物理介质,效率极其低下。

image-20250831140450901

1.2 网络互连:从孤岛到大陆

随着时代发展,人们对计算机协同工作、共享数据的需求日益迫切。于是,“网络互连”应运而生。它的核心思想很简单:将多台计算机连接在一起,实现数据共享

这种数据共享的本质,就是我们所说的网络通信(Network Communication),即计算机之间通过网络来传输数据。

根据连接规模的大小,我们可以将网络划分为两种主要类型:局域网(LAN)和广域网(WAN)。

1.2.1 局域网 (LAN)

局域网,全称 Local Area Network (LAN),从名字里的 “Local” 就能看出,它是一种在局部范围内组建的私有网络。比如,你家里的几台设备、一个办公室或一整栋教学楼里的计算机连接起来,就构成了一个局域网。

在同一个局域网内,设备之间可以方便地通信,因此我们常称之为“内网”。但是,两个独立的局域网在没有特殊连接的情况下,是无法直接通信的。

组建局域网的方式有很多,从简单的网线直连到使用更复杂的设备:

  1. 网线直连:最原始的方式,只能连接两台电脑。
    image-20250831140521710

  2. 基于集线器 (Hub):可以连接多台设备,但同一时间只有一个设备能发送数据,效率较低。
    image-20250831140527869

  3. 基于交换机 (Switch):集线器的升级版,可以实现多对设备同时通信,大大提高了效率。
    image-20250831140533245

  4. 基于交换机和路由器 (Router):当我们需要将多个局域网(或子网)连接起来时,就需要路由器了。
    image-20250831140540379

1.2.2 广域网 (WAN)

广域网,全称 Wide Area Network (WAN),顾名思义,它的覆盖范围要大得多。当我们将多个远隔千里的局域网通过路由器等设备连接起来,就形成了一个广域网。

image-20250831140544948

比如,一个跨国公司将其在北京、上海、纽约的分公司网络通过专线连接起来,这就构成了一个企业级的广域网。

而我们通常所说的互联网 (Internet),其实就是全球最大的、公共的广域网,它由无数个局域网和广域网互联而成,也常被称为“公网”或“外网”。在不那么严格的语境下,我们平时谈论的“广域网”很多时候指的就是互联网。

小思考:相对的“局”与“广”

我们需要认识到,“局域网”和“广域网”其实是相对的概念。例如,一个覆盖全国范围的特定网络,从全球视角看它是一个广域网,但从其内部管理和访问权限来看,它又可以被视为一个超大规模的“局域网”。这帮助我们理解,网络的划分并不仅仅是物理范围,还涉及到管理和逻辑边界。

image-20250831140603084

二、 网络通信的基石:地址与端口

网络互连的目的是为了通信。想象一下,在一个巨大的网络中,数据包如何才能精准地从你的电脑,穿越千山万水,到达目标服务器上的特定应用程序呢?这需要一套精准的寻址机制,就像快递系统一样。

2.1 IP 地址:你在网络世界的“门牌号”

IP 地址(Internet Protocol Address)是网络中设备(如电脑、手机、路由器)的唯一标识。简单来说,IP 地址就是设备在网络上的地址

当我们寄快递时,必须知道收件地址,快递员才能把包裹送到正确的地点。在网络世界里,IP 地址扮演的就是这个“收货地址”的角色。

IP 地址的格式:
一个 IP 地址(这里指目前仍广泛使用的 IPv4)是一个 32 位的二进制数。为了方便记忆和书写,我们通常将其分为 4 个 8 位的段(即 4 个字节),并用“点分十进制”法表示。

  • 二进制形式01100100.00000100.00000101.00000110
  • 点分十进制形式100.4.5.6 (每一段的取值范围是 0-255)

2.2 端口号:找到那个“对的人”

有了 IP 地址,我们能把数据送到正确的电脑,但这还不够。一台电脑上可能同时运行着很多需要联网的程序(比如浏览器、微信、游戏等),数据包到底应该交给谁呢?这时就需要端口号 (Port Number)

端口号用于定位到主机上的具体应用程序(进程)

继续用快递的例子:IP 地址是你的小区地址,而端口号就是你的姓名和手机号。快递员不仅要找到你的小区,还要能联系到你本人,才能完成投递。

端口号的格式:
端口号是一个 0 到 65535 之间的整数。当一个程序需要进行网络通信时,它会向操作系统申请绑定一个端口号,之后所有发往这个端口的数据都会被转交给它。

2.3 一个悬而未决的问题

现在,我们有了 IP 地址和端口号,似乎可以精确定位到网络上任何一台主机的任何一个进程了。但新的问题又来了:

网络传输的本质是 0 和 1 组成的二进制流。接收方如何知道这一长串的 0101 代表的是一张图片、一段视频,还是一句“你好!”的文本呢?即便是同样类型的文本,编码格式(如 UTF-8, GBK)又是什么?

为了解决这些问题,通信双方必须事先约定好数据的格式和解析方式。这种“约定”,就是我们接下来要讲的——网络协议

三、 认识协议:网络世界的“通用语言”

3.1 什么是协议?

网络协议 (Protocol),是网络通信中所有参与设备都必须共同遵守的一组约定和规则。它规定了如何建立连接、如何互相识别、如何组织数据等等。只有遵守相同的协议,不同的计算机之间才能顺畅地交流。

我们可以把协议理解为在网络上传输的数据包的格式规范

3.2 为什么需要协议?

想象一个场景:你和一位网友约好在人山人海的广场见面,为了能快速认出对方,你们提前约定好“见面时胸口都插一支玫瑰花”。这个“约定”就是一种简单的协议。

image-20250831140610262

计算机世界远比这个场景复杂:

  • 计算机的生产厂商成千上万。
  • 操作系统种类繁多(Windows, macOS, Linux…)。
  • 网络硬件设备(路由器、交换机)也五花八门。

如果没有一个统一的标准,让这些不同背景的“家伙们”互相通信,简直是天方夜谭。因此,必须有人站出来制定一套大家共同遵守的标准,这就是网络协议的由来。

3.3 五元组:一次网络通信的“身份证”

在 TCP/IP 协议族中,我们使用一个“五元组”来唯一标识一次网络通信。这五个关键信息构成了这次通信的“身份证”:

  1. 源 IP 地址:数据从哪里来?
  2. 源端口号:数据是源主机的哪个程序发出的?
  3. 目的 IP 地址:数据要到哪里去?
  4. 目的端口号:数据要交给目的主机的哪个程序?
  5. 协议号:双方使用哪种“语言”(如 TCP, UDP)进行交流?

image-20250831140615112

这五项信息,完美地对应了我们寄快递的全部要素:

image-20250831140627628

我们可以在 Windows 的 cmd 命令行中,通过 netstat -ano 命令来查看当前系统的网络连接情况,每一行都对应一个五元组(或其部分信息)。

image-20250831140632674

如果信息太多,还可以使用 findstr 进行过滤,例如 netstat -ano | findstr 80 可以查找所有与 80 端口相关的连接。

四、 协议分层:化繁为简的“架构之美”

网络通信是一个极其复杂的过程,如果把所有功能都塞进一个大协议里,那将是一场灾难。因此,工程师们借鉴了“化繁为简”的思想,将网络协议进行了分层设计

4.1 什么是协议分层?

协议分层,就是把庞大而复杂的网络功能,拆分成若干个更小、功能更单一的层次。每一层都专注于自己的任务,并为上一层提供服务。

我们用打电话来类比:

image-20250831140643044

在这个例子里,打电话这件事被分为了“人的沟通层”和“电信设备层”。一个重要的原则是:协议只能在相邻层之间进行交互。上层调用下层提供的服务,下层为上层的工作提供支撑,不能“跨级”指挥。

4.2 分层的好处是什么?

协议分层最大的好处,在于解耦和复用,这与我们软件开发中的“面向接口编程”思想不谋而合。

1. 关注点分离:上层协议的使用者,完全不需要关心下层协议是如何实现的。就像我们打电话时,只需要会说话就行,完全不用懂交换机和基站的工作原理。
2. 灵活性和可维护性:每一层都可以被独立地替换或升级,只要它向上和向下提供的接口规范不变,就不会影响到整个系统。比如,电信网络从 4G 升级到 5G,我们打电话的方式和体验几乎没有变化。

在代码世界里,这就好比定义好了一个接口。服务的提供方负责实现接口,隐藏所有复杂细节(封装);服务的使用方只管调用接口,不关心具体实现。这种模式极大地提高了软件的可扩展性和可维护性。

image-20250831140649412

4.3 OSI 七层模型:理想化的理论丰碑

为了给网络协议分层提供一个通用参考标准,国际标准化组织(ISO)提出了 OSI 七层模型(Open System Interconnection Model)。

它是一个逻辑上的定义和规范,从上到下将网络通信划分为了七个层次:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

image-20250831140653618

image-20250831140659571

然而,OSI 模型过于复杂,实现起来成本高昂,导致它最终没有在现实世界中被广泛采用,更多地是作为一个理论参考。

4.4 TCP/IP 五层(或四层)模型:事实上的工业标准

与 OSI 的理论化不同,TCP/IP 协议簇成为了现实世界中网络通信的基石。它采用了一个更为实用的 5 层(或 4 层)结构。

image-20250831140704452

让我们自上而下地看看每一层都做了什么:

  • 应用层 (Application Layer):离用户最近的一层,负责处理特定应用程序的通信逻辑。例如,HTTP (网页浏览)、FTP (文件传输)、SMTP (邮件发送) 等协议都在这一层。我们日常的网络编程,主要就是和这一层打交道。

  • 传输层 (Transport Layer):负责两台主机上进程之间的数据传输。它有两个核心协议:

    • TCP (Transmission Control Protocol):提供可靠的、面向连接的数据传输。
    • UDP (User Datagram Protocol):提供不可靠的、无连接的数据传输,但速度更快。
  • 网络层 (Network Layer):负责地址管理和路由选择,即规划数据包从源头到终点的最佳路径。

    • IP (Internet Protocol) 是这一层的核心,通过 IP 地址来标识主机。
    • 路由器 (Router) 就是工作在网络层的关键设备。
  • 数据链路层 (Data Link Layer):负责相邻两个设备之间的数据帧传输和识别。它处理诸如帧同步、冲突检测、差错校验等具体工作。

    • 以太网 (Ethernet) 是最常见的链路层标准。
    • 交换机 (Switch) 工作在这一层。
  • 物理层 (Physical Layer):最底层,负责将二进制数据转换成光、电信号在物理介质(如网线、光纤、电磁波)上传输。它决定了网络的最大传输速率、距离和抗干扰能力。

    • 集线器 (Hub) 是一个典型的物理层设备。

说明:在很多时候,我们并不特别区分物理层和数据链路层,而是将它们视为一个整体,称为“网络接口层”。这样一来,模型就简化为了 TCP/IP 四层模型,这种说法也同样普遍。

经典面试题:网络设备分别工作在哪一层?
  • 主机 (Host):作为通信的端点,其操作系统内核完整实现了从物理层到传输层的全部功能,应用程序则工作在应用层。
  • 路由器 (Router):工作到网络层。它连接不同的网络,核心任务是根据 IP 地址进行寻址和转发数据包(三层转发)。
  • 交换机 (Switch):工作到数据链路层。它连接同一网络内的设备,根据 MAC 地址(链路层地址)转发数据帧(二层转发)。
  • 集线器 (Hub):只工作在物理层。它不识别数据内容,只是简单地将收到的信号广播给所有端口。

注意:这里讨论的是传统意义上的网络设备。随着技术发展,也出现了能工作在更高层次的“三层交换机”或“四层路由器”,但上述划分是理解网络设备基础功能的关键。

五、 数据包的奇幻漂流:封装与分用

我们已经了解了协议分层,那么数据在发送和接收时,是如何在这些层次之间流转的呢?答案是封装 (Encapsulation)分用 (Decapsulation)

5.1 封装:层层打包,准备上路

当一个应用程序要发送数据时,数据会像一个包裹一样,从上到下,被每一层协议加上自己的“包装纸”(即报头 Header),这个过程就叫封装

image-20250831140712181

让我们跟随一个数据包,体验一下它的“打包之旅”:

  1. 应用层:你的应用程序(如浏览器)准备好要发送的数据(比如一个 HTTP 请求)。这些数据首先会被序列化,转换成二进制流。
  2. 传输层:应用层调用传输层接口,将数据交给传输层。传输层(以 TCP 为例)会给数据加上一个 TCP 报头,形成 TCP 段 (Segment)。这个报头里包含了源/目的端口号等信息,就像快递单上的收件人信息。
  3. 网络层:传输层继续调用网络层接口。网络层(IP 协议)为 TCP 段加上一个 IP 报头,形成 IP 包 (Packet)。IP 报头里包含了源/目的 IP 地址,相当于快递单上的收发货地址。它还记录了上层协议是 TCP 还是 UDP。
  4. 数据链路层:网络层将 IP 包交给数据链路层。数据链路层(以太网为例)会为它加上以太网帧头帧尾,形成以太网帧 (Frame)。帧头里有下一跳设备的 MAC 地址,帧尾则用于数据校验。
  5. 物理层:最终,完整的以太网帧被交给网卡,转换成光/电信号,通过网线、光纤或无线电波,真正地发送出去。

这个过程,对于同一网段内的两台主机通信,可以直观地表示为:

image-20250831140717174

术语小贴士

你可能听过数据包的不同叫法,它们其实对应了不同分层下的形态:

  • 段 (Segment):特指传输层(TCP)的数据单元。
  • 数据报 (Datagram):特指传输层(UDP)和网络层(IP)的数据单元。
  • 包 (Packet):通常泛指网络中传输的数据,但在特定语境下常指网络层的数据包。
  • 帧 (Frame):特指数据链路层的数据单元。

日常交流中我们不必严格区分,统一称为“数据包”通常不会引起误解。

5.2 分用:层层拆解,送达终点

当数据包历经千辛万苦到达目的主机后,一个相反的过程——分用(或称解封装)就开始了。这个过程就像拆快递,从外到内一层层剥掉包装,直到取出最终的货物。

image-20250831140728282

  1. 物理层:网卡接收到光/电信号,将其还原为二进制的以太网帧,交给数据链路层。
  2. 数据链路层:检查以太网帧的帧尾以确保数据完整性,然后剥掉帧头和帧尾,根据帧头中的协议类型(如 IP),将中间的 IP 包交给网络层。
  3. 网络层:解析 IP 报头,检查目的 IP 地址是否是自己。确认无误后,剥掉 IP 报头,根据报头中的协议号(如 TCP),将 TCP 段交给传输层。
  4. 传输层:解析 TCP 报头,根据其中的目的端口号,找到正在等待接收数据的应用程序(比如你的浏览器)。然后剥掉 TCP 报头,将最原始的应用层数据交给这个程序。
  5. 应用层:应用程序收到数据后,进行反序列化,将其还原成有意义的信息(如网页内容),最终展示在你的屏幕上。

5.3 中间设备的工作

在跨网络的复杂旅程中,数据包还会经过交换机和路由器等中间站。这些设备也会进行部分的封装和分用:

  • 当数据包到达一个交换机时,它只会被分用到数据链路层。交换机读取帧头信息,确定下一个该发往哪个端口,然后重新封装成帧发送出去。
  • 当数据包到达一个路由器时,它会被分用到网络层。路由器读取 IP 报头,根据路由表决定下一跳的路径,然后重新封装数据包,发往下一个目的地。

image-20250831140735036

虽然这个过程听起来步骤繁多,但对于现代计算机和网络设备来说,这一切都在电光火石之间完成,确保了我们流畅的网络体验。

六、 本文核心要点总结 (Key Takeaways)

  1. 网络的核心是连接与通信:网络的发展就是为了打破信息孤岛,实现数据共享,其基础是基于一套精确的寻址和识别机制(IP 地址 + 端口号)。
  2. 协议是网络的灵魂:为了让不同厂商、不同系统的设备能够对话,必须遵守统一的网络协议。一次通信由五元组(源IP/端口、目的IP/端口、协议号)唯一确定。
  3. 分层是化繁为简的法宝:复杂的网络功能被拆分到 TCP/IP 模型的不同层次中,实现了“高内聚、低耦合”,使得网络体系灵活、健壮且易于扩展。
  4. 封装与分用是数据流转的方式:数据在发送时被从上到下封装(添加报头),在接收时被从下到上分用(剥掉报头),从而在不同协议层之间正确传递。

希望这篇笔记能帮助你对网络原理有一个初步但清晰的认识。网络世界博大精深,这仅仅是一个开始,后续我们将深入探索 TCP/IP 协议中更多有趣的细节!

http://www.dtcms.com/a/359921.html

相关文章:

  • PythonDay42
  • 提取动漫图像轮廓并拟合为样条曲线(MATLAB)
  • Mysql学习 Day3 Explain详解与索引优化
  • APB验证VIP Agent的各个组件之间的通信
  • SpringAI应用开发面试实录:核心技术、架构设计与业务场景全解析
  • React前端开发_Day12_极客园移动端项目
  • 解决 uni-app 中大数据列表的静默UI渲染失败问题
  • UniApp 基础开发第一步:HBuilderX 安装与环境配置
  • Wi-Fi技术——物理层技术
  • 【C++】构造函数初始化详解
  • 漫谈《数字图像处理》之基函数与基图像
  • 分布式测试平台ITP:让自动化测试更高效、更稳定
  • IS-IS 与 OSPF 协议机制比较
  • 软考 系统架构设计师系列知识点之杂项集萃(138)
  • 【Proteus仿真】开关控制系列仿真——开关控制LED/拨码开关二进制计数/开关和继电器控制灯灭
  • Java试题-选择题(26)
  • zkML-JOLT——更快的ZK隐私机器学习:Sumcheck +Lookup
  • 【iOS】MVC架构
  • OpenCL C 内核(Kernel)
  • 在实践中学Java(中)面向对象
  • Elasticsearch vs Solr vs OpenSearch:搜索引擎方案对比与索引设计最佳实践
  • [光学原理与应用-353]:ZEMAX - 设置 - 可视化工具:2D视图、3D视图、实体模型三者的区别,以及如何设置光线的数量
  • 设计模式概述:为什么、是什么与如何应用
  • Ethers.js vs Wagmi 的差异
  • 如何利用AI IDE快速构建一个简易留言板系统
  • Playwright Python 教程:实战篇
  • 外贸服装跟单软件怎么选才高效?
  • C++ 迭代器的深度解析【C++每日一学】
  • 从零到一:使用anisble自动化搭建kubernetes集群
  • Openstack Eproxy 2025.1 安装指南