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

2017-07-08 10:52:20 +08:00
 jtsai

我所理解的二层通信、电脑 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 和网关不是网络层,路由那的东西的。二层为什么要设置这个?

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

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

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

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

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

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

那为什么还需要 IP 呢?

世界上不止一个局域网呀,许许多多的局域网,怎么路由这些数据包?网络号便是这个作用。(关键词:域间路由)。自治系统都有一个网络号,内部再划分好多小的自治域。每个自治域都有唯一的网络号。每一个局域网内的所有 IP 构成这个网络。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/373893

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX