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

车载以太网__传输层

        车载以太网中,传输层和实际用的互联网相差无几。本篇文章对传输层中的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.kler.cn/a/533913.html

相关文章:

  • React开发中箭头函数返回值陷阱的深度解析
  • 线程同步时定义 std::mutex 为什么要在前面添加 mutable 关键字
  • 3.【BUUCTF】XSS-Lab1
  • 无人机图传模块 wfb-ng openipc-fpv,4G
  • 论deepseek软件底层原理
  • idea分析sql性能
  • SpringBoot+SpringDataJPA项目中使用EntityManager执行复杂SQL
  • RabbitMQ中的过期时间
  • OCT图像缺陷检测
  • SpringUI Web高端动态交互元件库
  • Django 多数据库
  • vue3 + ElementPlus 封装列表表格组件包含分页
  • AllData数据中台核心菜单十二:数据同步平台
  • [c语言日寄]赋值操作对内存的影响
  • python:递归函数与lambda函数
  • 操作系统1.6
  • Debian 安装 Nextcloud 使用 MariaDB 数据库 + Caddy + PHP-FPM
  • Python 自学秘籍:开启编程之旅,人生苦短,我用python。
  • Python-基于PyQt5,Pillow,pathilb,imageio,moviepy,sys的GIF(动图)制作工具
  • 探索 paraphrase-MiniLM-L6-v2 模型在自然语言处理中的应用
  • 【深度学习入门_机器学习理论】决策树(Decision Tree)
  • C# 中记录(Record)详解
  • JS-对象-BOM
  • 基于SpringBoot+vue高效旅游管理系统
  • 基础相对薄弱怎么考研
  • Clojure语言的软件工程