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

Java【网络原理】(1)初识网络


目录

1.前言

2.正文

2.1基础知识

2.2协议分层(tcp/ip五层网络模型)

2.3网络数据通信的基本流程

2.3.1数据发送过程

2.3.2数据接收过程

3.小结


1.前言

断更又是许久,再次回归又是一个新的开始,希望我们都能继加油。今天来给大家分享的是初始网络的内容,那么废话不多说让我们开始吧。

2.正文

2.1基础知识

在这一部分,我们为了后面的讲解,先讲解几个基础的概念,其中包括服务端与客户端,局域网和广域网,路由器和交换机,ip地址与端口号:

客户端(Client)与服务端(Server)

  • 客户端是发起请求的一方,通常是指用户使用的设备或软件,如浏览器、手机应用、桌面软件等。

  • 服务端是接收请求并提供服务的一方,通常是指运行在服务器上的软件或系统,如Web服务器、数据库服务器、应用服务器等。

客户端和服务端之间的通信需要遵循一定的协议,服务端在运行时会监听一个或多个端口号,客户端通过指定的端口号向服务端发送请求。客户端向服务端发送请求,服务端接收请求后,根据请求的内容进行处理,并生成响应。


局域网(LAN)与广域网(WAN)

  • 局域网(LAN):覆盖小范围地理区域(如家庭、办公室、校园),通过以太网或Wi-Fi连接设备,具有高带宽和低延迟特性。

  • 广域网(WAN):覆盖大范围地理区域(如城市、国家、全球),通过光纤、卫星或运营商网络连接不同局域网,带宽较低且依赖第三方基础设施。

局域网是广域网的组成单元,广域网通过路由技术将多个局域网互联,形成更大规模的网络(如互联网)。例如,企业的分支办公室通过广域网(如VPN)连接到总部局域网,实现数据共享。


路由器与交换机

  • 路由器:工作于网络层(OSI第3层)(后文会讲这个协议),根据IP地址在不同网络间转发数据(如连接LAN到WAN),具备NAT、防火墙功能。

  • 交换机:工作于数据链路层(OSI第2层),在局域网内基于MAC地址直接转发数据帧,实现设备间高效通信。

在局域网中,交换机负责内部设备互联,而路由器负责局域网与外部网络(如互联网)的通信。例如:家庭中,交换机连接多台电脑,路由器则将整个家庭网络接入互联网。


IP地址与端口号

  • IP地址:网络层标识符(如192.168.1.1),用于唯一标识网络中的设备,实现全局寻址。

  • 端口号:传输层标识符(如80443),用于标识设备上的具体应用程序(服务),范围0-65535。

IP地址确定数据发送的目标设备,端口号进一步将数据分配给设备上的特定服务。例如:访问网站时,IP地址定位服务器,端口号(如80)指定HTTP服务,实现“设备→服务”的精准通信。

2.2协议分层(tcp/ip五层网络模型)

在我们知道了一些有关网络的基础知识,接下来就来开始讲解下,网络通信是依照什么展开的:

(如有侵权,联系删)

在网络中,有无数种协议,如果只设计一个协议来处理网络通信中的问题,那会非常麻烦,所以我们在这里先引入协议分层这个重要概念。

协议分层是网络通信的核心设计思想,通过将复杂功能拆分为多个独立的层次,实现模块化开发、简化维护并提升兼容性。


  • 解耦复杂性:每层专注单一功能,隐藏底层细节(如物理层不关心数据内容)。
  • 标准化接口:层与层之间通过固定接口交互(如传输层向应用层提供Socket API)。
  • 灵活扩展:可独立更新某一层协议(如从IPv4升级到IPv6,不影响上层应用)。

类比成寄信过程
写信(应用层)→ 装信封(传输层)→ 写地址(网络层)→ 贴邮票(数据链路层)→ 投递到邮筒(物理层)。
每层只需完成自身任务,无需关心其他层如何实现。

 接下来就是大头了,五层协议具体各负责那部分内容:

1. 物理层

  • 负责通过物理介质(如网线、光纤、无线电波)传输原始比特流(0/1信号)。

  • 定义电气、机械和时序特性(如电压、接口类型、传输速率)。

核心协议/设备:

  • 协议:无特定协议,仅依赖硬件标准(如RJ45、Wi-Fi IEEE 802.11)。

  • 设备:网线、光纤、集线器(Hub)、中继器(Repeater)。


2. 数据链路层

  • 在同一局域网内将比特流组织成数据帧(Frame),实现设备到设备的可靠传输。

  • 通过MAC地址(如00:1A:2B:3C:4D:5E)标识物理设备,控制物理层访问(如冲突检测)。

核心协议/设备:

  • 协议:以太网(Ethernet)、Wi-Fi(802.11)。

  • 设备:交换机(Switch)、网桥(Bridge)。


3. 网络层

  • 实现跨网络的通信,通过IP地址(如192.168.1.1)标识设备,规划数据传输路径(路由)。

  • 将数据封装为数据包(Packet),选择最优路径传递到目标网络。

核心协议/设备:

  • 协议:IP(IPv4/IPv6)、ICMP(用于网络诊断)、BGP/OSPF(路由协议)。

  • 设备:路由器(Router)。


