车载以太网__传输层

        车载以太网中,传输层和实际用的互联网相差无几。本篇文章对传输层中的IP进行介绍

目录

什么是IP?

IP和MAC的关系

IP地址分类

私有IP       

NAT

DHCP

为什么要防火墙穿透?

广播

本地广播

直接广播

本地广播VS直接广播

组播       

一、什么是组播(Multicast)?

1.1 组播的 “组” 概念

二、组播在 OSI 模型中的位置

三、组播地址和范围

3.1 IPv4 组播地址范围

3.2 IPv6 组播

四、组播核心原理

五、常见组播协议

六、组播带来的好处

七、常见应用场景

八、网络配置要点

九、组播与其他通信方式的对比

十、总结

IP分⽚与重组

IPv4首部


什么是IP?

        IP(Internet Protocol,互联网协议)是 网络通信的核心协议,用于标识设备并确保数据包能够正确地在网络中传输。如果具象化的说就是住处的地址。MAC就相当于身份证。IP地址可能会变,MAC由网卡决定短期内一般不会更变。IP位于OSI7层模型中的的网络层,⽹络层的主要作⽤是:实现主机与主机之间的通信,也叫点对点通信。

IP和MAC的关系

        正如我们上一篇文章中介绍的,IP是整个全球路径(跨网络传输)的规划者,MAC(这里是指数据链路层里面的mac子层不是mac地址)仅仅用于局域网(LAN)内一跳和下一跳之间的联系,通过ARP协议与MASK子网掩码,如果目的IP地址位于子网内,那么他将会通过ARP协议获取对应IP地址的MAC地址从而建立连接,但是如果不在子网则只能获取网关(路由器)的地址,前往下一跳了。他们的关系由下图所示:

        

IP地址分类

        IP地址分为5类如下图所示

        

也就是

        

私有IP       

         其中192这个开头的也就是我们说的内网,他是私有IP。你的设备(电脑、手机、打印机等)在局域网内通信时,使用的是私有 IP(如 192.168.xxx.xxx)。私有 IP 不能直接访问互联网。

NAT

        在访问外网时,防火墙或路由器会通过 NAT(网络地址转换)把内网 IP 映射成一个公网 IP,然后再通过路由器发送到互联网。对于路由器,路由器维护一个 NAT 映射表,记录哪个内网 IP 发出了哪个请求,以便返回时能够正确转发。而防火墙的作用是防止外部恶意攻击,只有内部发起的请求可以收到响应,外部设备不能直接访问内网设备。从而NAT可以做到内网设备共享公网 IP,也就是说你的家里可能有很多设备(手机、电脑),但在公网看来,它们都是同一个 IP(路由器的公网 IP)。因此也节约了公网 IP 资源。但是这就会出一个问题,手动分配 IP 容易出错,一旦 IP 重复,网络会出现冲突。

DHCP

        那么就需要DHCP这个应用层协议来帮助帮助分配IP了。DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是一种 自动给网络中的设备分配 IP 地址、子网掩码、网关以及 DNS 等网络参数 的协议。它能让我们在局域网中实现即插即用的网络连接,大大简化了网络管理和配置工作。他能实现1.自动分配 IP 地址:无需人工手动给每台设备配置 IP 地址,设备开机后会自动从 DHCP 服务器获取到自己的 IP。2.分配其他网络参数比如默认网关,子网掩码,DNS 服务器地址以及其他设置。

来插叙回顾刚刚的arp,arp协议是在内网中询问的,那么他在跳转中,其实是每个路由器组成的内网,这个路由器又对应内部一大堆192.168的设备.说到这,我们知道一般如果跨域通信我们是要做防火墙穿透的。

为什么要防火墙穿透?

        防火墙(Firewall) 是用于保护内网设备免受外部网络攻击的安全机制,它会阻止未经授权的访问,导致外部设备无法直接访问内网资源。他可以过滤非法访问(限制某些端口的访问),防止 DDoS 攻击(限制大量异常流量).但是http的80或者https的443端口他不会拦截。所以可以用http来穿透防火墙。但是像dds这种他本来就是局域网里面用的,就无所谓了。

广播

        很多人会把广播和组播弄混。其实广播是 "一对所有" 的通信,即数据会发给 同一子网内的所有设备,而不是特定的组。并且广播不会跨路由器,所以数据只能局限在 192.168.0.0/24 这个子网内(这个/24其实是CIDR,也就是说前24位表示网络部分,后面8位表示主机部分,相当于子网掩码255.255.255.0)。组播(224.x.x.x):数据包只会被订阅了该组的设备接收,并且可以跨子网传播

