jtsai
V2EX  ›  问与答

OSI 二层 (数据链路层) 通信为什么要设置 IP 和网关

  •  
  •   jtsai · Jul 8, 2017 · 4822 views
    This topic created in 3411 days ago, the information mentioned may be changed or developed.

    我所理解的二层通信、电脑 A、B 是直接通过 mac 地址通信的。(电脑 A - 交换机 - 电脑 B )。

    以太网的帧 [Preamble | SFD | DST | SRC | Type | Payload (Data) | Pad | FCS | Extension]。

    其中 DST 电脑 B 的 mac 地址( 6btye ),SRC 电脑 A 的 mac 地址( 6byte )。

    电脑 A 发送数据包到交换机、交换机转发到电脑 B。

    我的疑问是 IP 和网关不是网络层,路由那的东西的。二层为什么要设置这个?

    23 replies  •  2017-07-09 00:02:39 +08:00
    chinawrj
    chinawrj
    Jul 8, 2017 via Android❤️1
    1
    主贴内没看到你所描述的要填 IP 的地方
    jtsai
    jtsai
    OP
    Jul 8, 2017
    2
    @chinawrj 我们的局域网,电脑 A 电脑 B 电脑 C 通过交换机连在一起。这三台要脑要通信,为什么都要设置 IP 和网关。这是我想知道的
    wwqgtxx
    wwqgtxx
    Jul 8, 2017 via iPhone❤️1
    3
    那是因为你是用 tcp/ip 协议通讯的,这本来就已经不是第二层协议了
    xfspace
    xfspace
    Jul 8, 2017 via Android❤️1
    4
    程序基于 IP 开发的,你不配 IP 怎么通讯?
    你可以造个轮子,用 MAC 通讯
    二层同一广播域同一子网可以不设网关
    jtsai
    jtsai
    OP
    Jul 8, 2017 via Android
    5
    @wwqgtxx 我自己也怀疑过 单片机这样通信可以就可以,被电脑强迫封装一定要 ip 了
    chinawrj
    chinawrj
    Jul 8, 2017 via Android❤️1
    6
    @jtsai 你所谓的通信已经自认为是 IP 了。以太网不仅仅可以是 IPV4,还可以 IPV6,还可以裸包。
    Septembers
    Septembers
    Jul 8, 2017❤️1
    7
    你可以实现 MAC 层 telnet
    see https://github.com/haakonnessjoen/MAC-Telnet
    jtsai
    jtsai
    OP
    Jul 8, 2017
    8
    @chinawrj 更上层的协议在以太网帧的 Payload (Data) 里? 像你说的 ip 包
    wwqgtxx
    wwqgtxx
    Jul 8, 2017 via iPhone❤️1
    9
    @jtsai 你用 wireshark 抓个包看看就知道原始包到底长啥样了
    bigdogbigpig
    bigdogbigpig
    Jul 8, 2017 via iPhone
    10
    好好看书,计算机网络。
    oska874
    oska874
    Jul 8, 2017
    11
    计算机网络得重学。
    crazycen
    crazycen
    Jul 8, 2017
    12
    大学有本书,叫计算机网络!
    Betacoefficient
    Betacoefficient
    Jul 8, 2017
    13
    看书都不仔细,当然有可能是记性不好。多去背一下计算机网络及其相关的知识。
    AntonChen
    AntonChen
    Jul 8, 2017 via iPhone
    14
    ROS 的 WinBox 能用 MAC 地址连接
    baicheng
    baicheng
    Jul 8, 2017 via iPhone
    15
    不是很懂楼主的意思。
    从以太网帧格式里头没有看到需要直接填 IP 地址的字段,但 Data 字段指的是上层 IP 层的数据帧,需要 IP 地址。
    局域网内 A 与 B 电脑的直接通信过程是:
    A 的应用层数据->A 的传输层( TCP/UDP )->A 的网络层( IP )->A 的数据链路层(以太网)->A 的物理层->B 的物理层->B 的数据链路层->B 的网络层->B 的传输层->B 的应用层

    在局域网内直接通过数据链路层实现通信是 OK 的,不过得自己写程序了。
    9RWBdC758updU311
    9RWBdC758updU311
    Jul 8, 2017 via iPhone
    16
    很少有只用 mac 地址通信的应用软件,都是基于 ip 地址通信的,arp 协议负责转换 ip 与 mac 地址
    luoqeng
    luoqeng
    Jul 8, 2017
    17
    楼主听说过 IPX/SPX 协议没
    bravecarrot
    bravecarrot
    Jul 8, 2017 via iPhone
    18
    没太看懂楼主的意思,也没看到需要设置 ip 的地方。
    原则上你可以操纵每一层的通信内容。操纵对应的硬件设备即可

    通常说的 A-交换机-B 是为了帮助大家理解其真实过程。在用户使用的时候,还是对网络层的内容设置比较方便即 a 的 ip-a 的 mac-网线-交换机-网线-b 的 mac-b 的 ip
    jtsai
    jtsai
    OP
    Jul 8, 2017
    19
    @baicheng
    @bravecarrot 感谢,没看懂意思 请看二楼 我的补充。

    其实我已经弄明白了。哈哈,二层不是可以直接通过 mac 通信吗? 为什么设置 ip,因为通信的程序要 ip。

    日常使用的软件是没有直接使用二层交流的。纯粹的二层通信、直过 mac 地址通信是可以实现的。但是更高层的通信更强大,所以软件们就直接使用更高层的了。

    理解如果有误导,请帮忙指正。
    feather12315
    feather12315
    Jul 8, 2017 via Android
    20
    需要搞明白:IP 的作用是什么?
    俩个字概括:寻路。
    总线型的网络拓扑,任何连接在总线上的设备,都可以监听并收到这条链路上任何设备发出的包(网卡需要设置成混杂模式才可以收到)。而且,NIC (网络接口卡)的地址(以太网是 MAC )是一般是唯一的(虽说一般,但可以认为是唯一的),也可以唯一确定一个局域网的设备。

    那为什么还需要 IP 呢?

    世界上不止一个局域网呀,许许多多的局域网,怎么路由这些数据包?网络号便是这个作用。(关键词:域间路由)。自治系统都有一个网络号,内部再划分好多小的自治域。每个自治域都有唯一的网络号。每一个局域网内的所有 IP 构成这个网络。
    chinawrj
    chinawrj
    Jul 8, 2017 via Android
    21
    @jtsai 是的。ARP 也是可以在以太网上的。还有很多,具体看以太网帧的 type 定义。我记得 IP 是 0806 ?忘了
    billlee
    billlee
    Jul 8, 2017
    22
    你用过拨号宽带吗?你用网卡连 MODEOM 走 PPPoE 拨号的时候,电脑的以太网卡和 MODEM 都是不需要配置 IP 地址的。
    pigzilla
    pigzilla
    Jul 9, 2017
    23
    lz 还是太年轻,去搜索下 NetWare 和 IPX 吧。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2336 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 13:12 · PVG 21:12 · LAX 05:12 · JFK 08:12
    ♥ Do have faith in what you're doing.