【网络编程】TCP/IP四层模型、MAC和IP
1. TCP/IP的四层模型
网络模型的目的:规范通信标准,确保不同设备和系统之间能够有效通信
对比OSI模型与TCP/IP模型:
- OSI模型的七层架构(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)
- TCP/IP模型的四层架构(网络接口层、互联网层、传输层、应用层)
2. 每一层的功能及其对应的协议
3. 数据链路层的工作机制
3.1.1. 数据链路层工作机制
- 数据链路层的主要任务是提供节点到节点之间可靠的数据传输。
- 它通过将网络层传来的数据封装成帧(Frame)来实现****,这些帧通过物理介质在局域网中传输。
常见的数据链路层协议是以太网协议(Ethernet)。
- 帧的封装:在数据链路层,网络层的数据包(如IP包)被封装成数据帧。帧通常包含以下几个部分:
- 帧头(Header):包括源MAC地址、目标MAC地址、帧类型/长度等信息。
- 数据部分(Payload):包含要传输的IP数据包。
- 帧校验序列(FCS, Frame Check Sequence):用于检测数据在传输过程中是否发生错误。
- CSMA/CD机制(以太网有线网络):
- 载波监听多路访问/碰撞检测(CSMA/CD, Carrier Sense Multiple Access with Collision Detection) 是经典的以太网机制,用于检测和处理数据帧的冲突。
- 当一个网络设备准备发送数据时,它首先监听网络介质。如果介质空闲,设备就开始发送数据;如果检测到数据冲突(如两个设备同时发送数据),设备会停止发送,等待一个随机的时间段再重试。
- MAC地址的使用:MAC地址是硬件地址,是每个网络设备的唯一标识符。数据链路层使用MAC地址来确定数据帧的发送方和接收方
3.1.2. MAC数据帧的封包格式(以太网)
3.1.2.1. IP层到MAC层的数据封装
- IP数据报:在图的最上方,我们可以看到一个IP数据报,这是来自IP层的数据包,包含了网络层的目的地址和源地址。
- MAC帧结构:
- 目的地址(6字节):目标设备的MAC地址,用于标识数据包的接收者。
- 源地址(6字节):源设备的MAC地址,用于标识数据包的发送者。
- 类型/长度字段(2字节):标识上层协议类型(如IPv4或IPv6)或表示数据长度。
- 数据字段(46到1500字节):实际传输的数据部分,这里承载的是IP数据报。
- 帧校验序列(FCS)(4字节):用于检验帧在传输过程中是否出错。
46~1500个字节,46是因为以太网MAC帧长不能小于64字节。1500是因为以太网的最大传输单元(MTU)是1500字节
3.1.2.2. MAC层到物理层的数据封装
- 前同步码(7字节):以太网帧的前导部分,用于接收方的同步,帮助它识别帧的开始。通常由一组交替的
1
和0
组成,例如:10101010...
。 - 帧开始定界符(SFD, Start Frame Delimiter)(1字节):紧随前同步码之后,用于标识帧的正式开始。通常是固定的字节(
10101011
),与前同步码的最后一个字节不同。
8个字节,前7个都是_10101010_,最后一个是_10101011_;前7字节用于“唤醒”接收适配器,并将它们的时钟和发送方的时钟同步。第8个字节的最后两个比特(即两个‘1’)警告接收适配器重要的内容要来了。
3.1.2.3. 物理层上的表示
- 物理层表示(黄色部分):
- 数据在物理层上表示为一系列的比特流(0和1),这些比特流通过电信号或光信号在网络介质(如双绞线、光纤或无线电波)上传输。
3.1.3. MAC地址的结构
MAC地址可以分为两部分:
- 前24位(3字节):组织唯一标识符(OUI, Organizationally Unique Identifier),由IEEE分配给设备制造商。例如,
00:1A:2B
。 - 后24位(3字节):设备标识符(NIC Specific),由制造商自行分配,确保在其生产的设备中唯一。例如,
3C:4D:5E
。
一个示例MAC地址:00:1A:2B:3C:4D:5E
。
https://www.wavecn.com/mac.php (这个网站可以查看MAC地址信息)
4. 网络层机制
4.1. 网络层功能
网络层是位于传输层和数据链路层之间的一个关键层。它的主要任务是负责在不同主机之间传输数据包,提供路由选择和逻辑地址的管理。在这层上工作的主要协议是IP协议。
网络层的主要功能包括:
- 路径选择(Routing): 负责根据目标地址选择数据包的传输路径。
- 数据转发(Forwarding): 将数据包从一台路由器转发到下一台路由器,直至到达目的地。
- 逻辑地址管理(Logical Addressing): 通过IP地址来标识网络中的每一台设备,确保数据能够到达正确的目的地。
- 分片与重组(Fragmentation and Reassembly): 在网络层可以将大数据包分割成更小的数据包(分片),然后在目的地重新组装。
网络层是无连接的,也就是说,在发送数据包前,它不会为每一个通信会话建立连接,数据包的发送是独立的,且无状态的。每一个数据包都单独寻址和处理,这也是为什么网络层的通信被称为"尽力而为"的服务。
4.2. IP协议
4.3 IP数据包结构
- 版本(Version): 指示IP协议的版本(如IPv4或IPv6)。
- 头部长度(Header Length): 指定IP头部的长度。
- 服务类型(Type of Service, ToS): 用于指定数据包的优先级。
- 总长度(Total Length): 指定整个数据包的长度(包括头部和数据)。
- 标识(Identification): 用于数据报的分片和重组。
- 标志(Flags): 用于控制或标识分片。
- 片偏移(Fragment Offset): 用于指示数据片在原始数据报中的位置。
- 生存时间(Time to Live, TTL): 指定数据包的最大跳数(即经过的路由器数量),TTL为0时,数据包将被丢弃。
- 协议(Protocol): 指示数据部分使用的协议类型(如TCP或UDP)。
- 头部校验和(Header Checksum): 用于验证IP头部的完整性。
- 源地址(Source Address): 指示数据包的发送方IP地址。
- 目的地址(Destination Address): 指示数据包的接收方IP地址。
- 选项(Options): 可选字段,用于提供更多的控制功能。
- 数据(Data): IP数据包的实际数据部分,通常是传输层的数据。
相关文章:
【网络编程】TCP/IP四层模型、MAC和IP
1. TCP/IP的四层模型 网络模型的目的:规范通信标准,确保不同设备和系统之间能够有效通信 对比OSI模型与TCP/IP模型: OSI模型的七层架构(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)TCP/IP模型的四…...
Java学习手册: IoC 容器与依赖注入
一、IoC 容器概述 IoC(Inversion of Control,控制反转)容器是 Spring 框架的核心组件之一。它负责创建对象、管理对象的生命周期以及对象之间的依赖关系。通过将对象的创建和管理交给 IoC 容器,开发者可以实现代码的松耦合&#…...
Web 基础与Nginx访问统计
目录 Web基础 域名与DNS 域名的结构 网页与HTML 网页概述 HTML 概述 HTML基本标签 1、HTML 语法规则 2、HTML 文件结构 静态网页和动态网页 HTTP协议概述 HTTP方法 HTTP状态码 Nginx访问状态统计 Web基础 域名与DNS 网络是基于 TCP/IP 协议进行通信和连接的,每一台主机都有一…...
了解Android studio 初学者零基础推荐(1)
线上学习课程链接 开发Andorid App 使用的语言有很多,包括java, kotlin,C,等,首先让我们了解kotlin这个热门语言。 kotlin 程序 fun main() {println("hello,xu") } kotlin中的函数定义语法:函数名称在fun关键字后面࿰…...
Android Studio 2024版,前进返回按钮丢失解决
最近升级完AS最新系统后,顶部的前进和返回按钮默认隐藏了 解决方案: 1. 打开settings 2. 找到左侧 Appearance & Behavior 下面点击 Menus and Toolbars 3. 点击 Main Toolar 4. 点击Left,右键选择 Add Actions 5. 弹框中选择 Main Me…...
详解UnityWebRequest类
什么是UnityWebRequest类 UnityWebRequest 是 Unity 引擎中用于处理网络请求的一个强大类,它可以让你在 Unity 项目里方便地与网络资源进行交互,像发送 HTTP 请求、下载文件等操作都能实现。下面会详细介绍 UnityWebRequest 的相关内容。 UnityWebRequ…...
安装qt4.8.7
QT4.8.7安装详细教程(MinGW 4.8.2和QTCreator4.2.0)_qtcreater482-CSDN博客 QT4.8.7安装详细教程(MinGW 4.8.2和QTCreator4.2.0) 1、下载 1)下载QT4.8.7 http://download.qt.io/archive/ 名称:qt-opensource-windows-x86-mingw482…...
2025系统架构师---管道/过滤器架构风格
引言 在分布式系统与数据密集型应用主导技术演进的今天,管道/过滤器架构风格(Pipes and Filters Architecture Style)凭借其数据流驱动、组件解耦与并行处理能力,成为处理复杂数据转换任务的核心范式。从Unix命令…...
仙宫云ComfyUI —【Wan2.1】AI视频生成部署
【Wan2.1】AI视频生成本地部署与使用技巧全面详解_哔哩哔哩_bilibili 所有模型下载:https://pan.quark.cn/s/9d793aa1b258 Runninghub本期课程工作流下载(可获得1000RH币):https://www.runninghub.cn/?utm_sourcekol01-RH145 仙…...
学成在线。。。
一:讲师管理 介绍:可以实现对讲师的分页展示,多条件组合分页查询,对讲师的添加,修改,删除操作。 针对于添加来说,使用requestBody注解,搭配postmapping接收数据,使用service层的对象,调用mapper方法,向数据库中保存数据。 修改: 先根据讲师id,查询出讲师,再去…...
Python爬虫实战:获取猫yan电影网最新热门电影数据并做分析,为51观影做参考
一、引言 随着互联网的迅速发展,电影信息获取更加便捷。猫yan电影作为国内知名电影信息平台,提供了丰富电影数据。对于我们而言,获取并分析这些数据,能为用户提供更有价值的观影建议。本文详细介绍使用 Python 的 Scrapy 框架实现猫yan电影数据爬取与分析,为 “五一” 观…...
将有序数组转换为高度平衡二叉搜索树 | 详解与Java实现
文章目录 1. 问题描述2. 方法思路核心思想:分治法 + 递归3. 代码实现Java实现(含注释)4. 复杂度分析5. 关键点解释为何选择中间节点?为何使用 `left + (right - left) / 2` 而非 `(left + right) / 2`?6. 扩展优化迭代法实现(非递归)优化空间7. 总结1. 问题描述 108.将…...
普推知产:商标驳回复审下初步审定公告了!
近日客户的商标驳回复审后终于下初审公告了,经过一年多时间,当时申请时知道这个商标名称会被驳回,因为有相同一模一样的,客户就想要这个名称,因为与创始人的姓名是相关的,普推知产商标老杨经分析后…...
网工笔记-网络层
概述: 两种观点: 1.面向连接的可靠传输 2.面向无连接的,尽最大努力完成交付数据报服务 虚电路服务(可靠传输) 数据报服务(尽力而为) 两者的对比: 不管是虚电路还是数据报服务都是…...
el-Input输入数字自动转千分位进行展示
el-Input输入数字自动转千分位进行展示,存储值不变 子组件: <template><el-input ref"inputRef" :disabled"disabled" clearable v-model"displayValue" v-bind"$attrs" input"handleInput&quo…...
基于 Spring Boot 瑞吉外卖系统开发(九)
基于 Spring Boot 瑞吉外卖系统开发(九) 保存菜品 菜品管理页面提供了一个“新增菜品”按钮,单击该按钮时,会打开新增菜品页面。 请求路径/dish,请求方法POST,参数使用DishDto类接收。 DishDto 添加f…...
C++复习补充 类型转换和RTTI
类型转换和RTTI 类型转换类与类之间的类型转换四种显示类型转换类型转换注意事项RTTI 类型转换 在 C 中,operator int() 是用户定义的类型转换运算符(User-Defined Conversion Operator),允许自定义对象隐式或显式转换为特定类型…...
QT采用mqtt进行通信(17.1)
文章目录 1.试错历程2. qt5.8安装3. 开始搞了4. 测试连接mqtt broker1.试错历程 尝试过网上说的各种版本,官方库和第三方库,试过qt5.9.9, qt5.12, qt5.12.2, qt5.14 等各个版本,都能编译通过,调用mqtt库,但是都不能连接成功,真的是试吐了,不知道他们的为什么都能成功,…...
基于 BERT 微调一个意图识别(Intent Classification)模型
基于 BERT 微调一个意图识别(Intent Classification)模型,你的意图类别包括: 查询天气获取新闻咨询想听音乐想添加备忘查询备忘获取家政服务结束对话增加音量减小音量其他 具体实现步骤(详细版) 1. 准备你…...
人工智能大语言模型与AI芯片新进展:技术演进与商业化路径
人工智能大语言模型与AI芯片新进展:技术演进与商业化路径 Latest Advances in AI Large Language Models and Chips: Technological Evolution and Commercialization Pathways 一、研究背景与意义(Research Background and Significance) 技…...
【Linux】Java 开发者的 Linux 常用命令指南
Java 开发者的 Linux 常用命令指南 目录标题 Java 开发者的 Linux 常用命令指南1. Linux 目录结构2. 系统信息命令3. 服务管理系统服务防火墙管理 4. 文本编辑 (vi/vim)常用模式 5. 文件和目录操作查看与导航创建与删除查看文件内容查找文件 6. 用户管理7. 压缩和解压8. 权限管…...
全开源、私有化部署!轻量级用户行为分析系统-ClkLog
ClkLog是一款支持私有化部署的全开源埋点数据采集与分析系统,兼容Web、App、小程序多端埋点,快速洞察用户访问路径、行为轨迹,并生成多维用户画像。助力中小团队搭建轻量灵活的用户行为分析平台。 为什么需要一款私有化的埋点分析系统&#x…...
【Mybatis】Mybatis基础
文章目录 前言一、搭建MyBatis1.1 创建maven工程1.2 加入log4j日志功能1.3 MyBatis的增删改查1.4 核心配置文件详解 二、MyBatis获取参数值的两种方式2.1 单个字面量类型的参数2.2 多个字面量类型的参数2.3 map集合类型的参数2.4 实体类类型的参数2.5 使用Param标识参数 三、 M…...
(002)Excel 使用图表,统计
第一步新建数据,将数据转成表格: 选中表格数据,右下角小图标:汇总 图表。...
云服务器主动防御策略与自动化防护(下)
三、纵深防御体系构建 1. 系统层防护 # 自动安全更新配置 sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades# 内核防护加固 sudo vim /etc/sysctl.conf# 添加以下参数: net.ipv4.conf.all.rp_filter1 net.ipv4.conf.default.rp_f…...
在前端应用领域驱动设计(DDD):必要性、挑战与实践指南
引言 领域驱动设计(Domain-Driven Design,简称 DDD)起源于后端复杂业务系统建模领域,是 Eric Evans 在 2003 年提出的一套理论体系。近年来,随着前端工程化与业务复杂度的持续提升,"前端也要 DDD&quo…...
【软件工程】需求分析详解
需求分析是确保软件产品符合用户期望、降低返工风险的关键环节。通过系统化的方法,团队可以从多渠道获取需求,利用多种建模技术对需求进行结构化分析,并编写规范的需求规格说明书(SRS),最终通过评审、验证及…...
FPGA-DDS信号发生器
FPGA-DDS信号发生器 DDS基本原理 FPGA实现的DDS(直接数字频率合成)波形生成器是一种高效、灵活的数字信号生成技术,广泛应用于通信、雷达和测试设备中。其核心原理是通过数字计算生成特定频率的波形。 DDS通过相位累加、查找表(LUT)…...
二进制、高位低位、位移操作与进制转换全解
二进制、高位低位、位移操作与进制转换全解 在计算机科学中,理解高位与低位、左移与右移、进制转换与位运算非常重要。这篇文章用清晰直观的方式梳理这些基本概念。 高位与低位 低位:二进制中靠右的位,权值较小(例如 (2^0, 2^1…...
docker存储
注意:数据卷挂载(卷映射):Docker会自动创建数据卷,并将容器运行所需的文件复制到数据卷中。 目录挂载:如果宿主机上没有对应的目录,容器会因为缺少运行所需的文件而出错。 1.目录挂载 指令&am…...
回归预测 | Matlab实现DBO-LightGBM蜣螂算法优化轻量级梯度提升机多输入单输出回归预测,作者:机器学习之心
回归预测 | Matlab实现DBO-LightGBM蜣螂算法优化轻量级梯度提升机多输入单输出回归预测,作者:机器学习之心 目录 回归预测 | Matlab实现DBO-LightGBM蜣螂算法优化轻量级梯度提升机多输入单输出回归预测,作者:机器学习之心预测效果…...
[ 问题解决 ] sqlite3.ProgrammingError: SQLite objects created in a thread can ...
目录 为什么会出现这个问题? 解决方法一:每个请求新建自己的连接(推荐) 解决方法二:允许 SQLite 跨线程使用连接(不推荐) 小结 当你在 python 中使用 Flask 里面调用了数据库的操作的时候&a…...
AI智能体开发新范式:多智能体协作与自进化系统的构建之道
一、从单Agent到多Agent:为什么“群体智能”是必然? 复杂任务的分而治之案例: 电商大促活动的全自动运营商品Agent:实时调价(根据库存/竞品)用户Agent:生成千人千面推荐风控Agent:检…...
js补环境工具使用技巧、补环境实例、重点环境检测点详解
什么是补环境,模拟浏览器环境让浏览器js运行,为什么需要补环境,因为浏览器和本地nodejs环境有差异,网站开发者为了检测用户是否是本地环境运行 主要补的环境Document,Window,Navigator,Location,Element 这是内置原始类型&#…...
TF_LOG 配置及级别详解
以下是Terraform中TF_LOG配置及级别的详解: 配置方法 设置日志级别 通过设置TF_LOG环境变量来启用Terraform的日志功能,并指定日志级别。可以将该变量设置为以下值之一:TRACE、DEBUG、INFO、WARN、ERROR。其中,TRACE级别最为详…...
vue3使其另一台服务器上的x.html,实现x.html调用中的函数,并向其传递数据。
vue3例子 <template><div><iframeload"loadIFreamSite"id"loadIframeSite":src"iframeSrc1"frameborder"0"scrolling"no"allowtransparency"true"style"width: 100%"></iframe&g…...
英语五大基本句型
文章目录 一、主谓二、主谓宾三、主系表什么是什么什么怎么样系动词感官动词 一、主谓 构成:动作的发出者 动作 例句:I run.(我跑步。) 二、主谓宾 构成:动作的发出者 动作 动作的接受者 构成:主语&a…...
什么是 DDoS 攻击?高防 IP 如何有效防护?2025全面解析与方案推荐
一、DDoS 攻击:互联网时代的 “数字核武器” 1. DDoS 攻击的本质与原理 ** 分布式拒绝服务攻击(DDoS)** 通过操控海量僵尸设备,向目标服务器发送洪水般请求,耗尽带宽、连接或计算资源,导致合法用户无法访…...
论文速报《Enhancing Autonomous Driving Systems...:LLM-MPC混合架构增强自动驾驶》
论文链接:https://arxiv.org/pdf/2504.11514 代码链接:https://github.com/ForzaETH/LLMxRobot 0. 简介 自动驾驶领域的传统方法多依赖于数据驱动模型,通过大量标注数据训练实现路径规划和控制。然而,现实世界中道路临时施工、突…...
Nacos 3.0 上线 MCP Registry,支持 MCP 服务注册到发现全流程管理
Nacos 3.0 正式版本发布啦!升级 MCP Registry,围绕着 MCP(Model Context Protocol) 服务管理,MCP 多种类型注册,包含 MCP Server 注册、编排、动态调试和管理,并且提供 Nacos-MCP-Router 可以进…...
一文解析大语言模型量化技术
目录 一、为什么需要量化技术 1、数据规模 2、32位浮点数(FP32) 3、16位浮点数(FP16) 4、Bfloat16(BF16) 5.INT8(8位整数)和INT4(4位整数) 总结&#…...
使用python实现自动化拉取压缩包并处理流程
使用python实现自动化拉取压缩包并处理流程 实现成果展示使用说明 实现成果展示 使用说明 执行./run.sh 脚本中的内容主要功能是: 1、从远程服务器上下拉制定时间更新的数据 2、将数据中的zip拷贝到指定文件夹内 3、解压后删除所有除了lcm之外的文件 4、新建一个ou…...
解构编程语言的基因密码:论数据类型如何被语言系统定义与重塑
摘要 本文从理论与实践层面系统探讨编程语言中数据类型的定义、实现与演化。通过静态与动态类型系统的差异分析,结合案例、流程图和表格,全面呈现主流语言数据类型设计特点及其对内存管理、错误防范与性能优化的影响。文章旨在为语言设计者和开发者提供…...
GRPO vs SFT:强化学习提升大模型多模态推理泛化能力的原因研究
GRPO vs SFT:强化学习提升大模型多模态推理泛化能力的原因研究 作者:吴宇斌 原文地址:https://zhuanlan.zhihu.com/p/1892362859628963761 训练目标与优化方式差异对比 监督微调(SFT)的目标: SFT使用带标注…...
从千兆到40G:飞速(FS)助力制造企业构建高可靠智能生产网络
案例亮点 部署S5850-24S2Q交换机,启用MLAG跨设备链路聚合,构建高性能冗余架构,消除单点故障风险,将网络可用性提升至99.99%,保障生产系统与全球业务连续性。采用40G光模块与US Conec MTP连接头多模跳线实现数据中心间…...
WHAT - 《成为技术领导者》思考题(第三章)
文章目录 涉及内容理解问题管理想法的交流保证质量 思考题思路和示例框架1. 观察一个你认为是领导者的人,列出他的行为,分类,并思考自己未采用的行为2. 观察一个不太像领导者的人,列出错过的简单机会,并反思3. 让别人注…...
Go 语言入门:(一) 环境安装
一、前言 这里不同于其他人的 Go 语言入门,环境安装我向来注重配置,比如依赖包、缓存的默认目录。因为前期不弄好,后面要整理又影响这影响那的,所以就干脆写成文章,方便后期捡起。 二、安装 1. 安装包 https://go.…...
GTC2025全球流量大会:领驭科技以AI云端之力,助力中国企业出海破浪前行
在全球化与数字化浪潮下,AI技术正成为中国企业出海的重要驱动力。一方面,AI通过语言处理、数据分析等能力显著提升出海企业的运营效率与市场适应性,尤其在东南亚等新兴市场展现出"高性价比场景适配"的竞争优势;另一方面…...
013几何数学——算法备赛
几何数学 平面切分 蓝桥杯2020年省赛题 问题描述 平面上有N条直线,其中第i条直线为yAxB.请计算这些直线将平面分成了几个部分? 输入 第一行输入一个N,接下来N行输入两个整数代表Ai和Bi。 1<N<10^5. 思路分析 初始时一条直线将…...
VUE3:封装一个评论回复组件
之前用React封装的评论回复组件,里面有三个主要部分:CommentComponent作为主组件,CommentItem处理单个评论项,CommentInput负责输入框。现在需要将这些转换为Vue3的组件。 Vue3和React在状态管理上有所不同,Vue3使用r…...