网络初识|基础入门:局域网广域网、IP 端口、TCP/IP 五层模型与封装解封装全过程

网络初识

前言

在上一篇博客中,我们完整完结了 Java IO 全套知识点,从文件操作、字节流字符流到资源关闭、递归遍历实战全部梳理完毕。按照既定的 Java 后端学习路线:并发编程 → IO 流 → 网络,从本篇开始正式开启网络专栏。

本文为网络零基础开篇笔记,完整梳理了网络组网结构、核心通信概念、TCP/IP 五层模型、数据封装与解封装完整流程,是后续 Java Socket 编程、UDP/TCP 代码实战、HTTP 协议、Netty 框架学习的前置必备理论,同时也是校招、国赛面试高频基础考点。

网络发展及基础认知

网络发展

网络发展有四个时代:单机时代 ⇒ 局域网时代 ⇒ 广域网时代 ⇒ 移动互联网时代。

局域网 LAN(Local Area Network)

对局域网的基本认识:

  1. 局域网:把多台电脑连接到同一个路由器,就构成了局域网,局域网内设备可以互相通信。
  2. LAN口:路由器用来连接局域网内部电脑、交换机等内网设备的接口。
  3. WAN口:路由器专门用来连接上级路由器、接入外网(广域网)的接口。
  4. 一般家用路由器有1个WAN口和4个LAN口(五个网口)。

局域网有四种组建方式:

  1. 基于网线直连;
  2. 基于集线器组建;
  3. 基于交换机组建;
  4. 基于交换机和路由器组建。

广域网 WAN(Wide Area Network)

广域网:把更多的局域网连接到一起,构成的网络更加庞大。

局域和广域没有明显的界限。

网络通信三大核心基础

IP地址

  1. IP地址:描述了一个设备在网络上的地址。
  2. 使用32位(4字节)数字表示一个IP地址。
  3. 一般,会把IP地址表示成4个0-255之间的十进制数字,并且使用3个点进行分隔,也就是点分十进制。

端口号

  1. 端口号:区分一个主机上不同的应用程序。
  2. 端口号是整数,2字节,取值范围为0-65535。
  3. 规则:同一个主机上,一个端口号只能被一个程序绑定,但一个程序可以绑定多个端口号。
  4. 端口分类:0一般不使用;1-1023范围的端口号,系统留做特殊用途,知名端口号;1024-65535范围的端口号,动态端口,自定义程序、客户端程序使用。

完整通信标识

完整通信标识:IP+端口。

单独IP只能定位主机,IP+端口才能精准定位到主机上某一个运行的应用程序,一次通信必然是有收有发,两端都需要IP+端口。

网络协议

  1. 网络依靠光信号、电信号传输二进制数据。
  2. 协议就是通信双方提前约定好的规则,规定了双方数据的传输格式、解析方式。

五元组

一次完整的网络通信,必须包含五元组:源IP、源端口、目的IP、目的端口、协议类型。

协议分层

由于网络通信太复杂,拆分就拆出来太多的小的协议,这么多小的协议不好管理,就需要对协议分层。

分层原则:按协议的定位或作用进行分类,并且约定不同层次之间的调用关系。

约定上下层调用关系:上层协议调用下层协议,下层为上层提供服务与支持。

OSI 七层网络模型 VS TCP/IP 五层网络模型

  1. OSI 七层网络模型:仅仅出现在教科书中,不落地使用。
    应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
  2. TCP/IP 五层网络模型:是OSI 七层网络模型的简化。
    应用层、传输层、网络层、数据链路层、物理层。

TCP/IP 五层网络模型每一层核心职责:

  1. 物理层:描述的是网络通信的硬件设备;
  2. 数据链路层:两个相邻节点之间的数据传输情况;
  3. 网络层:进行路径规划,核心协议:IP协议;
  4. 传输层:关注起点和终点,核心协议:TCP、UDP;
  5. 应用层:应用程序如何使用这个数据。

网络设备所在分层

  1. 对于一台主机,操作系统内核实现了从传输层到物理层,完整五层全部参与;
  2. 对于一台路由器,工作在TCP/IP下三层(网络层、数据链路层、物理层),依靠IP地址完成路由转发;
  3. 对于一台交换机,工作在TCP/IP下两层(数据链路层、物理层),依靠MAC地址转发数据;
  4. 对于集线器,仅工作在物理层,只做接口扩展。

发送端:数据完整封装流程