它分为本地广播和直接广播

本地广播

        使用255.255.255.255。这样所有设备都会接收数据包,但路由器不会转发。适用于DHCP 发现啊,ARP请求啊之类。

直接广播

        直接广播使用子网地址 +255,注意这里的 +255 不是指“在原来的 IP 地址上直接加 255”。它的真正含义是:把主机部分的所有位都变成 1,得到广播地址(Broadcast Address)。举个例子192.168.1.0/24 +255就是把最后8位全部设为1.这样192.168.1这个子网内的所有设备都能1收到广播了。直接广播让子网内的所有设备都收到消息,但不会跨路由器传播。而本地广播是所有设备都会收到消息。

本地广播VS直接广播

        有人就会发出疑问,那本地广播感觉和直接广播差不多啊,本地广播说是所有设备都会接受数据包,但是由于有防火墙和nat,本地设备就只有子网内设备啊,那不是和直接广播通知子网内设备差不多嘛?默认情况下是这样的,但是如果你想实现远程开机这种操作。本地广播无法被 NAT 设备(如路由器)转发到互联网,但是直接广播如果路由器启用了“直接广播转发”,数据包可以传播到其他子网。且由于防火墙的影响,如果你需要让广播通过防火墙,必须手动配置防火墙规则,允许特定端口(如 Wake-on-LAN 的 UDP 9 端口)。这样就可以实现远程开机了。

组播       

一、什么是组播(Multicast)?

组播(Multicast) 是一种 “一对多”“多对多” 的网络传输方式,允许发送方(Source)只发送 一份数据包,而网络设备(路由器、交换机)根据 组播路由协议 将这份数据复制并分发给多个接收方(Receivers)

  • 相比 广播(Broadcast),组播的接收方是加入了组(Group)的节点,并不是子网内所有节点。
  • 相比 单播(Unicast),组播在多用户同时接收相同内容时可极大减少网络带宽消耗。
1.1 组播的 “组” 概念
  • 每个组播组会对应一个 组播 IP 地址(例如 224.1.1.1)。
  • 只有 订阅(Join)了该组播组 的主机才能接收该组的流量。
  • 没有订阅的主机不会接收,也就不会浪费带宽。

二、组播在 OSI 模型中的位置

  1. 网络层(IP 层):使用 组播 IP 地址(范围 224.0.0.0 - 239.255.255.255 for IPv4)来标识组。
  2. 传输层:通常用 UDP(User Datagram Protocol)来传输组播数据,也可以使用其他协议。
  3. 链路层(以太网层):使用 特殊的组播 MAC 地址(以 01:00:5E 开头)来标识组播帧。

三、组播地址和范围

3.1 IPv4 组播地址范围

224.0.0.0 ~ 239.255.255.255

  • 224.0.0.x:保留地址,用于本地链路组播(路由器不转发)。
  • 224.0.1.x - 238.x.x.x:可路由组播地址,用于互联网或大规模网络组播。
  • 239.0.0.0 - 239.255.255.255:组织范围(Administratively Scoped)地址,用于私有组播(类似私有 IP),只在组织内部使用。
3.2 IPv6 组播

在 IPv6 中,组播地址以 ff00::/8 开头,例如 ff02::1(所有节点),ff02::2(所有路由器)等。

四、组播核心原理

  1. 发送方只发一次数据
    不像单播要为每个接收者发送多份,组播只在网络中保留一份数据流,在需要的节点或路由节点才复制分发。
  2. 接收方主动加入(Join)或退出(Leave)组播组
    • 局域网内:使用 IGMP(Internet Group Management Protocol) 通知组播路由器:“我要接收这个组播组地址的数据”。
    • 路由器根据组播路由协议(如 PIM、MOSPF)在网络间构建 组播分发树(Multicast Distribution Tree)
  3. 网络设备(路由器/交换机) 根据 组播路由协议 动态维护哪些接口下有接收组播数据的主机,实现数据精准分发

五、常见组播协议

  1. IGMP(Internet Group Management Protocol)

    • 工作在主机与局域网内的组播路由器之间,主机通过 IGMP 向路由器声明要加入或离开某个组播组。
    • 常见版本:IGMPv1、IGMPv2、IGMPv3(v3 支持源过滤,能指定接收来自哪几个源的组播)。
  2. PIM(Protocol Independent Multicast)

    • 工作在路由器之间,用于在多路由环境中建立并维护组播分发树
    • 常见模式:PIM-SM(稀疏模式)PIM-DM(密集模式)
    • 稀疏模式(SM)常用于大多数互联网或企业网场景;密集模式(DM)现在用得较少。
  3. MLD(Multicast Listener Discovery)

    • IPv6 下的“IGMP”对应协议,用于管理 IPv6 组播。

