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

Java EE初阶——网络初识

1. 网络初始

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

数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信
根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。

1. 局域网LAN

局域⽹,即 Local Area Network,简称LAN。
Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。
局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。
局域⽹组建⽹络的⽅式:
  

2. ⼴域⽹WAN

⼴域⽹,即 Wide Area Network,简称WAN。
通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。

交换机 (Switch)

  • 工作层次:数据链路层 (OSI 模型第 2 层)
  • 主要功能:根据 MAC 地址转发数据帧
  • 适用场景:连接局域网内的设备,如计算机、服务器、打印机等
  • 转发方式:通过 MAC 地址表实现端口到端口的转发
  • 隔离范围:仅隔离冲突域,所有设备仍在同一广播域内

路由器 (Router)

  • 工作层次:网络层 (OSI 模型第 3 层)
  • 主要功能:根据 IP 地址转发数据包,连接不同网络
  • 适用场景:连接不同网络,如局域网与广域网的连接
  • 转发方式:通过路由表决定数据包的下一跳
  • 隔离范围:同时隔离冲突域和广播域,分割网络为不同子网

3. IP 地址

概念 :IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。使设备能够在网络中相互识别和通信。

1. 作用

  • 标识网络中的设备位置
  • 作为数据传输的源地址和目标地址
  • 帮助路由器确定数据传输路径

