网络初识 - Java

news2025/4/9 16:33:57

网络发展史:

单机时代(独立模式) -> 局域网时代 -> 广域网时代 -> 移动互联网时代
网络互联:将多台计算机链接再一起,完成数据共享。
数据共享的本质是网络数据传输,即计算机之间通过网络来传输数据,也称网络通信。根据网络互联的规模不同,可以划分为局域网和广域网。
独立模式:计算机之间相互独立
局域网:即 Local Area Network,简称 LAN。Local 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网。局域网和局域网之间在没有链接的情况下,是无法通信的。
局域网组建网络的方式有很多种方式:
(1)基于网线直连
在这里插入图片描述

(2)基于集线器组建
在这里插入图片描述

(3)基于交换机组建
在这里插入图片描述

(4)基于交换机和路由器组建
在这里插入图片描述

交换机可以视为是“对路由器的接口进行了扩展”,家用路由器,一般就是插 4 个网线(1 WAN口连运营商的设备)
交换机不会进行组局域网功能,可以把路由器的接口进行扩展。(也就是,某个电脑连接到交换机上就相当于连接到路由器了),交换机也是可以连接交换机的
广域网:即Wide Area Network,简称WAN。通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

IP地址

在 cmd(win + r) 上输入 ipconfig 可以查看自己电脑的IP。
IP 地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。
就像发快递一样,需要知道对方的收获地址,快递员才能将包裹送到目的地。
格式:IP地址是一个32位的二进制数,通常被分割为 4 个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。通常用“点分十进制”的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。

端口号

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据,接受数据的进程。简单说:端口号用于定位主机中的进程(一台主机上可能有多个程序同时使用网络,端口号是区分一台主机上多个应用程序的)。类似发快递时,不光需要收获地址(IP地址),还需要收货人姓名(端口号)。
格式:端口号是 0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接受网络数据。

理解IP地址和端口号之后,还有一个问题:网络通信是基于二进制0/1数据来传输的,如果我的程序已经收到数据了,哪程序如何理解数据的含义呢??

认识协议

协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定,规则。如怎么样建立链接,怎么样互相识别等。只有遵守这个约定,计算机之间才能互相通信交流。
协议最终体现为在网络上传输的数据包的格式。
网络协议,通信双方对于发送/接受 数据格式的约定,我的数据怎么发,你收到就得怎么解析。

五元组

在TCP/IP协议中,用五元组来标识一个网络通信:
1.源IP:标识源主机。
2.源端口号:标识源主机中该次通信发送数据的进程。
3.目的IP:标识目的主机。
4.目的端口号:标识目的主机中该次通信接受数据的进程。
5.协议号:标识发送进程和接受进程双发约定的数据格式。
可以在cmd中,输⼊ netstat -ano 查看⽹络数据传输中的五元组信息。如果需要过滤(⼀般是通过端⼝号或进程PID过滤),可以使⽤ netstat -ano | findstr 过滤
字符串。

协议分层

网络通信,非常复杂,如果我们设计一个协议,完成网络通信中方方面面的问题,势必会使这个协议非常复杂,非常庞大。所以就把协议拆分。把一个大的协议拆成若干个小的,功能单一的协议了。但是拆完之后,发现小的协议太多了,于是就把这些小的协议归类,最后形成了好几个层次。
分层:只有相邻两层协议之间可以进行交互。上层协议可以调用下层协议,下层协议可以给上层提供服务。(协议之间的交互,不能跨层进行)

什么是协议分层:
在这里插入图片描述

在这个例⼦中,我们的协议只有两层;但是实际的⽹络通信会更加复杂,需要分更多的层次。

OSI七层网络模型

OSI:即Open System Interconnection。开放系统互联。

  • OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了7层。
  • OSI 七层模型是一种框架性的设计方法,其最重要的功能就是帮助不同类型的主机实现数据传输。

OSI七层模型划分为以下七层:
在这里插入图片描述

由于OSI 七层模型既复杂又不实用,所以这一套分层的体系,只是存在与教科书上。
而真实实际组建网络时,只是以OSI七层模型设计中的部分分层,最主要还是使用 TCP/IP五层(或四层)模型来实现。

TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用的五层层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
在这里插入图片描述

  • 应用层:负责应用程序沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。(也就是我们拿到包裹之后怎样使用)
  • 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机。(也就是两个任意设备之间的通信,不考虑中间过程,只考虑起点和终点)
  • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的路线(路由)。路由器工作在网络层(也就是两个任意设备之间如何进行通信,考虑的是中间过程是怎么样的。(这两个设备之间,可能隔着很多的交换机和路由器))
  • 数据链路层:负责设备之间的数据帧的传送和识别。有以太网,令牌环网,无线LAN等标准。交换机工作在数据链路层。(也就是完成两个相邻设备直间如何进行通信的。(先考虑一小步怎么走)通过网线,把电脑连到路由器/交换机上)
  • 物理层:负责光/点信号的传递方式。物理层的能力决定了最大传输速率,传输距离,抗干扰性等。集线器工作在物理层。(也就是物理层规定了网络通信中的一些硬件设施符合的要求。(像网线,WIFI,光纤这物理层的协议,就是约定这些硬件设施要符合的要求是怎样的))
    举个例子:

至于为什么有的资料又叫四层呢?
其实是把数据链路层和物理层看作一个整体了。
在这里插入图片描述

网络设备所在分层

  • 对于一台主机,他的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
  • 对于一台路由器,它实现了网络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于集线器,他只实现了物理层;
    注意我们这里说的是传统意义上的交换机和路由器,也成为二层交换机(TCP/IP五层模型的下两层),三层路由器(TCP/IP五层模型的下三层)。
    随着现在网络设备技术的不断发展,也出现了很多三层或四层交换机,四层路由器。我们一下说的网络设备都是传统意义上的交换机和路由器。
    在这里插入图片描述

封装和分用

  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装。
  • 首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的部首,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

网络数据通信的基本流程:
比如我通过qq,发送hello给对方
在这里插入图片描述

像上述过程,从上层到下层,数据进一步加工(添加报头)的过程,称为封装(和面向对象的封装,不是一个封装 )

还有一个小知识点:
谈到网络传输的“基本数据单位”涉及到多个术语:
网络数据包/帧/报/段
段(segment) TCP用 段
报(Datagram) UDP用 报
包(packet) IP 用 包
帧 (frame) 数据链路层 以太网数据帧
日常工作中,就不太会区分这些概念,这里就混着用了。

分用,就是封装的逆向过程,当数据到达接收方主机,逐层进行解析的过程。
在这里插入图片描述

传输的中间过程中,也是涉及到封装分用的。
交换机,只需要封装到 数据链路层即可。交换机是工作在数据链路层(二层转发)
主机的数据 => 交换机。交换机收到之后,物理层解析,数据链路层解析(没有网络层了,数据链路层中,得到的以太网数据帧的帧头,信息就足以支持交换机进行下一步工作),重新构造出新的以太网数据帧,发给下一个设备。
路由器是工作在网络层(三层转发)
主机的数据 => 路由器,路由器收到之后,物理层,数据链路层,网络层解析(没有传输层),重新构造出新的网络数据包,构造出以太网数据帧,构造出二进制数据,进行转发。

    物理层考虑信号衰减事情,,不管是有线/无线都会有衰减,不过无线衰减的快,有线衰减的慢,到达下一个节点,下一个节点重新发送数据的时候把信号又加强了。

两台计算机通过 TCP/IP 协议通讯的过程如下图所示:
在这里插入图片描述

另外一些网络中的基本概念:

请求:在互联网通信中,请求通常指的是客户端(如网页浏览器、移动应用程序等)向服务器发送的请求信息。
响应:响应是服务器对客户端请求的回应。当服务器接收到请求后会进行处理,然后返回一个响应,其中包含了处理结果和一些其他相关信息。
客户端是指通过网络向服务器发送请求以获取服务的计算机或设备。客户端通常由用户直接操作,如浏览器、邮件客户端等。
服务器是指存储数据、运行程序并提供服务的计算机,它响应客户端的请求并返回结果。服务器可以是网站服务器、数据库服务器等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2329759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一题(小白)回溯篇4

深度优先搜索题:找到最长的路径,计算这样的路径有多少条(使用回溯) 分析题意可以得知,每次向前后左右走一步,直至走完16步就算一条走通路径。要求条件是不能超出4*4的范围,不能重复之前的路径。…

k8s进阶之路:本地集群环境搭建

概述 文章将带领大家搭建一个 master 节点,两个 node 节点的 k8s 集群,容器基于 docker,k8s 版本 v1.32。 一、系统安装 安装之前请大家使用虚拟机将 ubuntu24.04 系统安装完毕,我是基于 mac m1 的系统进行安装的,所…

C++ STL 详解 ——list 的深度解析与实践指南

在 C 的标准模板库(STL)中,list作为一种重要的序列式容器,以其独特的双向链表结构和丰富的操作功能,在许多编程场景下发挥着关键作用。深入理解list的特性与使用方法,能帮助开发者编写出更高效、灵活的代码…

按键切换LCD显示后,显示总在第二阶段,而不在第一阶段的问题

这是一个密码锁的程序,当在输入密码后,原本是要重置密码,但是程序总是在输入密码正确后总是跳转置设置第二个密码,而第一个密码总是跳过。 不断修改后, 解决方法 将if语句换成switch语句,这样就可以分离程序…

护网蓝初面试题

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

C++11: 智能指针