六、组播带来的好处

  1. 节省带宽

    • 只发送一次数据,然后在必要的节点进行复制。若有大量用户同时收看相同视频或订阅相同数据流,可极大降低网络压力。
  2. 降低服务器负载

    • 无需为每个接收者维护独立的连接,大量用户共享同一个数据流。
  3. 实时性好,适合大规模分发

    • 适用于 视频直播、股票行情、在线会议、在线教育 等实时业务场景。

七、常见应用场景

  1. IPTV / 视频直播

    • 机顶盒或播放器加入特定组播组,网络运营商通过组播方式发送视频流给所有收看用户。
  2. 在线会议 / 语音广播

    • 多人语音或视频会议,使用组播减少流量。
  3. 实时信息分发(股票行情、竞价系统等)

    • 证券公司实时推送行情给交易终端,组播可极大减轻服务器和网络负担。
  4. 大型局域网广播(代替纯广播,减少网络风暴)

    • 例如主机发现、服务发布,可以使用组播,只有订阅者才会接收。

八、网络配置要点

  1. 局域网内要启用 IGMP

    • 交换机需支持 IGMP Snooping,路由器需支持 IGMP Proxy 或 PIM 路由,才能正确转发组播流。
  2. 跨网段要启用 PIM(稀疏模式或密集模式)

    • 路由器间通过 PIM 维护路由信息,让组播数据可以在不同子网间传播。
  3. 安全和 QoS

    • 防止组播被滥用造成网络攻击(如伪造源 IP)、网络风暴。
    • 对组播流量进行 QoS(服务质量) 配置,保证实时业务优先级。
  4. 使用私有组播地址

    • 如果只在组织内部使用组播,最好用 239.x.x.x 段,避免与互联网组播地址冲突。

九、组播与其他通信方式的对比

模式地址/协议适用场景带宽利用扩展性
单播普通 IP 地址点对点通信、请求-响应一对一,带宽消耗大大规模“一对多”非常不划算
广播255.255.255.255192.168.x.255局域网内的一对所有设备一对所有,浪费较大不能跨路由器,覆盖面有限
组播224.0.0.0 - 239.255.255.255一对多/多对多,只有订阅设备只复制给加入组的设备,效率高可跨子网,但需组播路由协议
任播Anycast(IPv6 Anycast)最近节点服务(CDN、DNS)面向全局路由,路由到最近节点配置复杂,多用于服务器分布式

十、总结

  1. 组播是网络层的 “一对多” 传输方式

    • 通过 组播 IP 地址 标识组,用 IGMP 来管理主机加入/离开组,路由器用 PIM 等协议维护跨网段的组播路由。
  2. 优势在于大幅节省带宽和服务器负载

    • 对于 视频直播、在线会议、实时行情 等场景是非常理想的技术。
  3. 需要网络设备支持组播路由和 IGMP Snooping

    • 企业网络或运营商网络中,需要合理规划、开启相关协议,否则组播可能无法跨网段,或发生网络风暴。
  4. 安全和 QoS 同样重要

    • 在大规模组播应用中,要做好 鉴权、限速、ACL 等。

IP分⽚与重组

        每种数据链路的最⼤传输单元 MTU 都是不相同的, 以太⽹的 MTU 1500 字节 等.每种数据链路的 MTU 之所以不同,是因为每个不同类型的数据链路的使⽤⽬的不同。使⽤⽬的不同,可承载的 MTU 也就不同。 其中,我们最常⻅ 数据链路是以太⽹,它的 MTU 1500 字节。 那么当 IP 数据包⼤⼩⼤于 MTU 时, IP 数据包就 会被分⽚。 经过分⽚之后的 IP 数据报在被重组的时候,只能由⽬标主机进⾏,路由器是不会进⾏重组的。 在分⽚传输中,⼀旦某个分⽚丢失,则会造成整个 IP 数据报作废,所以 TCP 引⼊了 MSS 也就是在 TCP 层进⾏分 ⽚不由 IP 层分⽚,那么对于 UDP 我们尽量不要发送⼀个⼤于 MTU 的数据报⽂。

IPv4首部

这里面version 指定 IP 协议版本,IPv4 对应4,ipv6对应6

IHL(首部长度):IP 头部的长度,他的单位是4字节,用他的值x4就是实际首部长度。比如IPv4 头部最小长度 = 20 字节(IHL=5)。IPv4 头部最大长度 = 60 字节(IHL=15),最大是使用了option选项字段。