2. 格式

  • IPv4:32 位二进制数,通常表示为点分十进制(如 192.168.1.1都是0~255之间的⼗进制整数。
  • IPv6:128 位二进制数,通常表示为冒分十六进制(如 2001:0db8:85a3:0000:0000:8a2e:0370:7334

3. 分类

  • 公有地址:全球唯一,可直接访问互联网
  • 私有地址:用于局域网内部,不可直接访问互联网
  • 特殊地址:保留用于特定用途(如回环地址、广播地址)

4. 如何查看自己的 IP 地址?

  • Windowscmd → 输入 ipconfig

  • Mac/Linux:终端输入 ifconfig 或 ip a

  • 公网 IP:访问 ipinfo.io 或搜索 "What is my IP"

4. 端口号

端口号(Port Number)是计算机网络中用于区分同一设备上不同应用程序或服务的标识符。它与 IP 地址一起构成网络通信的基础寻址机制,确保数据能够准确到达目标应用程序。

1. 作用

  • 标识主机上的特定应用程序或服务
  • 作为传输层协议(TCP/UDP)的寻址机制
  • 使多个应用程序能够共享同一 IP 地址进行通信

2. 结构

  • 16 位无符号整数(0-65535)
  • 分为源端口和目标端口
  • 源端口:随机分配(通常 > 1023)
  • 目标端口:指定接收方服务的端口号

3. 端口号分类

  • 系统端口(0-1023)
    • 由 IANA(互联网号码分配机构)分配
    • 用于知名服务(如 HTTP:80, HTTPS:443, SSH:22)
  • 注册端口(1024-49151)
    • 需向 IANA 注册
    • 用于特定应用程序(如 MySQL:3306, PostgreSQL:5432)
  • 动态 / 私有端口(49152-65535)
    • 无需注册
    • 用于临时连接(如客户端随机端口)

2. 协议

协议(Protocol)是计算机网络中设备之间通信的规则和标准,它规定了数据如何封装、传输、路由和接收,确保不同厂商的设备能够互相理解。协议定义了通信的格式、时序、错误处理等机制,是网络通信的基础。

五元组
在TCP/IP协议中,⽤五元组来标识⼀个⽹络通信:
1. 源IP:标识源主机
2. 源端⼝号:标识源主机中该次通信发送数据的进程
3. ⽬的IP:标识⽬的主机
4. ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程
5. 协议号:标识发送进程和接收进程双⽅约定的数据格式
1. 作用
  • 定义通信双方的 "语言" 和 "语法"
  • 确保数据在传输过程中的完整性和可靠性
  • 提供错误检测和纠正机制
  • 协调通信双方的操作时序
2. 协议栈
  • 一组相互关联的协议集合
  • 通常按层次结构组织
  • 上层协议会调用下层协议的功能
  • 下层协议为上层协议提供服务

1. 协议分层

分层最⼤的好处,类似于⾯向接⼝编程:定义好两层间的接⼝规范,让双⽅遵循这个规范来对接。在代码中,类似于定义好⼀个接⼝,⼀⽅为接⼝的实现类(提供⽅,提供服务),⼀⽅为接⼝的使⽤类(使⽤⽅,使⽤服务):
对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接⼝即可
对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接⼝即可。

1. OSI七层模型(基本不使用)

2. TCP/IP五层(或四层(不包括物理层))模型

应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到⽬标主机。
⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。
物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞 线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层

分层协议示例作用
应用层HTTP、HTTPS、FTP、DNS、SMTP用户直接使用的服务(如网页、邮件)
传输层TCP、UDP端到端可靠/高效传输
网络层IP(IPv4/IPv6)、ICMP、ARP寻址和路由(数据包如何到达目标)
数据链路层Ethernet、Wi-Fi(802.11)、PPP物理设备间的数据帧传输
物理层光纤、电缆、无线电波实际比特流的传输

两台计算机通过TCP/IP协议通讯过程:

3. 封装和分⽤

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报
(datagram),在链路层叫做帧(frame)

交换机工作在数据链路层:光电信号经过物理层解析为以太网数据帧,数据链路层对以太网数据帧进行解析取出载荷再加上新的帧头帧尾发送。

路由器工作在网络层:光电信号经过物理层解析为以太网数据帧,数据链路层将以太网数据帧去掉帧头帧尾取出载荷得到IP数据报,网络层将IP数据报去掉IP首部,取出载荷,再加上新的IP首部得到新的IP数据报,数据链路层加上新的帧头帧尾得到新以太网数据帧发送。

4.TCP vs UDP

特性TCP(传输控制协议)UDP(用户数据报协议)
连接方式面向连接(三次握手)无连接(直接发送)
可靠性可靠(丢包重传、顺序保证)不可靠(可能丢包、乱序)
传输单位字节流数据报
缓冲区
有接收缓冲区,也有发送缓冲区
有接收缓冲区,⽆发送缓冲区
通信全双工(信道可双向通信)全双工
速度较慢(开销大)极快(开销小)
适用场景网页(HTTP)、邮件(SMTP)视频流(RTP)、游戏(UDP)、DNS

1. 有连接

通信双方在数据传输前需先建立一条逻辑连接通道,传输过程中维护连接状态,传输完成后释放连接。
核心特点:先建连 → 再传输 → 后断连。

建立连接(三次握手)

  • 客户端发送同步报文(SYN)请求连接。
  • 服务器确认请求(SYN+ACK)。
  • 客户端再次确认(ACK),连接建立完成

数据传输

  • 双方通过已建立的连接按顺序传输数据,确保可靠性(如丢包重传、流量控制)。

断开连接(四次挥手)

  • 一方发起断开请求(FIN),另一方确认并释放资源,最终双向关闭连接

2. 无连接

通信双方无需提前建立连接,直接发送独立的数据包,每个数据包携带完整的目标地址,无连接状态维护
核心特点:直接发 → 不维护连接 → 无顺序保证。

典型流程(以 UDP 为例)

  • 发送方直接将数据包(数据报)封装目标地址后发送,接收方收到后无需确认。
  • 每个数据包独立路由,可能乱序或丢失。

3. 可靠传输

数据从发送方到接收方的过程中,确保所有数据准确、有序到达,且不重复、不丢失。即使网络出现拥塞或丢包,协议也能通过内置机制自动修复问题。

(1)确认应答(ACK)

  • 接收方每收到一个数据包,必须返回 ACK 确认

(2)超时重传

  • 发送方启动定时器,若未收到 ACK 则重传数据。

  • 自适应重传时间:根据网络延迟动态调整超时阈值(RTO)。

(3)序列号与排序

  • 每个字节分配唯一 序列号(Seq),接收方按序重组数据。

  • 解决乱序问题:即使数据包乱序到达,最终按 Seq 排序交付。

(4)流量控制(滑动窗口)

  • 接收方通过 窗口大小(Window) 告知发送方可接收的数据量。

  • 防止接收方过载:动态调整发送速率。

(5)拥塞控制

  • 通过算法(如慢启动、拥塞避免)探测网络容量,避免拥塞崩溃。

  • 核心指标:拥塞窗口(cwnd)、阈值(ssthresh)。

4. 不可靠传输

数据传输过程中不保证数据一定到达、不保证顺序、不处理重复,仅尽最大努力交付(Best-Effort Delivery)。丢包、乱序等问题需由应用层自行处理。

  1. 无确认机制

    • 发送方发送数据报后,不等待接收方确认,直接继续发送后续数据。
  2. 无重传机制

    • 若数据报丢失,协议层不自动重传,需应用层(如游戏客户端)检测并处理。
  3. 无流量 / 拥塞控制

    • 发送方以固定速率发送数据,不感知网络状态,可能导致拥塞或丢包

http://www.xdnf.cn/news/731161.html

相关文章:

  • 关于表连接
  • 星际巡航-第16届蓝桥第6次STEMA测评Scratch真题第4题
  • RedisTemplate查询不到redis中的数据问题(序列化)
  • 【数据库】并发控制
  • 什么是AI Agent?大白话新手教学
  • JAVA单商户易联云小票打印替换模板
  • ISOLAR软件生成报错处理(七)
  • css实现文字渐变
  • 【git stash切换】
  • 云原生DMZ架构实战:基于AWS CloudFormation的安全隔离区设计
  • 在React框架中使用Braft Editor集成Table表格的详细教程
  • 中联教育 - 嵌入式BI助力财经数据分析服务
  • HarmonyOS-ArkUI固定样式弹窗(1)
  • 由sigmod权重曲线存在锯齿的探索
  • 【UE5 C++】绘制地表贴合线
  • 【C++】虚函数是什么?为什么需要它?
  • superior哥深度学习系列(大纲)
  • NodeMediaEdge通道管理
  • 动态规划-300.最长递增子序列-力扣(LeetCode)
  • 酒店管理系统设计与实现
  • 《TCP/IP 详解 卷1:协议》第3章:链路层
  • 第十二篇:MySQL 分布式架构演进与云原生数据库探索
  • 光电学、计算机科学及算法国际会议(OCSA 2025)征稿启事​
  • 深度学习复习笔记
  • leetcode:7. 整数反转(python3解法,数学相关算法题)
  • 【笔记】Suna 部署之 Supabase 数据库 schema 暴露操作
  • day14 leetcode-hot100-26(链表5)
  • QT- QML Layout+anchors 布局+锚点实现窗口部件自适应比例
  • 阻塞队列的学习以及模拟实现一个阻塞队列
  • C++题解(34) 2025年顺德区中小学生程序设计展示活动(初中组C++)U560289 字符串排序(一)和 U560136 字符串排(二)题解