网络原理 初识[Java EE]

server/2025/3/4 20:49:13/

目录

网络发展史

独立模式

网络互联

局域网 LAN

1. 基于网络直连

2. 基于集线器(Hub)组建

3. 基于交换机(Switch)组建

4. 基于交换机和路由器(Router)组建

广域网 WAN

网络通信基础

IP 地址

1. 概念

2. 格式

端口号

1. 概念

2.格式

认识协议

1. 概念

2. 作用

3. 协议分层

3.1 什么是协议分层

3.2 分层的作用

3.2.1 上层不需要了解下层的细节(封装)

3.2.2 灵活的调整/替换某层的协议

4. 五元组

4.1 源 IP :

4.2 源端口号 :

4.3 目的 IP :

4.4 目的端口号 :

4.5 协议号 :

5. OSI 七层网络模型 [只是在教科书中]

5.1 物理层:

5.2 数据链路层:

5.3 网络层:

5.4 传输层:

5.5 会话层:

5.6 表示层:

5.7 应用层:

6. TCP/IP 五层(或四层)网络模型 [真实世界的情况]

6.1 物理层: 

 6.2 数据链路层:

6.3 网络层: 

6.4 传输层:

6.5 应用层:

7. 网络设备所在分层

7.1 对于一台主机:

7.2 对于一台路由器:

7.3 对于一台交换机:

7.4 对于集线器:

8. 网络分层对应

9. 网络数据传输的基本流程 (封装和分用)

9.1 应用层

9.2 传输层 

9.3 网络层 

9.4 数据链路层

9.5 物理层


网络发展史

独立模式

// 每个计算机之间相互独立, 每个终端各自持有客户数据

网络互联

// 随着时代的发展, 越来越需要计算机之间互相通信, 共享软件和数据, 即以多个计算机协同工作来完成业务, 就有了网络互联

// 网络互联: 将多台计算机连接在一起, 完成数据共享

// 数据共享的本质是网络数据传输, 即计算机之间通过网络来传输数据, 也称为网络通信

// 根据网络互联的规模不同, 可以划分为局域网和广域网

局域网 LAN

// 局域网 (Local Area Network), 简称 LAN

// 局域网内的主机之间能方便的进行网络通信, 又称为内网; 局域网和局域网之间在没有连接的情况下, 是无法通信的

// 局域网组建网络的方式有很多种:

1. 基于网络直连

// 主机之间通过网线相互连接

2. 基于集线器(Hub)组建

// 主机通过集线器连接

3. 基于交换机(Switch)组建

// 主机通过交换机连接

4. 基于交换机和路由器(Router)组建

// 路由器向下连接多个交换机, 交换机向下连接多台主机

广域网 WAN

// 广域网, 即 Wide Area Network, 简称 WAN

// 通过路由器, 将多个局域网连接起来, 在物理上组成很大范围的网络, 就形成了广域网, 广域网内部的局域网都属于其子网

网络通信基础

// 网络互联的目的是进行网络通信, 即网络数据传输, 更具体一点, 是网络主机上的不同进程间, 基于网络传输数据

IP 地址

1. 概念

// IP 地址主要用于标识网络主机, 其他网络设备 (如路由器) 的网络地址. 简单说, IP 地址用于定位主机的网络地址 (描述网络上的一个设备所在的位置)

2. 格式

// IP 地址是一个 32 位的二进制数, 通常被分割为 4 个 "8位二进制数(也就是四个字节)", 通常用 "点分十进制" 的方式来表示, 即 a.b.c.d 的形式

端口号

1. 概念

// 在网络通信中, IP 地址用于标识主机网络地址, 端口号可以标识主机中发送数据,接收数据的进程. 简单说: 端口号用于定位主机中的进程(区分一个主机上不同的应用程序)

// 一个网络程序, 在启动的时候, 都需要绑定一个或者多个端口号, 后续的通信过程都需要依赖端口来进行展开的, (mysql 默认绑定的端口 3306)

2.格式

// 端口号是 0 ~ 65535 范围的数字, 在网络通信中, 进程可以通过绑定一个端口号, 来发送及接收网络数据

认识协议

1. 概念

// 协议, 网络协议的简称, 网络协议是网络通信 (即网络数据传输) 经过的所以网络设备都必须共同遵从的一组约定, 规则. (描述了网络通信传输的数据的含义)

// 协议 (protocol) 最终体现为在网络上传输的数据包的格式

2. 作用

// 让大家都按照同样的标准来研发设备, 大家搞出来的都可以在一起相互通信了

3. 协议分层

3.1 什么是协议分层

// 对应网络协议来说, 靠一个协议解决所有问题,会导致这个协议非常复杂, 因此往往会对这些协议进行分类,分层次定义

// 上层协议, 调用下层协议, 下层协议, 为上层提供服务支持, 这样可以避免层级调用引起的混乱