TOS:用于 区分不同优先级(如 QoS),影响路由和流量管理。他由3位的优先权子字段(现在没用了).4位的tos子字段以及最后一个无用位(必须置0)组成。他是早期用于区分数据包的优先级,但是现在主要用于 QoS(服务质量控制)影响数据包的处理方式了。现在一般是用DiffServ是取代了TOS。他由DSCP(6bit)+ECN(2bit)组成。DSCP用于标记优先级,ECN用于显式拥塞通知。常见的 DSCP 代码点包括:

DSCP 值二进制类别用途示例
0000000Default普通流量(标准优先级)
EF(Expedited Forwarding)101110高优先级语音(VoIP)、视频会议
AF11001010Assured Forwarding低优先级流量
AF31011010Assured Forwarding高优先级流量
CS6110000Critical Services网络控制流量(BGP、OSPF)

Total Length(总长度):IP 数据包的总长度(首部 + 负载),单位是 字节(最大 65535)。但是最大数据长度受 MTU 限制,以太网典型 MTU = 1500,意味着最大数据长度通常是 1480 字节(IP 头部 20 字节 + 数据 1480)

Identification:发送方给每个 IP 数据包分配一个唯一 ID,用于分片重组.如果数据包被拆分成多个片段,所有片段都会有相同的 Identification 值,接收方用它来重组数据包.但是我们之前有提到说为了避免让ip来分片所以通过mss让tcp进行分片了.

Flags(标志位):DF(位 1)1 表示 禁止分片,如果数据包超过 MTU,必须丢弃。MF(位 2)1 表示 还有更多片段,如果是 0,表示这是最后一个片段

Fragment Offset(片偏移):指明当前片段在原始数据包中的位置,单位是 8 字节。举个例子偏移 0:第一个片段。那么第二段偏移 1480/8=185。

TTL(Time to Live,生存时间):控制数据包在网络中存活的时间,防止死循环。每经过一个路由器,TTL - 1,如果 TTL=0,数据包被丢弃。linux是64,windows是128.

Protocol(协议):指定IP 负载是什么协议(用于解析数据部分)。1 = ICMP(ping)6 = TCP

17 = UDP

Header Checksum(头部校验和):检查 IP 头部 是否出错,若出错则丢弃数据包。需要注意到是每经过一个路由器都会重新计算这个校验和(因为 TTL 变了)。

Source Address(源地址):记录数据包发送方的 IPv4 地址(4 字节)。

Destination Address(目标地址):记录数据包接收方的 IPv4 地址

Options(可选字段,最大 40 字节):可以存储 时间戳、安全信息、路由指示等。但是现在已经很少使用了。

Padding(填充):确保 IP 头部的总长度是 4 的倍数,防止数据对齐问题。

之前的图标注了长度但是没有具体的英文名,这里补一张英文名对应的头部图。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5 蓝图学习计划 - Day 12:存储与加载

在游戏开发中,存储(Save)与加载(Load) 系统至关重要,玩家需要能够保存游戏进度、角色状态、道具数据等信息,并在下次启动游戏时恢复它们。UE5 提供了 SaveGame 蓝图类,帮助开发者快速…

web-文件上传-CTFHub

前言 在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。 作者更新了CTFHub系列,希望小伙伴们多多支持…

OpenAI 实战进阶教程 - 第四节: 结合 Web 服务:构建 Flask API 网关

目标 学习将 OpenAI 接入 Web 应用,构建交互式 API 网关理解 Flask 框架的基本用法实现 GPT 模型的 API 集成并返回结果 内容与实操 一、环境准备 安装必要依赖: 打开终端或命令行,执行以下命令安装 Flask 和 OpenAI SDK: pip i…

【Elasticsearch】nested聚合

在 Elasticsearch 中,嵌套聚合(nestedaggregation)的语法形式用于对嵌套字段(nestedfields)进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型,用于存储数组中的对象,这些对象需要独…

基于Qt的Ribbon界面框架

推荐一套基于Qt的Ribbon风格的界面框架,SARibbon。 Ribbon风格较传统的软件风格(菜单栏,工具栏)相比,具有直观性,高校性等优点,可以快速的找到所需工具,减少使用次数。微软的office…

【deepseek实战】绿色好用,不断网

前言 最佳deepseek火热网络,我也开发一款windows的电脑端,接入了deepseek,基本是复刻了网页端,还加入一些特色功能。 助力国内AI,发出自己的热量 说一下开发过程和内容的使用吧。 目录 一、介绍 二、具体工作 1.1、引…

C语言:函数栈帧的创建和销毁

