网络初识-
网络的相关概念
一、局域网和广域网
将各种计算机、外部设备等相互连接起来,实现在这个范围内数据通信和资源共享的计算机网络。它的覆盖范围通常在几百米到几公里之内。例如,一个小型企业的办公室,通过交换机将多台电脑连接在一起,这些电脑可以共享打印机、文件等资源,这个网络就是一个局域网。就像是一个网吧,就是一个局域网
是一种覆盖范围很广的网络,它可以跨越城市、国家甚至全球。广域网是通过电信运营商的网络设施,如电话线、光纤电缆、卫星通信等来连接不同地理位置的网络或计算机系统。像互联网就是最大的广域网,它连接了全球各个国家和地区数以亿计的计算机和网络设备,使得人们可以在世界各地访问网站、发送电子邮件等。
二、路由器和交换机
更多组建局域网的方式是通过路由器和交换机
交换机是一种常见的 网络设备 ,它主要用于局域网内的设备通信
路由器是一种用于连接多个网络的设备,它在网络之间起到了桥梁的作用.
路由器上的接口分为LAN口和WAN口,WAN口用来接运行商的网线.LAN口用来接入设备.路由器的LAN口也可以接入交换机,交换机还可以接交换机,基于上述结构就构成了庞大的网络结构.
路由器和交换机的区别:
每一台路由器,他实现了网络层到物理层,也就是TCP/IP的下三层,路由器工作在网络层
每一台交换机,实现了从数据链路层到物理层,也就是TCPP/IP的下两层,交换机工作在数据链路层
IP地址
IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。
就像是我们发快递一样,必须要知道对方的收货地址,快递员才能将包裹送达
计算机上则是通过数字来描述一个设备的地址
为了方便表示,往往IP地址采用"点分十进制"的方式,用三个 . 把这4个字节分为4个部分,每部分一个字节,取值为0-255.
端口号
具体描述了一个主机上的哪个应用程序.
有了IP可以确定主机,但是主机上有很多程序都在使用网络,主机收到网络数据后就要分辨是交给哪个程序使用数据.
每个程序在进行网络通信中都有一个端口号(可以自己定义,也可以系统分配).同一个主机上端口号不能重复.
网络通信中的IP和端口号
网络通信中的IP地址和端口号其实是有两个的
其实和快递一样,记录了收发地址,以及收发人的联系方式
源IP:相当于发件人地址
源端口:发件人手机号
目的IP:收件人地址
目的端口:收件人手机号
描述了"从哪里来,到哪里去"的问题.
协议[重要]
协议就是一种通信过程中的约定.
通信双方需要制定好数据的格式,才能确保双方进行正常沟通.
通信双方的计算机可能来源于不同的厂商,为了确保两个计算机中的网络通信,就需要计算机遵守相同的网络协议.
网络通信过程中,其实有很多的细节需要注意,如果只是靠一个协议来完成的话,就需要面面俱到,这样就导致了协议非常复杂不利于维护.
于是我们把协议拆分成了很多层,把功能定位相似的放在同义词,上层协议调用下层功能,下层协议为上层服务.
只有相邻层次之间可以进行沟通,不能越级沟通.
就像是在公司中,我们完成任务只需要向自己的上一级交代,不需要直接向老板汇报.
协议分层的其他好处
1.上层协议可以直接调用下层协议,而不用关心具体的实现细节.
就像打电话,我们不用关心电话是怎样实现双方沟通的
2.某一层协议进行替换时,对其他应用也不会有什么影响.
OSI七层网络协议
我们并不常用OSI七层网络协议,这里只是给大家简单介绍,有兴趣的可以在挖掘~~
接下里我们重点介绍下TCP/IP五层网络协议.
TCP/IP五层网络协议
网络编程主要就是针对应用层,因为剩下的都是操作系统内核封装好的,我们没办法干预.
应用层:程序拿到数据之后,要解决什么问题,用来做什么
传输层:传输层执行进程到进程的端到端通信,关注的是数据的起点和终点(类似关注收件人发件人以及他们的信息).
网络层:网络层负责将数据从一个节点传输到另一个节点,主要进行寻址.将数据从源机器传送至目的机器的数据路径
数据链路层:相邻节点的之间的传输.通过检测、纠正数据包错误来建立可靠的邻接网络节点之间的数据传输
物理层:网络通信的硬件设备.
封装和分用(网络传输数据最核心的流程)
假设A给B在QQ上发了一个hello的消息.
封装
1.应用层
QQ从输入框获取到这个消息,就要把这个字符串封装成一个应用层的数据包.
QQ这样的程序就内置了一个应用层协议,用来构造应用层数据包.(就是利用字符串拼接的方式)
假定约定的格式是:
发送方QQ号;接收方QQ号;发送时间;消息正文
构造成数据包:
构造完成之后应用层就会调用系统的api,将数据包传给传输层
2.传输层
传输层就会把上述数据作为一个整体,构造成一个传输层数据包
传输层涉及到最主要的两个协议:TCP,UDP
这里我们假定使用UDP进行通信,就会构成一个UDP数据包
形如上述,添加报头的过程就叫封装,其实就是字符串的拼接,但是报头有一定的数据结构
对于UDP报头来说,承载的最重要的信息就是记录了源端口和目的端口
UDP报头虽然不能起到保护数据的作用但是能用来承载关键的用来转发的信息
拼接好传输层数据包后,就可以将他传给下层(网络层)继续封装
3.网络层(涉及到最核心的IP协议)
网络层IP协议,将传输层的UDP数据包作为一个整体再次进行封装,再拼上IP协议的报头,构成了IP数据包
IP协议,就是把整个UDP数据包视为一个整体.
IP报头也会保存一些关键的信息,这里保存的就是源IP和目的IP
网络层封装完成之后会继续调用api,将IP数据包传输到 数据链路层.
4.数据链路层 涉及到的核心协议:以太网
以太网数据帧.就是把IP数据包作为一个整体,在这个基础上加上帧头和帧尾
封装好后继续往下走交给物理层.
5.物理层
把上面的以太网数据帧,二进制结构(一串0101),转换成光信号/电信号/电磁波.发送出去.
经过上述过程,就算是把消息发送出去
分用
假设数据包已经到达了B的网卡,B的处理过程就叫分用
1.物理层
B的物理层接收到了信号并且将他转换成数字信号,得到一个以太网数据帧,进一步将以太网数据帧传输给数据链路层.
2.数据链路层
按照以太网数据帧的格式来解析,取出其中的载荷,交给上层协议
3.网络层
按照IP协议的格式来解析,取出其中的载荷,交给上层协议
4.传输层
按照UDP协议的格式来解析,取出其中的载荷,交给上层协议
5.应用层
根据 应用层协议来解析数据
路由器和交换机对上述封装分用同样适用
对于交换机来说,只需要封装到数据链路层即可
而对于路由器来说则是要封装到,网络层.
下一篇我们分享下网络编程,这里介绍一些前置知识.
网络编程中的一些概念
客户端/服务器
在网络中,主动发起请求的一方就是客户端,被动接受的一方就是服务器.
客户端发送给服务器的数据,叫做请求(request)
服务器返回给客户端的数据,叫做响应(response)
客户端-服务器之间的交互:
1.一问一答
2.一问多答
3.多问一答
4.多问多答
TCP/UDP
进行网络通信,需要调用系统的api,本质上是传输层提供的
传输层涉及到的协议主要是TCP和UDP
TCP和UDP区别:
连接:网络上的连接是抽象的,本质上就是通信双方保存了对方的相关信息.
就像客户端,有一些数据结构,记录了谁是他的服务器.
服务器,有一些数据结构,记录了谁是他的客户端.
可靠传输:这里的可靠传输就是发的数据到没到,发送方能够清楚的感知到
面向字节流:网络中传输的数据的基本单位是字节
面向数据报:每次传输的基本单位是数据报
全双工:一个信道可以双向通信,就像公路一样是双向车道
半双工:只能单向通信,就像过独木桥
相关文章:

网络初识-
网络的相关概念 一、局域网和广域网 将各种计算机、外部设备等相互连接起来,实现在这个范围内数据通信和资源共享的计算机网络。它的覆盖范围通常在几百米到几公里之内。例如,一个小型企业的办公室,通过交换机将多台电脑连接在一起…...

DNS污染:网络世界的“隐形劫持”与防御
在互联网的底层架构中,DNS(域名系统)如同数字世界的“导航员”,将用户输入的域名翻译成机器可读的IP地址。然而,DNS污染(DNS Poisoning)正像一场无声的“地址篡改”危机,威胁着全球网…...

MQTT(Message Queuing Telemetry Transport)协议(三)
主题是什么 2. TCP 协议封装 tcp.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>// 建立 TCP 连接 int tcp_connect(const char *server_ip, int s…...

多核cpu与时间片多线程的问题
在多核处理器中,每个核心可以独立运行一个线程。操作系统负责管理和调度这些线程,以确保高效利用处理器资源。下面详细解释如何获取时间片以及四个线程如何在四个核心上同时工作。 ### 时间片和调度 #### 1. 时间片(Time Slice)…...

电脑出现蓝屏英文怎么办?查看修复过程
电脑出现蓝屏英文是一种常见的电脑故障,它通常表示电脑遇到了严重的错误,需要停止运行以防止进一步的损坏。电脑蓝屏英文的原因可能有很多,比如硬件故障、驱动程序错误、系统文件损坏、病毒感染等。那么,当电脑出现蓝屏英文时&…...

