Networking 从高级语言在两台通过交换机连接的计算机之间传输数据

Networking 从高级语言在两台通过交换机连接的计算机之间传输数据,networking,switching,osi,data-link-layer,Networking,Switching,Osi,Data Link Layer,我将首先说明我对网络和整个OSI模型知之甚少 我的目标是使用非托管网络交换机创建一个小型网络(现在是我的笔记本电脑和raspberry Pi)。在更高层的传输(3级以上)中,我只需设置数据包的目标IP地址。据我在维基百科上读到的,网络交换机在数据链路层工作,这意味着它使用MAC地址 当局域网上的设备连接到只支持MAC地址的设备时,如何将数据发送到该设备。更重要的是,如何从Java或C#?TL;OSI模型是关于抽象的,编程语言使用操作系统调用来实现这种抽象。Rasberry Pi正在运行一个完整的

我将首先说明我对网络和整个OSI模型知之甚少

我的目标是使用非托管网络交换机创建一个小型网络(现在是我的笔记本电脑和raspberry Pi)。在更高层的传输(3级以上)中,我只需设置数据包的目标IP地址。据我在维基百科上读到的,网络交换机在数据链路层工作,这意味着它使用MAC地址

当局域网上的设备连接到只支持MAC地址的设备时,如何将数据发送到该设备。更重要的是,如何从Java或C#?

TL;OSI模型是关于抽象的,编程语言使用操作系统调用来实现这种抽象。Rasberry Pi正在运行一个完整的操作系统,将发送和接收地址为其指定IP地址的网络数据。您不需要指定MAC地址

你想从你的笔记本电脑上和一个树莓Pi交流。为此,首先将它们连接到哑交换机,并在连接到哑交换机的物理接口上,在同一子网中为这两个设备分配一个IP地址。假设您的笔记本电脑的物理以太网连接已分配
10.0.0.1/24
,Rasberry Pi的物理以太网连接已分配
10.0.0.2/24
(如果您不理解我的符号,请查看)。IP地址是第3层结构。现在,您的应用程序将使用操作系统套接字创建具有第4层地址(应用程序端口)的TCP或UDP连接(请参阅UDP java示例)。高于第4层的所有内容都由应用程序处理

第2层和更低层由操作系统处理。当应用程序尝试通过套接字发送数据时,操作系统通过查看目标IP地址来确定从哪个物理接口发送数据。此查找使用OS路由表。假设您有一个正常的路由表,操作系统将选择具有与目标IP相同子网的ab IP的接口。因此,如果您将数据发送到
10.0.0.2
,您的操作系统将从
10.0.0.1
发送数据,因为它与
10.0.0
具有相同的子网。现在操作系统已经选择了一个接口,它仍然不知道将第三层IP数据包发送到哪个第二层MAC地址。操作系统不知道这一点的主要原因是IP地址可以更改,但第2层MAC地址不应该更改。无论如何,操作系统发送一个ARP请求,试图获取IP地址的MAC地址。如果设备连接正确,操作系统将获得所需IP地址的MAC地址,并开始向该MAC地址发送数据。开关(智能或哑)确保消息到达所需的MAC地址。在接收端,操作系统接收数据包并将数据包中的数据发送到绑定到第4层地址(应用程序端口)的套接字

旁注:从技术上讲,使用原始套接字只向MAC地址发送数据是可能的,但这是非常技术性的;OSI模型是关于抽象的,编程语言使用操作系统调用来实现这种抽象。Rasberry Pi正在运行一个完整的操作系统,将发送和接收地址为其指定IP地址的网络数据。您不需要指定MAC地址

你想从你的笔记本电脑上和一个树莓Pi交流。为此,首先将它们连接到哑交换机,并在连接到哑交换机的物理接口上,在同一子网中为这两个设备分配一个IP地址。假设您的笔记本电脑的物理以太网连接已分配
10.0.0.1/24
,Rasberry Pi的物理以太网连接已分配
10.0.0.2/24
(如果您不理解我的符号,请查看)。IP地址是第3层结构。现在,您的应用程序将使用操作系统套接字创建具有第4层地址(应用程序端口)的TCP或UDP连接(请参阅UDP java示例)。高于第4层的所有内容都由应用程序处理

第2层和更低层由操作系统处理。当应用程序尝试通过套接字发送数据时,操作系统通过查看目标IP地址来确定从哪个物理接口发送数据。此查找使用OS路由表。假设您有一个正常的路由表,操作系统将选择具有与目标IP相同子网的ab IP的接口。因此,如果您将数据发送到
10.0.0.2
,您的操作系统将从
10.0.0.1
发送数据,因为它与
10.0.0
具有相同的子网。现在操作系统已经选择了一个接口,它仍然不知道将第三层IP数据包发送到哪个第二层MAC地址。操作系统不知道这一点的主要原因是IP地址可以更改,但第2层MAC地址不应该更改。无论如何,操作系统发送一个ARP请求,试图获取IP地址的MAC地址。如果设备连接正确,操作系统将获得所需IP地址的MAC地址,并开始向该MAC地址发送数据。开关(智能或哑)确保消息到达所需的MAC地址。在接收端,操作系统接收数据包并将数据包中的数据发送到绑定到第4层地址(应用程序端口)的套接字


旁注:从技术上讲,使用原始套接字只向MAC地址发送数据是可能的,但这是非常技术性的。

Liam Kelly的回答提供了关于数据发送抽象的深刻见解。我将尽力提供补充信息

网络交换机操作 虽然大多数交换机在数据级运行,但e可以在更高级别执行某些操作:

  • 第3层:在以太网物理层的范围内,第3层交换机可以正常执行部分或全部功能 由路由器执行

  • 第4层:[…]网络地址转换功能,但随后添加了一些