车载以太网__传输层

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

目录

什么是IP?

IP和MAC的关系

IP地址分类

私有IP

NAT

DHCP

为什么要防火墙穿透?

广播

本地广播

直接广播

本地广播VS直接广播

组播

一、什么是组播(Multicast)?

[1.1 组播的 "组" 概念](#1.1 组播的 “组” 概念)

[二、组播在 OSI 模型中的位置](#二、组播在 OSI 模型中的位置)

三、组播地址和范围

[3.1 IPv4 组播地址范围](#3.1 IPv4 组播地址范围)

[3.2 IPv6 组播](#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 值 二进制 类别 用途示例
0 000000 Default 普通流量(标准优先级)
EF(Expedited Forwarding) 101110 高优先级 语音(VoIP)、视频会议
AF11 001010 Assured Forwarding 低优先级流量
AF31 011010 Assured Forwarding 高优先级流量
CS6 110000 Critical 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 的倍数,防止数据对齐问题。

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

相关推荐
搬码红绿灯35 分钟前
计算机网络——交换机
计算机网络
搬码红绿灯36 分钟前
计算机网络——路由器
网络·计算机网络·智能路由器
YGGP10 小时前
计算机网络篇:基础知识总结与基于长期主义的内容更新
计算机网络
长安110812 小时前
计算机网络----主要内容简介
网络·计算机网络·智能路由器
LG.YDX1 天前
计算机网络:计算机网络的分类
计算机网络
搬码红绿灯2 天前
计算机网络——交换机实验(模拟)
网络·计算机网络
听风吹等浪起2 天前
计算机网络基础:VLAN(虚拟局域网)
网络·计算机网络
我的ID配享太庙呀2 天前
Centos的ElasticSearch安装教程
运维·计算机网络·elasticsearch·centos·智能路由器·jenkins·es
Bruce Jue2 天前
计算机网络开发(2)TCP\UDP区别、TCP通信框架、服务端客户端通信实例
tcp/ip·计算机网络·udp
字节源流3 天前
【计算机网络】TCP
网络·tcp/ip·计算机网络