netbios 广播

Broadcast Address(广播地址)是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。 

广播地址主要有两类

  广播地址应用于网络内的所有主机
  1)受限广播
  它不被路由但会被送到相同物理网络段上的所有主机
  IP地址网络字段主机字全为1就是地址255.255.255.255
  2)直接广播
  网络广播会被路由,并会发送到专门网络上的每台主机

  IP地址的网络字段定义这个网络,主机字通常全为1,如 192.168.10.255 

四种I P广播地址

  受限的广播地址
  受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。
  指向网络的广播
  指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。
  指向子网的广播
  指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码。例如,如果路由器收到发往128.1.2.255的数据报,当B类网络128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但如果该子网的掩码为255.255.254.0,该地址就不是指向子网的广播地址。
  指向所有子网的广播

  指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1。例如,如果目的子网掩码为255.255.255.0,那么IP地址128.1.255.255是一个指向所有子网的广播地址。然而,如果网络没有划分子网,这就是一个指向网络的广播。 

广播和广播地址

  1. TCP/IP协议栈中, 传输层只有UDP可以广播.
  2. 只能对同一子网内部广播, 广播数据包不经过路由器.
  3. UDP的广播地址为255.255.255.255
  4. 在winsock实现中, 有一个选项对应是否允许广播.
  必须调用setsockopt打开该选项.
  5. 打开后, 用sendto向255.255.255.255发送的数据包全部广播.

传统netbios 名字解析倚赖广播包

netbios over TCP/IP 

  • NetBIOS over TCP/IP (NetBT) sends the NetBIOS protocol over the Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP).

NetBT traffic includes the following:

  • NetBIOS session traffic over TCP port 139

  • NetBIOS name management traffic over UDP port 137

  • NetBIOS datagram traffic over UDP port 138

 Bb727013.ch11xx01(en-us,TechNet.10).gif

NetBT is not required for computers running Windows 2000, Windows XP, or Windows Server 2003 unless you use NetBIOS applications on your network, such as the Computer Browser service. The Computer Browser service maintains the list of computers in the Microsoft Windows Networkwindow of My Network Places. Unlike versions of Windows prior to Windows 2000, file and printer sharing with Windows 2000, Windows XP, or Windows Server 2003 can operate without the use of NetBT. 
Limitations of Broadcasts

Routers do not forward broadcasts. Broadcast frames remain confined to the local subnet. Therefore, NetBIOS name resolution using broadcasts can only resolve names of NetBIOS processes running on nodes attached to the local subnet.

You can enable NetBT broadcast forwarding (UDP ports 137 and 138) on some routers. However, the practice of enabling NetBT broadcast forwarding to simplify NetBIOS name resolution is highly discouraged.

 (广播udp137就可以了)

我们一定知道hosts这个文件,他的功能就像DNS,只不过优先级相对要高,但同一个文件夹里,还有一个lmhosts.sam文件,实际上这两个文件都是做静态解析的,但是有什么区别呢?

    lmhost和host是静态解析名字的文件,dns和wins是动态解析名字的服务。lmhost基于nebios,netbios支持最长16和字符,不能带点(".");host基于hostname,最长支持255各字符,可以带点。 在95、98里面是用lmhost的,2k及其以后的系统里面,这两个文件都有。

    解析过程如下:

host解析:local host name --->hosts file--->dns server--->netbios name cache--->wins server--->broadcast--->lmhost file

即:计算机在把名字解析为ip时,先找本地计算机名称,如果不是,找host文件,找不到,找dns server,如果找不到,找netbios缓存,找不到,找wins server解析,还找不到,发广播,还找不到,才找lmhost,还找不到........,那就找不到了。

netbios解析:netbios name cache-->wins server-->broadcast-->lmhost file-->host file--->dns server 

NetBIOS名称解释方法:

  1.检查NetBIOS名称缓存(NetBIOS Name Cache)
  如果计算机与其它计算机已经通讯过,则对方的计算机名与IP地址会被保存到本机的NetBIOS缓存中,通过缓存可以快速找到对方IP地址,每一条缓存的有效期是10分钟,我们可以通过命令:Nbtstat -c 来查看NetBIOS名称缓存中的数据。

  2.广播(Local Broadcast)
  计算机利用发送广播消息的方式来查找对方的IP地址,拥有此计算机名的计算机收到广播消息后,就会将它的IP地址告诉发送广播消息的计算机。

  3.直接向WINS(Windows Internet Name Server)服务器查询;
  WINS客户端会将其计算机名与IP地址注册到WINS服务器,因此WINS客户端可以过能WINS服务器来得知其它WINS客户端的IP地址。 
原文地址:https://www.cnblogs.com/jjkv3/p/2459427.html