C11: 智能指针 (一)智能指针原理1.RAll2.智能指针 (二)C11 智能指针1. auto_ptr2. unique_ptr3. shared_ptr4. weak_ptr (三)shared_ptr中存在的问题std::shared_ptr的循环引用 (四)删除器(五&a…

从零实现本地大模型RAG部署

1. RAG概念 RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合信息检索与大型语言模型(大模型)的技术。从外部知识库(如文档、数据库或网页)中实时检索相关信息,并将其…

【Linux系统篇】:探索文件系统原理--硬件磁盘、文件系统与链接的“三体宇宙”

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 一.认识硬件--磁盘物理存储结构1.存储介质类型2.物理存储单元3…

Tracing the thoughts of a large language model 简单理解

Tracing the thoughts of a large language model 这篇论文通过电路追踪方法(Circuit Tracing)揭示了大型语言模型Claude 3.5 Haiku的内部机制,其核心原理可归纳为以下几个方面: 1. 方法论核心:归因图与替换模型 替换模型(Replacement Model) 使用跨层转码器(CLT)将原…

OpenCV边缘检测技术详解:原理、实现与应用

概述 边缘检测是计算机视觉和图像处理中最基本也是最重要的技术之一,它通过检测图像中亮度或颜色急剧变化的区域来识别物体的边界。边缘通常对应着场景中物体的物理边界、表面方向的变化或深度不连续处。 分类 OpenCV提供了多种边缘检测算法,下面我们介…

BN 层做预测的时候, 方差均值怎么算

✅ 一、Batch Normalization(BN)回顾 BN 层在训练和推理阶段的行为是不一样的,核心区别就在于: 训练时用 mini-batch 里的均值方差,预测时用全局的“滑动平均”均值方差。 🧪 二、训练阶段(Trai…

JS 其他事件类型

页面加载 事件 window.addEvent() window.addEventListener(load,function(){const btn document.querySelector(button)btn.addEventListener(click,function(){alert(按钮)})})也可以给其他标签加该事件 HTML加载事件 找html标签 也可以给页面直接赋值

AI Agent设计模式五:Orchestrator

概念 :中央任务调度中枢 ✅ 优点:全局资源协调,确保任务执行顺序❌ 缺点:单点故障风险,可能成为性能瓶颈 import operator import osfrom langchain.schema import SystemMessage, HumanMessage from langchain_opena…

MySQL基础 [三] - 数据类型

目录 数据类型分类 ​编辑 数值类型 tinyint bit 浮点类型 float decimal 字符串类型 char varchar varchar和char的比较和选择 日期和时间类型 enum和set enum类型 set类型 enum和set的类型查找 数据类型分类 数值类型 tinyint TINYINT[(M)] [UNSIGNED]是 …

不用训练,集成多个大模型产生更优秀的输出

论文标题 Collab: Controlled Decoding using Mixture of Agents for LLM Alignment 论文地址 https://arxiv.org/pdf/2503.21720 作者背景 JP摩根,马里兰大学帕克分校,普林斯顿大学 动机 大模型对齐(alignment)的主要目的…

随笔1 认识编译命令

1.认识编译命令 1.1 解释gcc编译命令: gcc test1.cpp -o test1 pkg-config --cflags --libs opencv 命令解析: gcc:GNU C/C 编译器,用于编译C/C代码。 test1.cpp:源代码文件。 -o test1:指定输出的可执行文件名为t…

Hyperlane 框架路由功能详解:静态与动态路由全掌握

Hyperlane 框架路由功能详解:静态与动态路由全掌握 Hyperlane 框架提供了强大而灵活的路由功能,支持静态路由和动态路由两种模式,让开发者能够轻松构建各种复杂的 Web 应用。本文将详细介绍这两种路由的使用方法。 静态路由:简单…

铰链损失函数 Hinge Loss和Keras 实现

一、说明 在为了了解 Keras 深度学习框架的来龙去脉,本文介绍铰链损失函数,然后使用 Keras 实现它们以进行练习并了解它们的行为方式。在这篇博客中,您将首先找到两个损失函数的简要介绍,以确保您在我们继续实现它们之前直观地理解…

瑞数信息发布《BOTS自动化威胁报告》,揭示AI时代网络安全新挑战

近日,瑞数信息正式发布《BOTS自动化威胁报告》,力求通过全景式观察和安全威胁的深度分析,为企业在AI时代下抵御自动化攻击提供安全防护策略,从而降低网络安全事件带来的影响,进一步增强业务韧性和可持续性。 威胁一&am…

FLV格式:流媒体视频的经典选择

FLV格式:流媒体视频的经典选择 FLV(Flash Video)格式曾经是流媒体视频的主力军,在互联网视频的早期时代广泛应用于视频网站和多媒体平台。凭借其高效的压缩和较小的文件体积,FLV成为了许多视频内容创作者和平台的首选…