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

【JavaEE】(5) 网络原理的基础认识

一、国内网络通信的发展史

  • 2000 年左右,大多计算机没有网络,流行玩单机游戏。(自己跟自己玩)
  • 2003 年左右,开始流行局域网对战游戏。(一个网吧人对战)计算机之间如果两两连接,一是没那么多接口,二是线路复杂,所以靠交换机连接。

  • 后来,网游兴起,在广域网上对战。(各个地方的人对战)局域网之间靠路由器连接。

  • 2007 年左右 IPhone 发布,移动互联网时代开启。
  • 2011 年左右 IPhone4 发布,移动互联网崛起。由于 Android 更平民,智能手机开始普及,各种手机应用接踵而至。

二、网络通信基础

1、IP 地址

        IP 地址本质是一个 32 位的整数,但为了便于人理解,将 IP 地址用 3 个 . 分割为了 4 个部分。(点分十进制)每个部分都是一个 0~255 的整数。

        它的用途是区分不同的设备

2、端口号

        本质是一个 16 位的无符号整数,用途是区分同一设备上的不同应用程序

3、协议

        网络本质上是传输“光信号”(光纤,通过不同频率表示0/1)、“电信号”(网线,通过高低电平表示0/1)、“电磁波”(wifi,通过不同频率表示0/1)。

        协议就是通信双方对于0/1数据的传输格式的约定

4、五元组

        一个网络通信由五元组来标识。

  • 源 IP,源端口。(数据从哪来)
  • 目的 IP,目的端口。(到哪去)
  • 协议类型。(如何理解数据)

5、协议分层

5.1、为什么要有协议分层

        用一个协议解决网络通信,非常复杂,因此需要拆分为多个协议,即协议分层,并约定协议与协议之间的调用关系(上层调用下层)。这样有两个好处:

  • 分层后,每个协议只负责一个功能,更易于理解,即封装。
  • 解耦合,可以灵活地对协议进行替换。

5.2、TCP/IP 五层分层模型

        我们的重点是 TCP/IP 五层分层模型,因为它更接近真实的情况:(从下到上:物理层、数据链路层、网络层、传输层、应用层)

  • 物理层:网络通信依赖的硬件设施,如:光纤、电线、天线等。
  • 数据链路层:负责相邻两个节点通信。如:通过硬件设施直接连接两个设备。
  • 网络层:负责任意两个节点之间的路径规划
  • 传输层:只关心传输的起点和终点。
  • 应用层:程序员拿到数据,自行决定如何使用。

5.3、各种网络设备所在分层

  • 一台主机:它的操作系统内核实现了下四层(传输层到物理层)的内容。
  • 一台路由器:实现了下三层
  • 一台交换机:实现了下两层
  • 集线器:实现了物理层

5.4、封装(发送方)

        封装和分用是网络通信的关键环节。以发送 qq 消息为例子。

  • 应用层:用户输入 “hello”,点击发送按钮,qq 应用程序将获取到的字符串封装成应用层数据包。然后调用操作系统的 API 把应用层数据包交给下一层传输层。比如:

  • 传输层:按照传输层协议(主要是 TCP 或 UDP),构造出传输层数据包。然后调用 API 交给网络层。以 UDP 协议为例子:

  • 网络层:主要使用 IP 协议,给传输层数据包填上 IP 报头。然后调用 API 交给数据链路层。

  • 数据链路层:插网线/光纤的网络主要以“以太网协议”,在网络层数据包的基础上,填上以太网帧头、帧尾。

  • 物理层:将数据链路层的0/1数据转换为光信号/电信号/电磁波传输出去。

5.5、分用(接收方)

  • 物理层:将物理信号转为 0/1 数据,交给数据链路层。
  • 数据链路层:以太网协议,去掉以太网帧头、帧尾,交给网络层。
  • 网络层:IP 协议,去掉 IP 报头,交给传输层。
  • 传输层:TCP/UDP 协议,去掉 UDP 报头,交给应用层。
  • 应用层:QQ 的应用层协议对数据进行解析。

5.6、丢包是怎么产生的

        中途会经过很多交换机和路由器,它们分别也会对数据进行封装和解包。在某个时刻,各个主机都在使用网络,导致网络中需要传输的数据量非常大,当超过设备能承受的传输上线,就会丢包(直接丢弃数据。比如玩游戏点击使用装备,展示特效时卡了一下,恢复时直接显示的使用装备状态,如果不丢包,数据在后面又传输过来,就会产生“先使用装备,再展示特效”的违背期望顺序的效果)。

http://www.lryc.cn/news/574731.html

相关文章:

  • spring-security-oauth2系列:授权码授权模式
  • F5推出AI网关,赋能企业化解大模型应用风险
  • VSCode源码解析-程序的启动逻辑
  • 深度学习在智能机器人导航中的创新应用与未来趋势
  • 分布式训练中的随机种子策略:深入理解与实践指南
  • Spring Boot 切面编程(AOP)详细教程
  • 战地2042(战地风云)因安全启动(Secure Boot)无法启动的解决方案以及其他常见的启动或闪退问题
  • 3D看房实现房屋的切换
  • 五种 IO 模式的简单介绍 -- 阻塞 IO,非阻塞 IO,信号驱动 IO,IO 多路复用,异步 IO
  • Spring Data REST极速构建REST API
  • 【ArcGIS】土地资源单项评价
  • API 调试工具校验 JSON Mock 接口(二):有参验证
  • 四色(定理/猜想)染色算法小软件Version1.11 2025.6.24 开发者:孝感动天/卧冰求鲤
  • 神经网络的本质 逻辑回归 python的动态展示
  • 蓝桥杯嵌入式学习(cubemxkeil5)
  • 从零开始学习Spring Cloud Alibaba (一)
  • PYTHON从入门到实践4-数据类型
  • 大模型时代的创业机遇
  • 快速搭建企业级私有仓库:Docker + Nexus3 私服指南
  • 数据结构知识点总结--绪论
  • 02-StarRocks数据导入导出FAQ
  • 域名 SSL证书和IP SSL证书有什么区别?
  • 15:00开始面试,15:06就出来了,问的问题有点变态。。。
  • OSS大数据分析集成:MaxCompute直读OSS外部表优化查询性能(减少数据迁移的ETL成本)
  • 内存泄漏系列专题分析之二十四:内存泄漏测试Camera相机进程内存指标分布report概述
  • C++【生存游戏】开发:荒岛往事 第一期
  • 机器学习×第十三卷:集成学习上篇——她不再独断,而是召集小队贴贴你
  • Leetcode-2563. 统计公平数对的数目
  • prometheus 配置邮件告警
  • Unity2D 街机风太空射击游戏 学习记录 #13 射击频率道具 最高分