// 也就是给这些协议搞了明确的层级关系, 避免跨层之间的交互, 降低耦合, 提高这个系统的可读性

3.2 分层的作用
3.2.1 上层不需要了解下层的细节(封装)
3.2.2 灵活的调整/替换某层的协议

4. 五元组

// 在 TCP/IP 协议中, 用五元组来标识一个网络通信:

4.1 源 IP :

// 标识主机

4.2 源端口号 :

// 标识源主机中该次通信发送数据的进程

4.3 目的 IP :

// 标识目的主机

4.4 目的端口号 :

// 标识目的主机中该次通信接收数据的进程

4.5 协议号 :

// 标识发送进程和接收进程双方约定的数据格式

5. OSI 七层网络模型 [只是在教科书中]

5.1 物理层:

// 描述的网络通信中的一些基础设施需要遵守的规范和约定 (网线, 网口等等的物理设施的形状和规格)

5.2 数据链路层:

// 相邻节点(互联设备)之间, 数据如何传输

5.3 网络层:

// 地址管理与路由选择 (路线规划)

5.4 传输层:

// 负责两个节点之间的数据传输. 只关注起点和终点, 不关注中间过程(数据从哪出发, 要到哪里去)

5.5 会话层:

// 通信管理, 负责建立和断开通信连接 (数据流动的逻辑通路), 管理运输层以下的分层

5.6 表示层:

// 设备固有数据格式和网络标准数据格式的转换

5.7 应用层:

// 针对特定应用的协议(拿到这个数据具体要用来干啥)

6. TCP/IP 五层(或四层)网络模型 [真实世界的情况]

// 算上 物理层 就是 五层, 不算就是 四层 (物理层是偏硬件的, 和软件关系不大)

// TCP/IP 是一组协议的代名词, 它包含很多协议, 组成了 TCP/IP 协议簇

// TCP/IP 通讯协议采用了 5 层的层级结构, 每一层都呼叫它的下一层所提供的网络来完成自己的需求

6.1 物理层: 

// 负责光/电信号的传递方式

 6.2 数据链路层:

// 负责设备之间的数据帧的传送和识别

6.3 网络层: 

// 负责地址管理和路由选择

6.4 传输层:

// 负责两台主机之间的数据传输

6.5 应用层:

// 负责应用程序间的沟通 

7. 网络设备所在分层

7.1 对于一台主机:

// 它的操作系统内核实现了从传输层到物理层的内容, 即是 TCP/IP 五层模型的下四层

7.2 对于一台路由器:

// 它实现了从网络层到物理层, 即是 TCP/IP 五层模型的下三层

7.3 对于一台交换机:

// 它实现了从数据链路层到物理层, 即是 TCP/IP 五层模型的下两层

7.4 对于集线器:

// 它只实现了物理层

8. 网络分层对应

// 数据传输时, 经过不同的网络节点 (主机, 路由器) 时, 网络分层需要对应

// 以下为同一段内的两台主机进行文件传输:

应用层Telnet, FTP 和 e-mail 等
传输层TCP 和 UDP
网络IP, ICMP 和 IGMP
链路层设备驱动程序及接口卡

9. 网络数据传输的基本流程 (封装和分用)

// 假设主机 A 给主机 B 发送一个数据, 过程如下:

9.1 应用层

// 根据应用层协议获取构造好的应用层数据包

// 所谓的 "构造应用层数据报" 过程, 就是按照一定格式进行字符串拼接

// 发送方和接收方, 需要达成一致

// 应用程序, 就会调用传输层提供的接口, 把上述数据交给传输层进行处理

9.2 传输层 

// 传输层协议有很多, 其中最主要的是 TCP 和 UDP 

// 假设使用 UDP 协议, 上面把数据从应用层传到传输层, 交给 UDP, 于是 UDP 协议按照字节的协议格式生成一个 UDP 数据报(UDP 报头和 UDP 的载荷)

// UDP 不关心应用层数据, 只是把应用数据当做一个字符串, 构造出一个 UDP 数据报

// 此时, 传输层会把构造好的 UDP 数据报, 进一步交给网络

9.3 网络层 

// 网络层最主要的协议是: IP 协议

// IP 协议也会根据自己的格式, 构造 IP 数据报 (IP 报头 + UDP 报头 + IP 数据报的载荷)

// IP 报头中最关键的是 源IP 和 目的IP

// IP 协议也不会关心载荷内容是啥, 只是单纯的把载荷当做一个字符串, 在这个基础上拼接上另外一个 IP 报头

// 接下来就需要把数据传输到数据链路层

9.4 数据链路层

// 以太网, 又会针对 IP 数据报, 进行进一步封装, 再添加上数据头和数据尾

// 以太网也不关心载荷是啥, 知识把载荷当做字符串, 进一步的拼接上帧头帧尾, 构造成 以太网数据帧 (帧头 + 以太网数据报的载荷[IP 报头 + UDP 报头 + 载荷] + 帧尾)