封装:从上层到下层,每一层都给上层传递下来的数据,拼接当前层级的头部(部分层还有尾部),附加辅助通信信息的全过程。

整体结构:头部 + 载荷(上层完整数据包)。

应用层

应用层数据由业务场景、程序员自定义,本质就是待传输的二进制字符串、字节数据。
传输层

  1. 代表协议:UDP、TCP;

  2. 在应用层数据前拼接传输层头部,构成传输层数据包;

  3. UDP 头部最核心信息:源端口、目的端口。

  4. 数据包结构:UDP报头 + UDP载荷(应用层数据)。
    网络层

  5. 代表协议:IP 协议;

  6. 在传输层数据包前拼接IP 头部;

  7. IP 头部最核心属性:源 IP 地址、目的 IP 地址。

  8. 数据包结构:IP报头 + UDP报头 + UDP载荷。
    数据链路层

  9. 代表协议:以太网协议;格式为「头部 + 载荷 + 尾部」;

  10. 以太网头部核心:源 MAC 地址、目的 MAC 地址(MAC 是设备在局域网内的硬件地址)。

  11. 数据包结构:以太网报头 + IP报头 + UDP报头 + UDP载荷 +尾。
    物理层

将完整数据包转换为二进制 0、1 序列,通过光信号、电信号在网线、光纤中传输。

接收端:数据解封装流程

解封装是封装的逆过程,逐层剥离当前层级头部,将载荷向上交付给上一层协议处理。

物理层

接收光电信号,还原为二进制数据,组装成完整以太网数据包,交付数据链路层。
数据链路层

解析以太网协议,剥离以太网头部与尾部,取出载荷交付网络层。
网络层

解析 IP 协议,剥离 IP 头部,取出载荷交付传输层。
传输层

解析 UDP/TCP 协议,剥离传输层头部,根据头部中的目的端口,把载荷交给对应端口的应用程序。
应用层

应用程序按照自定义应用层协议,解析业务数据。

中间转发设备的处理逻辑

数据包从发送主机出发后,会经过大量交换机、路由器转发,两种设备处理逻辑完全不同:

  1. 路由器转发
    路由器会将数据包解封装至网络层,读取 IP 头部的目的 IP,查询路由表规划下一跳路径;转发前会重新完成网络层及以下层级的封装。
  2. 交换机转发
    交换机只会将数据包解封装至数据链路层,读取 MAC 地址,依靠 MAC 地址表转发,只涉及数据链路层、物理层。

全文总结

  1. 组网分为局域网 LAN、广域网 WAN,分清路由器 LAN 口(内网)与 WAN 口(外网)是组网基础;
  2. IP 定位主机、端口定位主机内应用程序,五元组是一次网络通信的完整标识;
  3. TCP/IP 五层模型是网络理论核心,牢记每一层职责、代表协议、工作设备层级;
  4. 发送端层层封装、接收端层层解封装,路由器看 IP 寻址、交换机看 MAC 寻址。

🔗 系列文章导航

本篇是「Java并发编程系列」的连载内容,点击链接查看完整系列:

🔹 上一篇:Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战

🔹 下一篇:网络(二)|Java Socket 编程全实战:UDP 回显 / 词典服务器、TCP 单线程→多线程线程池演进

👉 点击直达「Java后端基础」专栏合集

相关推荐
Java面试题总结1 小时前
区间树:反向映射的前置数据结构
java·前端·数据结构
LiaoWL1231 小时前
【SpringCloud合集-06】Spring Cloud Gateway网关学习笔记
笔记·学习·spring cloud
KaMeidebaby1 小时前
卡梅德生物技术快报|兔单克隆抗体:噬菌体 Fab 免疫文库搭建实操:兔单克隆抗体重组构建完整参数
前端·网络·数据库·人工智能·算法
Wang's Blog1 小时前
Go-Zero基础入门1: 微服务框架与选型分析
开发语言·微服务·golang
尚早立志1 小时前
六)Spring Boot 源码研读之prepareContext 准备上下文
java·spring boot·后端·spring
鱼听禅1 小时前
ubuntu学习笔记-使用ls-ml-toolkit工具识别Label Studio数据数据训练yolo模型
笔记·学习·ubuntu
喜欢就别7 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (2)--- On-Policy Distillation
人工智能·笔记
Lhappy嘻嘻9 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
laoli_coding9 小时前
如何配置HTTPS站点访问的免费SSL域名证书
网络协议·https·node.js·ssl