目录 1.什么是函数栈帧2.理解函数栈帧能解决什么问题3.函数栈帧的创建和销毁的过程解析3.1 什么是栈3.2 认识相关寄存器和汇编指令3.3 解析函数栈帧的创建和销毁过程3.3.1 准备环境3.3.2 函数的调用堆栈3.3.3 转到反汇编3.3.4 函数栈帧的创建和销毁 1.什么是函数栈帧 在写C语言…

基于RTOS的STM32游戏机

1.游戏机的主要功能 所有游戏都来着B站JL单片机博主开源 这款游戏机具备存档与继续游戏功能,允许玩家在任何时候退出当前游戏并保存进度,以便日后随时并继续之前的冒险。不仅如此,游戏机还支持多任务处理,玩家可以在退出当前游戏…

ONLYOFFICE 文档 8.3 已发布:PDF 图章、合并形状、更多格式支持等

ONLYOFFICE 最新版本的在线编辑器已发布,包含约 30 项新功能和多个错误修复。阅读本文,了解所有更新内容。 关于 ONLYOFFICE 文档 ONLYOFFICE 是一个开源项目,专注于高级和安全的文档处理。坐拥全球超过 1500 万用户,ONLYOFFICE …

第二次连接k8s平台注意事项

第二次重新打开集群平台 1.三台机子要在VMware打开 2.MobaBXterm连接Session 3.三个机子docker重启 systemctl restart docker4.主节点进行平台链接 docker pull kubeoperator/kubepi-server[rootnode1 home]# docker pull kubeoperator/kubepi-server [rootnode1 home]# # 运…

通过多层混合MTL结构提升股票市场预测的准确性,R²最高为0.98

“Boosting the Accuracy of Stock Market Prediction via Multi-Layer Hybrid MTL Structure” 论文地址:https://arxiv.org/pdf/2501.09760 ​​​​​​​ 摘要 本研究引入了一种创新的多层次混合多任务学习架构,致力于提升股市预测的效能。此架构融…

结合深度学习、自然语言处理(NLP)与多准则决策的三阶段技术框架,旨在实现从消费者情感分析到个性化决策

针对电商个性化推荐场景的集成机器学习和稳健优化三阶段方案。 第一阶段:在线评论数据处理,利用深度学习和自然语言处理技术进行特征挖掘,进而进行消费者情感分析,得到消费者偏好 在第一阶段,我们主要关注如何通过深度学习和自然语…

【React】受控组件和非受控组件

目录 受控组件非受控组件基于ref获取DOM元素1、在标签中使用2、在组件中使用 受控组件 表单元素的状态(值)由 React 组件的 state 完全控制。组件的 state 保存了表单元素的值,并且每次用户输入时,React 通过事件处理程序来更新 …

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别? (1)变量 定义不仅告知编译器变量的类型和名字,还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型,但并不为它分配内存空间…

【Android】jni开发之导入opencv和libyuv来进行图像处理

做视频图像处理时需要对其进行水印的添加,放在应用层调用工具性能方面不太满意,于是当下采用opencvlibyuv方法进行处理。 对于Android的jni开发不是很懂,我的需求是导入opencv方便在cpp中调用,但目前找到的教程都是把opencv作为模…

HTML应用指南:利用GET请求获取全国盒马门店位置信息

随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应…

20240206 adb 连不上手机解决办法

Step 1: lsusb 确认电脑 usb 端口能识别设备 lsusb不知道设备有没有连上,就插拔一下,对比观察多了/少了哪个设备。 Step 2: 重启 adb server sudo adb kill-serversudo adb start-serveradb devices基本上就可以了~ Reference https://b…

【BUUCTF逆向题】[MRCTF2020]Transform

一.[MRCTF2020]Transform 64位无壳,IDA打开发现main函数进入反编译 阅读程序 先输入33位code再加密处理然后验证是否相等的题型 逆向看,验证数组byte_40F0E0已知 再往上看加密处理方式 就是将Str(我们输入的flag)的每一个索引处…

寒假2.5

题解 web:[网鼎杯 2020 朱雀组]phpweb 打开网址,一直在刷新,并有一段警告 翻译一下 查看源码 每隔五秒钟将会提交一次form1,index.php用post方式提交了两个参数func和p,func的值为date,p的值为Y-m-d h:i:s a 执行fu…

【正点原子K210连载】第六十七章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第六十七章 音频FFT实验 本章将介绍CanMV下FFT的应用,通过将时域采集到的音频数据通过FFT为频域。通过本章的学习,读者将学习到CanMV下控制FFT加速器进行FFT的使用。 本章分为如下几个小节: 32.1 maix.FFT模块介绍 32.2 硬件设计 32.3 程序设…