安卓基础(第一集)
SharedPreferences(本地存储简单数据) 在 Android 中,SharedPreferences 用于存储小型数据。 (1)存储数据 // 获取 SharedPreferences 对象 SharedPreferences sharedPreferences getSharedPreferences("MyPre…...

【从零开始入门unity游戏开发之——C#篇56】C#补充知识点——模式匹配
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…...

【数据可视化-16】珍爱网上海注册者情况分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

c/c++蓝桥杯经典编程题100道(21)背包问题
背包问题 ->返回c/c蓝桥杯经典编程题100道-目录 目录 背包问题 一、题型解释 二、例题问题描述 三、C语言实现 解法1:0-1背包(基础动态规划,难度★) 解法2:0-1背包(空间优化版,难度★…...

电赛DEEPSEEK
以下是针对竞赛题目的深度优化方案,重点解决频率接近时的滤波难题和相位测量精度问题: 以下是使用NI Multisim 14.3实现本项目的详细解决方案: 一、基础要求实现方案(模块化设计) 1. 双频信号发生电路 电路结构&…...

VSOMEIP ROUTING应用和CLIENT应用之间交互的消息
#define VSOMEIP_ASSIGN_CLIENT 0x00 // client应用请求分配client_id #define VSOMEIP_ASSIGN_CLIENT_ACK 0x01 // routing应用返回分配的client_id #define VSOMEIP_REGISTER_APPLICATION 0x02 // client应用注册someip应用 #…...

HTML之基本布局div|span
HTML基本布局使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width<device-width>, initial-scale1.0"><title>布局</title> <…...

Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)
绪论 每日激励:“唯有努力,才能进步” 绪论: 本章是MySQL中常见的函数,利用好函数能很大的帮助我们提高MySQL使用效率,也能很好处理一些情况,如字符串的拼接,字符串的获取,进制…...

【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列
目录 一.TTL ???1.设置消息的TTL 2.设置队列的TTL 3.俩者区别? 二.死信队列 定义: 消息成为死信的原因: 1.消息被拒绝(basic.reject 或 basic.nack) 2.消息过期(TTL) 3.队列达到最大长度? …...

机器学习赋能的智能光子学器件系统研究与应用
机器学习赋能的智能光子学器件系统研究与应用 时间: 2025年03月29日-03月30日 2025年04月05日-04月06日 机器学习赋能的光子学器件与系统:从创新设计到前沿应用 课程针对光子学方面的从业科研人员及开发者,希望了解和实践在集成光学/空间…...

尚硅谷课程【笔记】——大数据之Linux【三】
课程视频链接:尚硅谷大数据Linux课程 七、定时任务调度 任务调度:指系统在某个时间执行的特定的命令或程序。 1)系统工作:有些重要的工作必须周而复始地执行。 2)个别用户工作:用户可能希望在某些特定的时…...

