wks是已知服務的dns記錄,屬于RR資源的一種,相對于A記錄和AAAA,并不常見
RFC1010是dns中關于wks響應數據的文檔。這個文檔主要有Protocol Numbers(協議號)和Port Assignments(端口分配表)組成。
在dns的客戶端查詢類型是wks的時候,在dns服務器的answer段,其中的protocol就是RFC1010中的Assigned Internet Protocol Numbers對應的數值;bits段就是端口號。
關于端口,這里指的是提供網絡服務的端口,這個網絡服務的網絡協議就是Protocol numbers列表中的協議。
在RFC1035中,關于wks的RDATA格式是這樣規定的:
WKS RDATA format
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ADDRESS
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| PROTOCOL |
| +--+--+--+--+--+--+--+--+ |
| |
/ <BIT MAP> /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
where:
ADDRESS An 32 bit Internet address
PROTOCOL An 8 bit IP protocol number
<BIT MAP> A variable length bit map. The bit map must be a multiple of 8 bits long.
The WKS record is used to describe the well known services supported by a particular protocol on a particular internet address. The PROTOCOL field specifies an IP protocol number, and the bit map has one bit per port of the specified protocol. The first bit corresponds to port 0, the second to port 1, etc. If the bit map does not include a bit for a protocol of interest, that bit is assumed zero. The appropriate values and mnemonics for ports and protocols are specified in [RFC-1010].
For example, if PROTOCOL=TCP (6), the 26th bit corresponds to TCP port 25 (SMTP). If this bit is set, a SMTP server should be listening on TCP port 25; if zero, SMTP service is not supported on the specified address.
The purpose of WKS RRs is to provide availability information for servers for TCP and UDP. If a server supports both TCP and UDP, or has multiple Internet addresses, then multiple WKS RRs are used.
WKS RRs cause no additional section processing.
In master files, both ports and protocols are expressed using mnemonics or decimal numbers.
BITMAP是多個8 bits;它的數值來源就是RFC1010中的端口分配表,例如st對應的端口是5,則表名,第五位是1,udp是11,表示第十一位是1,以此類推。端口分配表從0-255,也就是說最多有256位,32個8字節的char數組,第五位是1,則思0x01;udp則是第十一位是1,即0x00 0x20.