4. 传输层

  • 提供端到端的通信服务,确保数据完整性和可靠性。

  • 通过端口号(如80443)区分设备上的不同应用程序。

  • 核心协议:

    • TCP:面向连接,可靠传输(如文件下载、网页访问)。

    • UDP:无连接,高效但不可靠(如视频流、DNS查询)。

数据单元:段(Segment)(TCP)/ 数据报(Datagram)(UDP)。


5. 应用层

  • 直接面向用户和应用程序,提供网络服务接口(如网页浏览、邮件收发)。

  • 整合OSI模型中应用层、表示层、会话层的功能(如加密、会话管理)。

核心协议:

  • HTTP(网页)、DNS(域名解析)、SMTP(邮件)、FTP(文件传输)、WebSocket(实时通信)。

实际的例子:

  • 主机       工作原理涉及到从物理层到应用层。
  • 路由器   工作原理涉及到从物理层到网络层。
  • 交换机   工作原理涉及到从物理层到数据链路层。

2.3网络数据通信的基本流程

网络通信的基本流程如下:

2.3.1数据发送过程

1.应用程序获取到用户输入,构造成一个应用层的数据包,这个应用层数据包就会遵守应用层协议。假设我们要发这么一份数据:

tips:何为数据包呢,即结构化数据,发送数据的时候,把结构化数据转化为二进制比特流,接受数据的时候,把二进制比特流转化为结构化数据。


2.应用程序调用传输层层提供的api端口,把数据交给传输层,传输层在拿到数据之后,构造出传输层数据包。传输层协议主要是俩个(TCP和UDP,后面会细讲):

其中,TCP数据包由TCP报头和TCP载荷组成,其中报头包括(源端口和目的端口)。


3.传输层构造好数据之后,继续调用网络层的api,把传输层的数据包交给网络层,网络层通过IP协议对其进行处理:

其中IP数据包包括IP报头和IP载荷(整个传输层的数据包)。

在这里再诠释一下协议分层的概念,IP协议本身不关系其载荷内容是啥,TCP协议也不关心载荷内容是啥。在网络层报头中,会记录传输层实用的哪个协议。


4. IP协议继续调用数据链路层的API,把IP数据包交给数据链路层,数据链路层中,核心协议“以太网”,以太网这个协议也会在网络层数据包的基础上进一步加工:

其中,以太网数据帧由帧头,载荷和帧尾组成。

截止到目前为止,此时数据还在主机上滴流转嘞。


 5.以太网继续这样的数据交给硬件设备(网卡),网卡会将上述二进制数据,最终以光信号(光纤)/电信号(网线)或电磁波信号(wifi)传播出去。


从上层到下层,数据都要进一步加工(添加报头),封装 ,接受方法是从下到上一次解析,分用和分装的逆向过程。

2.3.2数据接收过程

1.数据到达接收方的网卡,网卡把光电信号还原成二进制数据,把二进制数据交给上层数据链路层。

  • 网线/光纤来的数据,数据链路层 =>以太网。
  • wifi 来的数据,数据链路层 =>802.11 协议。

2. 数据链路层按照以太网协议进行解析把报头和报尾取出来,剩下的载荷,往上传递给网络层。

其中,帧头中记录了网络层应该使用哪个协议。


3.网络层拿到这个数据之后,按照 IP 协议的格式解析。再把载荷数据交给传输层。

IP 报头中也有专门的属性,描述了传输层使用那个协议。


4. 传输层拿到数据之后, 也是类似,按照 TCP 协议来解析,取出载荷,交给应用层。

传输层报头中,通过目的端口号,告知我们数据交给哪个应用程序。


5.最后,解析应用层数据,拿到关键信息,展示到界面上,给出提示。 

不同的应用程序,自然使用不同的应用层协议来解析。

3.小结

今天的分享到这里就结束了,喜欢的小伙伴不要忘记点点赞点个关注,你的鼓励就是对我最大的支持,加油!


http://www.kler.cn/a/559036.html

相关文章:

  • 中间件专栏之redis篇——redis基本原理、概念及其相关命令介绍
  • 《Restormer:高效Transformer架构用于高分辨率图像恢复》学习笔记
  • Linux-Ansible命令
  • 多线程篇学习面试
  • 【应急响应工具教程】流量嗅探工具-Tcpdump
  • GB28181协议下的RTP传输
  • 《Head First设计模式》读书笔记 —— 命令模式
  • 如何在 SpringBoot 项目创建并使用 Redis 的详细介绍
  • 管道-过滤器、隐式调用、解释器架构风格对比
  • rpc和http的区别,为啥golang使用grpc 不使用http?
  • PAT 甲级 1091 Acute Stroke
  • 深度学习(5)-卷积神经网络
  • LangChain-基础(prompts、序列化、流式输出、自定义输出)
  • conda环境中运行“python --version“所得的版本与环境中的python版本不一致----deepseek并非全能
  • 怎么在Github上readme文件里面怎么插入图片?
  • rtconfig.cpython-313.pyc 在 .gitignore文件中写入 *.pyc 文件仍然没有被忽略?
  • Grok 3与GPT-4.5的“智能天花板”争夺战——谁才是大模型时代的算力之王?
  • Python常见面试题的详解16
  • Chrome 推出全新的 DOM API,彻底革新 DOM 操作!
  • 250223-Linux/MacOS如何跳过Miniconda的条款阅读,直接安装Miniconda