Visual Studio踩过的坑
统计Unity项目代码行数 编辑-查找和替换-在文件中查找 查找内容输入 b*[^:b#/].*$ 勾选“使用正则表达式” 文件类型留空 也有网友做了指定,供参考 !*\bin\*;!*\obj\*;!*\.*\*!*.meta;!*.prefab;!*.unity 打开Unity的项目 注意:只是看࿰…...

教程 | MySQL 基本指令指南(附MySQL软件包)
此前已经发布了安装教程安装教程,现在让我们来学习一下MySQL的基本指令。 一、数据库连接与退出 连接本地数据库 mysql -uroot -p # 输入后回车,按提示输入密码(密码输入不可见)若需隐藏密码显示,可使用࿱…...

企业数据集成案例:吉客云销售渠道到MySQL
测试-查询销售渠道信息-dange:吉客云数据集成到MySQL的技术案例分享 在企业的数据管理过程中,如何高效、可靠地实现不同系统之间的数据对接是一个关键问题。本次我们将分享一个具体的技术案例——通过轻易云数据集成平台,将吉客云中的销售渠…...

网络编程 day3
思维导图 以select函数模型为例 思维导图2 对应 epoll模型 应使用的函数 题目 使用epoll函数实现 两个客户端 通过服务器 实现聊天 思路 在原先代码基础上 实现 服务器 发向 客户端 使用客户端在服务器上的 套接字描述符 实现 客户端 接收 服务器…...

Excel 融合 deepseek
效果展示 代码实现 Function QhBaiDuYunAIReq(question, _Optional Authorization "Bearer ", _Optional Qhurl "https://qianfan.baidubce.com/v2/chat/completions")Dim XMLHTTP As ObjectDim url As Stringurl Qhurl 这里替换为你实际的URLDim postD…...

【论文笔记】Are Self-Attentions Effective for Time Series Forecasting? (NeurIPS 2024)
官方代码https://github.com/dongbeank/CATS Abstract 时间序列预测在多领域极为关键,Transformer 虽推进了该领域发展,但有效性尚存争议,有研究表明简单线性模型有时表现更优。本文聚焦于自注意力机制在时间序列预测中的作用,提…...

游戏手柄Type-c方案,支持一边充电一边传输数据
乐得瑞推出LDR6023SS,专门针对USB-C接口手机手柄方案,支持手机快充,支持任天堂游戏机,PS4等设备~同时支持手机充电跟数据传输 1、概述 LDR6023SS SSOP16 是乐得瑞科技针对 USB Type-C 标准中的 Bridge 设备而开发的双 USB-C DRP …...

2. 4 模块化JDK:JDK模块结构与核心模块
第3章:模块化JDK:JDK模块结构与核心模块 JDK 9 将自身拆分为一系列模块,彻底告别传统的“单一JAR(如 rt.jar)”模式。本章深入解析 JDK 的模块化架构、核心模块功能及开发者如何高效利用这些模块。 3.1 JDK 模块化设计…...

每日一题——缺失的第一个正整数
缺失的第一个正整数 题目描述进阶:数据范围: 示例示例 1示例 2示例 3 题解思路代码实现代码解释复杂度分析总结 题目描述 给定一个无重复元素的整数数组 nums,请你找出其中没有出现的最小的正整数。 进阶: 时间复杂度ÿ…...

CEF132 编译指南 MacOS 篇 - 基础开发工具安装实战 (二)
1. 引言 在 macOS 平台上编译 CEF132 之前,首要任务是搭建一个完善的开发环境。与 Windows 和 Linux 环境不同,macOS 的开发环境主要以 Xcode 为核心。本篇将作为 CEF132 编译指南系列的第二篇,详细指导读者如何在 macOS 系统上安装和配置 X…...

vi 是 Unix 和 Linux 系统中常用的文本编辑器
vi是 Unix 和 Linux 系统中常用的文本编辑器,它有几种不同的模式,其中最常用的是命令模式和插入模式。光标控制主要在命令模式下进行,以下是一些常用的vi命令来控制光标位置: • h,j,k,l:分别用于将光标向左、向下、向…...

SwanLab x verl:可视化LLM强化学习后训练教程
文章目录 介绍Verl和SwanLab1. 环境安装2. 使用方法3. 查看训练日志 介绍Verl和SwanLab verl 是一个灵活、高效且可用于生产环境的强化学习(RL)训练框架,专为大型语言模型(LLMs)的后训练设计。它由字节跳动火山引擎团…...

职场到校园,初心未改:我的2024年
Hi,大家好,我是几何心凉。 其实早就想写一份复盘文章,正好借助2024年度博客之星的评选机会,来写下这篇总结。回望过去,感慨颇多。自从加入CSDN平台以来,已经见证了许多博主的来去匆匆,各类创作…...

C++基础知识学习记录—引用
1、引用的概念 概念:引用相当于给变量取个别名 对引用进行操作与直接操作变量相同,注意引用类型与变量类型一致 #include<iostream> using namespace std; int main(){int a10;int& cite_a a;//操作引用cite_a 与操作变量a完全一样cout &l…...