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

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

如何在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