本文共 2126 字,大约阅读时间需要 7 分钟。
在DNS 服务器不可用时,DNS 客户端计算机可以使用本地链路名称解析 (LLMNR—Link-Local Multicast Name Resolution)(也称为多播 DNS 或 mDNS)来解析本地网段上的名称。例如,如果出现故障,从网络上的所有 DNS 服务器切断了,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。
LLMNR(本地链路组播名称解析)在DNS服务器不可用时,DNS 客户端计算机可以使用本地链路组播名称解析,通过UDP发送到组播地址224.0.0.252:5355,来解析本地网段上的名称,使用的也是普通DNS的数据包格式。类似的另一种协议是mDNS(组播DNS),通过UDP协议发送到组播地址224.0.0.251:5353,用于家庭局域网等小型网络。
LLMNR为使用IPv4、IPv6或者同时使用这两种地址的设备提供了点对点名称解析服务,可以让同一子网中的IPv4和IPv6设备不需要WINS或DNS服务器就可以解析对方的名称。
例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络方面也非常有用。除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络(例如,机场候机区域)方面也非常有用。
#include#include #include #include const char* ssid = "replace_me";const char* password = "replace_me";ESP8266WebServer web_server(80);void handle_http_not_found() { web_server.send(404, "text/plain", "Not Found");}void handle_http_root() { web_server.send(200, "text/plain", "It works!");}void setup(void) { Serial.begin(115200); // Connect to WiFi network WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // Start LLMNR responder LLMNR.begin("esp8266"); Serial.println("LLMNR responder started"); // Start HTTP server web_server.onNotFound(handle_http_not_found); web_server.on("/", handle_http_root); web_server.begin(); Serial.println("HTTP server started");}void loop(void) { web_server.handleClient();}
本文还在持续更新中,后续内容还敬请关注
转载地址:http://rmeoa.baihongyu.com/