// 网络上传输的数据的基本单位, 有很多种术语叫法 (包 [packet], 帧 [frame], 报 [Datagram], 段 [segment])

9.5 物理层

// 上面传输过来的数据, 本质上都是二进制的数据 (一组 0101 构成的数据)

// 硬件设备(网卡) 就需要对上述数据进行转换了, 转换为 光信号/ 电信号/ 电磁波

// 到这里, 主机 A 就完成了发送过程, 然后来看 接收方 (主机 B)的情况

1) 物理层  接收光信号/ 电信号/ 电磁波

// 猫: (调制解调器)调制: 把你要传输的信息放到光电信号中; 解调: 从光电信号中把信息取出来

// 它需要把收到的信号进行解调, 得到了一串1010 二进制序列 (以太网帧)

// 接下来就会把数据传给它的上一层 : 数据链路层

2) 数据链路层

// 数据链路层的以太网协议, 就会针对这个数据进行解析

// 去掉 帧头和 帧尾

// 然后将载荷部分取出来, 交给上层 : 网络

3) 网络

// 网络层的 IP 协议, 就会继续针对这个数据进行解析, 去掉 IP 报头

// 然后将载荷部分取出来, 继续交给上层 : 传输层

4) 传输层

// 根据 IP 报头中的字段, 就知道当前这个载荷是一个 UDP 数据报, 就交给传输层的 UDP 协议, UDP 针对数据报继续进行解析, 去掉 UDP 报头

// 然后将载荷部分取出来, 继续交给上层 : 应用层 

5) 应用层

// UDP 报头中, 有一个字段 : 目的端口, 根据目的端口找到关联的应用程序, 就交给这个程序即可

// 其中, 主机 A , 从上到下, 依次添加报头的过程, 称为封装; 主机 B , 从下到上, 依次解析报头的过程, 称为 分用

// 封装就相当于在打包快递, 分用相当于是在拆快递

// 每次网络数据传输都要经历这些过程


http://www.ppmy.cn/server/172427.html

相关文章

redis八股个人总结

1.MySQL和Redis的区别? 1. 基本特性 MySQL 类型:关系型数据库(RDBMS)存储方式:基于表的结构化数据存储,数据以行和列的形式存储。数据一致性:遵循ACID(原子性、一致性、隔离性、持…

Van Uploader解决Android11及以下系统上传图片无反应问题

在项目实际开发中,使用van-uploader上传图片,遇到有些Android机型点击上传图片无反应的问题,后来经过仔细分析和查找原因,发现是van-uploader官方库有特殊说明 van-uploader官方说明:Vant 4 - A lightweight, customi…

陕西省地标-DB61/T 1121-2018 政务服务中心建设和运营规范

揭秘陕西省智慧政务服务中心新标准:打造高效便捷的服务新体验 随着信息化时代的深入发展,智慧政务已成为提升政府服务效率、优化营商环境的重要举措。陕西省作为全国政务改革的先行者,近期颁布了《陕西省地标-DB61_T 1121-2018 政务服务中心…

介绍一款飞算JavaAI编程工具,集成到idea,图文并茂

飞算的插件下载地址,里边也有安装步骤: JavaAI 下载 从file-》setting-》plugin,然后走图中所示 选择从磁盘安装插件:找到下载好的压缩包然后进行idea重启 根据提示模块可以生成代码,就是需要等待,后期不…

Go红队开发—文件操作

文章目录 文件操作创建目录创建文件获取File信息文件重命名删除文件打开关闭文件判断文件是否存在判断文件是否有读取权限复制文件Read读取ReadFull读取ReadAtLeast读取ReadAll读取bufio读取Write写入WriteFile快速写入临时文件目录下载文件文件指针操作修改文件权限/拥有者/时…

极简Python服务器后端

在Python中,可以使用http.server模块和json模块来创建一个简单的HTTP服务器,该服务器可以响应80端口上的/query POST请求,并且请求体为JSON格式。 需要注意,在Linux系统上,使用低于1024的端口(如80端口&…

ChatGPT与DeepSeek:开源与闭源的AI模型之争

目录 一、模型架构与技术原理 二、性能能力与应用场景 三、用户体验与部署灵活性 四、成本与商业模式 五、未来展望与市场影响 六、总结 随着人工智能技术的飞速发展,ChatGPT和DeepSeek作为两大领先的AI语言模型,成为了行业内外关注的焦点。它们在…

高频 SQL 50 题(基础版)_550. 游戏玩法分析 IV

高频 SQL 50 题(基础版)_550. 游戏玩法分析 IV select IFNULL(round(count(distinct(restult.player_id))/count(distinct(Activity.player_id)),2),0) as fraction from(select Activity.player_id,Activity.event_datefrom Activity join(select play…