首页 文章

子网掩码和路由方面的主机设备通信

提问于
浏览
2

假设我有两台以太网适配器的主机:

  • LAN适配器 - 连接到LAN,自动获取IP地址 .

  • 设备适配器 - IP地址为192.168.10.1,子网掩码为255.255.255.0 .

我还将硬件设备连接到设备适配器,它的工作方式类似于TCP / IP服务器,并配置了IP地址192.168.10.2,子网掩码255.255.255.0 .

我有以下哑法规则来 Build 主机设备通信:将两个子网掩码设置为255.255.255.0,并定义仅由最后一个组件不同的IP地址 . 没关系,它有效 .

现在我正在阅读有关TCP / IP通信的整个理论(www.tcpipguide.com) . 我的案例如何用网络,子网,掩码,路由等来描述?例如,主机程序将UDP数据报发送到192.168.10.2,端口1500.如何将此数据报发送到设备?做了什么决定,哪些网络组件参与数据报交付?

1 回答

  • 1

    网络掩码可以被认为是IP地址的位掩码 .

    如果 (address1 & netmask) == (address2 & netmask) 那么2个IP地址被认为是在同一个子网上 . (这个表达式可以用很多种方式写出......)

    网络掩码只是一种“虚拟”划分网络的方式:网络掩码不是ip标头的一部分,并且不在线路上传输 . 没有人知道网络上设备的网络掩码,除了设备本身 . 它在设备的tcp堆栈内部使用,以采取一些基本的路由决策 . 请注意,还有其他方法可以定义子网,这可能不涉及网络掩码,但可以实现相同的结果:将多个设备分组到“虚拟”网络中 .

    插入设备的路由器甚至可能对同一设备有不同的网络掩码定义:只要路由器正确路由数据包就没关系 . 网络掩码主要用于自动计算一些众所周知的地址:例如,用于udp广播数据包的广播地址是根据设备的IP地址及其网络掩码计算的 .

    in your specific case

    没有物理路由器,但您的计算机是路由器(它将数据包内部路由到不同的网络接口) . 您的计算机包含一个路由表,告诉特定数据包应该使用哪个传出接口(在Windows上,尝试 route print ,在linux上,以root用户身份,尝试 route ) .

    通常,路由表被设置为使得分组在与目标设备在同一子网上的接口上熄灭 . 计算机在每个接口上使用上述逻辑表达式来确定目标是否与此接口位于同一子网上 . 如果表达式为真,则数据包熄灭 . 每个条目都有一个参数(称为度量),允许选择看似最佳的接口,以防多个路由可能 .

    您应该注意路由表是动态的:它可以手动修改,以添加特定路由(例如,如果您知道某个特定设备可通过接口访问,但该设备具有与此接口ip无关的IP地址地址/网络掩码) . 还有一些协议(arp,dhcp ...)在本地网络中使用,用于广播路由信息,系统会自动处理这些信息以修改路由表 .

相关问题