LLMNR协议、MDNS协议、NBNS协议

2024-05-02 03:28
文章标签 协议 mdns llmnr nbns

本文主要是介绍LLMNR协议、MDNS协议、NBNS协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LLMNR协议

LLMNR定义

LLMNR全称Link-Local Multicast Name Resolution

LLMNR协议是一种用于在本地网络上解析主机名的协议。它允许在没有本地DNS服务器的情况下进行名称解析,通常用于IPv6环境,但也可以在IPv4环境中使用。LLMNR协议的提出,主要是为了弥补IPv6环境下的局域网主机名解析的不足。

在实际应用中,当Windows主机在局域网中需要解析主机名时,会先使用LLMNR协议发送解析请求。如果有其他主机知道所需的名称,它们可以回复一个LLMNR响应,提供相应的IP地址。这样,即使在没有配置DNS服务器的情况下,依然可以实现主机名的解析,提高了局域网中主机名解析的可用性和速度。

此外,LLMNR协议使用组播地址和UDP协议,允许客户端之间进行通信,而无需在每个网络节点之间建立传统的服务器/客户端模型。这使得LLMNR成为一种轻量级的协议,传输速度快,并可以减少潜在的网络拥塞问题。

LLMNR工作过程

当主机需要解析本地主机名时,它会首先在自己的内部名称缓存中查询该名称。如果在缓存中没有找到该名称,主机将开始执行后续的查询步骤。

如果在缓存中没有找到所需的名称,主机会向自己配置的主DNS服务器发送查询请求。如果主机没有收到主DNS服务器的回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。

如果主机没有配置DNS服务器,或者如果在连接DNS服务器时没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR协议。

当主机决定使用LLMNR协议时,它会通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址。这个查询会被限制在本地子网(也就是所谓的链路局部)内

链路局部范围内每台支持LLMNR协议,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。

如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。

MDNS协议

MDNS定义

MDNS全称Multicast DNS

MDNS协议是一种在局域网内实现设备和服务自动发现的协议。具体来说,它允许设备在无需依赖中央服务器或配置文件的情况下,通过组播地址发送和接收DNS查询和响应,从而发现局域网中的其他设备和服务。MDNS协议基于DNS(协议,但使用组播地址来进行通信,因此能够在局域网中快速且高效地实现服务发现。

当设备启动时,它会发送一个MDNS查询,询问局域网中是否有其他设备或服务可用。如果其他设备知道所需的名称,它们会回复一个MDNS响应,提供相应的IP地址。通过这种方式,设备可以在没有传统DNS服务器的情况下,通过其名称来互相发现和访问彼此。

MDNS协议通常基于UDP协议,使用的端口号是5353。它遵从DNS协议,使用现有的DNS信息结构、名语法和资源记录类型,但没有指定新的操作代码或响应代码。MDNS协议在局域网中广泛应用,如物联网设备和app之间的通信,可以实现局域网设备的快速发现和通信。

MDNS工作过程

设备启动和宣告:当一个新的设备连接到局域网并启动mDNS服务时,它会向局域网内的所有主机发送一个宣告(Announcement)消息。这个消息包含设备的主机名、IP地址和其他标识信息。

缓存和发现:其他设备收到这个宣告消息后,会将发送设备的信息存储在本地的mDNS缓存中。这样,其他设备就可以通过查询mDNS缓存来发现其他设备的存在。

查询:当一个设备需要解析一个主机名或查找某个服务时,它会发送一个mDNS查询消息(称为“Query”)。这个消息包含要解析的域名或服务的类型。

响应:其他设备收到查询消息后,会检查本地的mDNS缓存。如果有匹配的域名或服务,设备会发送一个mDNS响应消息(称为“Response”),其中包含与查询相关的IP地址、服务信息或其他数据。

解析和使用:发送查询消息的设备收到响应后,会解析其中的数据,如IP地址或服务信息,并将其存储在本地的DNS缓存中。这样,设备就可以使用这些信息来与其他设备或服务进行通信。

NBNS协议

NBNS定义

NBNS全称NetBIOS Name Service Protocol

是一种用于在局域网中解析计算机名和IP地址对应关系的网络协议。它允许计算机通过名称查找其他计算机的IP地址,从而实现网络通信。

当一个计算机在局域网上启动时,它会向网络发送一个名字注册请求,该请求会被广播到整个局域网上。其他计算机可以通过NBNS协议来查询这个计算机的名称和IP地址对应关系。NBNS协议是基于UDP协议的,使用端口号137。

需要注意的是,NBNS协议主要用于早期的Windows系统,现在已经被更先进的协议如DNS(域名系统)所取代。但在某些特定的网络环境中,如某些企业网络或旧的Windows系统环境中,NBNS协议仍然被使用。

NBNS工作过程

名字注册:当一个计算机在局域网上启动时,它会向网络发送一个名字注册请求。这个请求包含了计算机名和IP地址的对应关系。

缓存保存:网络上的其他计算机在收到这个注册请求后,会将该对应关系保存在本地的缓存中。

名字查询:当一个计算机需要解析另一个计算机的IP地址时,它会发送一个名字查询请求。这个请求会被广播到整个局域网上。

响应:其他计算机在收到这个查询请求后,会检查自己的缓存。如果缓存中有这个对应关系,就直接回复一个查询应答,提供所需的IP地址。

转发:如果本地计算机没有找到对应关系,它会将查询请求转发给网络中的其他计算机,直到找到对应的计算机或确定无法找到为止。

需要注意的是,NBNS协议中的消息是明文传输的,没有加密机制,因此在使用时需要注意安全风险。例如,攻击者可以发送虚假的NBNS响应,欺骗其他设备将数据发送到错误的地址。


不嫌弃的点点关注,点点赞 ଘ(੭ˊᵕˋ)੭* ੈ✩‧

这篇关于LLMNR协议、MDNS协议、NBNS协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953290

相关文章

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备