网络初识
- 前言
- 网络发展及基础认知
-
- 网络发展
-
- [局域网 LAN(Local Area Network)](#局域网 LAN(Local Area Network))
- [广域网 WAN(Wide Area Network)](#广域网 WAN(Wide Area Network))
- 网络通信三大核心基础
- 协议分层
-
- [OSI 七层网络模型 VS TCP/IP 五层网络模型](#OSI 七层网络模型 VS TCP/IP 五层网络模型)
- 网络设备所在分层
- 发送端:数据完整封装流程
- 接收端:数据解封装流程
- 中间转发设备的处理逻辑
- 全文总结
- [🔗 系列文章导航](#🔗 系列文章导航)
前言
在上一篇博客中,我们完整完结了 Java IO 全套知识点,从文件操作、字节流字符流到资源关闭、递归遍历实战全部梳理完毕。按照既定的 Java 后端学习路线:并发编程 → IO 流 → 网络,从本篇开始正式开启网络专栏。
本文为网络零基础开篇笔记,完整梳理了网络组网结构、核心通信概念、TCP/IP 五层模型、数据封装与解封装完整流程,是后续 Java Socket 编程、UDP/TCP 代码实战、HTTP 协议、Netty 框架学习的前置必备理论,同时也是校招、国赛面试高频基础考点。
网络发展及基础认知
网络发展
网络发展有四个时代:单机时代 ⇒ 局域网时代 ⇒ 广域网时代 ⇒ 移动互联网时代。
局域网 LAN(Local Area Network)
对局域网的基本认识:
- 局域网:把多台电脑连接到同一个路由器,就构成了局域网,局域网内设备可以互相通信。
- LAN口:路由器用来连接局域网内部电脑、交换机等内网设备的接口。
- WAN口:路由器专门用来连接上级路由器、接入外网(广域网)的接口。
- 一般家用路由器有1个WAN口和4个LAN口(五个网口)。
局域网有四种组建方式:
- 基于网线直连;
- 基于集线器组建;
- 基于交换机组建;
- 基于交换机和路由器组建。
广域网 WAN(Wide Area Network)
广域网:把更多的局域网连接到一起,构成的网络更加庞大。
局域和广域没有明显的界限。
网络通信三大核心基础
IP地址
- IP地址:描述了一个设备在网络上的地址。
- 使用32位(4字节)数字表示一个IP地址。
- 一般,会把IP地址表示成4个0-255之间的十进制数字,并且使用3个点进行分隔,也就是点分十进制。
端口号
- 端口号:区分一个主机上不同的应用程序。
- 端口号是整数,2字节,取值范围为0-65535。
- 规则:同一个主机上,一个端口号只能被一个程序绑定,但一个程序可以绑定多个端口号。
- 端口分类:0一般不使用;1-1023范围的端口号,系统留做特殊用途,知名端口号;1024-65535范围的端口号,动态端口,自定义程序、客户端程序使用。
完整通信标识
完整通信标识:IP+端口。
单独IP只能定位主机,IP+端口才能精准定位到主机上某一个运行的应用程序,一次通信必然是有收有发,两端都需要IP+端口。
网络协议
- 网络依靠光信号、电信号传输二进制数据。
- 协议就是通信双方提前约定好的规则,规定了双方数据的传输格式、解析方式。
五元组
一次完整的网络通信,必须包含五元组:源IP、源端口、目的IP、目的端口、协议类型。
协议分层
由于网络通信太复杂,拆分就拆出来太多的小的协议,这么多小的协议不好管理,就需要对协议分层。
分层原则:按协议的定位或作用进行分类,并且约定不同层次之间的调用关系。
约定上下层调用关系:上层协议调用下层协议,下层为上层提供服务与支持。
OSI 七层网络模型 VS TCP/IP 五层网络模型
- OSI 七层网络模型:仅仅出现在教科书中,不落地使用。
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。- TCP/IP 五层网络模型:是OSI 七层网络模型的简化。
应用层、传输层、网络层、数据链路层、物理层。
TCP/IP 五层网络模型每一层核心职责:
- 物理层:描述的是网络通信的硬件设备;
- 数据链路层:两个相邻节点之间的数据传输情况;
- 网络层:进行路径规划,核心协议:IP协议;
- 传输层:关注起点和终点,核心协议:TCP、UDP;
- 应用层:应用程序如何使用这个数据。
网络设备所在分层
- 对于一台主机,操作系统内核实现了从传输层到物理层,完整五层全部参与;
- 对于一台路由器,工作在TCP/IP下三层(网络层、数据链路层、物理层),依靠IP地址完成路由转发;
- 对于一台交换机,工作在TCP/IP下两层(数据链路层、物理层),依靠MAC地址转发数据;
- 对于集线器,仅工作在物理层,只做接口扩展。
发送端:数据完整封装流程
封装:从上层到下层,每一层都给上层传递下来的数据,拼接当前层级的头部(部分层还有尾部),附加辅助通信信息的全过程。
整体结构:头部 + 载荷(上层完整数据包)。
应用层
应用层数据由业务场景、程序员自定义,本质就是待传输的二进制字符串、字节数据。
传输层
代表协议:UDP、TCP;
在应用层数据前拼接传输层头部,构成传输层数据包;
UDP 头部最核心信息:源端口、目的端口。
数据包结构:UDP报头 + UDP载荷(应用层数据)。
网络层代表协议:IP 协议;
在传输层数据包前拼接IP 头部;
IP 头部最核心属性:源 IP 地址、目的 IP 地址。
数据包结构:IP报头 + UDP报头 + UDP载荷。
数据链路层代表协议:以太网协议;格式为「头部 + 载荷 + 尾部」;
以太网头部核心:源 MAC 地址、目的 MAC 地址(MAC 是设备在局域网内的硬件地址)。
数据包结构:以太网报头 + IP报头 + UDP报头 + UDP载荷 +尾。
物理层将完整数据包转换为二进制 0、1 序列,通过光信号、电信号在网线、光纤中传输。
接收端:数据解封装流程
解封装是封装的逆过程,逐层剥离当前层级头部,将载荷向上交付给上一层协议处理。
物理层
接收光电信号,还原为二进制数据,组装成完整以太网数据包,交付数据链路层。
数据链路层解析以太网协议,剥离以太网头部与尾部,取出载荷交付网络层。
网络层解析 IP 协议,剥离 IP 头部,取出载荷交付传输层。
传输层解析 UDP/TCP 协议,剥离传输层头部,根据头部中的目的端口,把载荷交给对应端口的应用程序。
应用层应用程序按照自定义应用层协议,解析业务数据。
中间转发设备的处理逻辑
数据包从发送主机出发后,会经过大量交换机、路由器转发,两种设备处理逻辑完全不同:
- 路由器转发
路由器会将数据包解封装至网络层,读取 IP 头部的目的 IP,查询路由表规划下一跳路径;转发前会重新完成网络层及以下层级的封装。 - 交换机转发
交换机只会将数据包解封装至数据链路层,读取 MAC 地址,依靠 MAC 地址表转发,只涉及数据链路层、物理层。
全文总结
- 组网分为局域网 LAN、广域网 WAN,分清路由器 LAN 口(内网)与 WAN 口(外网)是组网基础;
- IP 定位主机、端口定位主机内应用程序,五元组是一次网络通信的完整标识;
- TCP/IP 五层模型是网络理论核心,牢记每一层职责、代表协议、工作设备层级;
- 发送端层层封装、接收端层层解封装,路由器看 IP 寻址、交换机看 MAC 寻址。
🔗 系列文章导航
本篇是「Java并发编程系列」的连载内容,点击链接查看完整系列:
🔹 上一篇:Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
🔹 下一篇:网络(二)|Java Socket 编程全实战:UDP 回显 / 词典服务器、TCP 单线程→多线程线程池演进