吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么DNS全球只有13臺根服務器,中國卻沒有自己的?

jf_TEuU2tls ? 來源:浩道linux ? 2023-07-11 10:58 ? 次閱讀

今天浩道跟大家分享一個知識掃盲點,即為什么DNS全球只有 13 臺根服務器,中國卻沒有自己的?

網上很多人都說 DNS 根服務器只有 13 臺,中國一臺也沒有。在網絡世界,中國被美國卡住了脖子。那 DNS 根服務器真的只有 13 臺嗎?如果是,那原因又是什么?今天就給大家說道說道。

DNS 基本概念

在回答這個問題之前,我們需要先回顧一些基本概念。DNS 是一種分層結構,這種層級就體現在域名的『點』里。以我的域名為例,TAOSHU.IN它的完整域名其實是TAOSHU.IN.。注意最后有一個點。它分三個層級,結結構為.?IN?TAOSHU

DNS 又是分布式系統,每一層級都有自己的解析服務器。.是第一層級,它的解析服務器就是根服務器。第二層級是對應我們常說的COM/NET等頂級域名 TLD,而我用的IN是印度的國家域名,跟中國的CN一樣,它們都是 CCTLD,也就是所謂的國家頂級域名。TAOSHU就是普通的一級域名。每個域名都可以自行設置子域名,不受上級域名限制。

域名解析過程也是分布式的。還是以TAOSHU.IN為例。客戶端先找到根服務器的地址,并其查詢IN的解析服務器。再向IN的服務器查詢TAOSHU.IN的服務器。最后向TAOSHU.IN的服務器查詢具體的解析記錄,比如 A 記錄等。

當前根服務器

從上面的過程可知,所有的 DNS 查詢都從根服務器開始。所以根服務器是整個 DNS 系統的核心。如果根服務器出現故障,那所有 DNS 查詢都會失敗!為了避免出現這種問題,人們設置了多個 DNS 根服務器。發展到現在,互聯網社區累計設置了 13 臺,它們分別是:

主機名 IP 地址 運營機構 國家
a.root-servers.net 198.41.0.4, 2001ba3e:30 Verisign, Inc. 美國
b.root-servers.net 199.9.14.201, 2001200::b University of Southern California, Information Sciences Institute 美國
c.root-servers.net 192.33.4.12, 20012::c Cogent Communications 美國
d.root-servers.net 199.7.91.13, 20012d::d University of Maryland 美國
e.root-servers.net 192.203.230.10, 2001a8::e NASA (Ames Research Center) 美國
f.root-servers.net 192.5.5.241, 20012f::f Internet Systems Consortium, Inc. 美國
g.root-servers.net 192.112.36.4, 200112::d0d US Department of Defense (NIC) 美國
h.root-servers.net 198.97.190.53, 20011::53 US Army (Research Lab) 美國
i.root-servers.net 192.36.148.17, 2001:53 Netnod 瑞典
j.root-servers.net 192.58.128.30, 2001c27:30 Verisign, Inc. 美國
k.root-servers.net 193.0.14.129, 2001:1 RIPE NCC 荷蘭
l.root-servers.net 199.7.83.42, 20019f::42 ICANN 國際
m.root-servers.net 202.12.27.33, 2001:35 WIDE Project 日本

資料來源:IANA1 資料截止時間:2023年06月06日

在 1984 年,Jon Postel 和 Paul Mockapetris 在南加州大學設立了世界上第一臺根服務器2。到了 1990 年,根服務器的數量擴展到了 7 臺,分屬不同的組織給護,但全都在美國。到了 1991 年,KTH 在瑞典設立一臺根服務器。這是首次在美國之外部署根服務器。此后一直有舊的根服務器退役,新的服務器入役。到了 1995 年,根服務器已經擴展到 9 臺。這個時候就遇到了技術瓶頸,無法添加新的根服務器了。

到底是什么技術瓶頸呢?這就得說說 DNS 的底層實現細節了。

Priming 查詢

前面說所有的 DNS 查詢都從根服務器開始。那客戶端怎么知道當前有哪些根服務器呢?沒什么好辦法,就是在各自的代碼中寫死!對,是硬編碼。但我們前面也說了,在役的根服務器并非一成不變,寫死的話新添加的服務怎么生效呢?

這就用到了所謂的 Priming Queries3。簡單來說,所有 DNS 解析客戶端都隨軟件附帶一個列表文件,里面有當前所有根服務器的信息,包括域名、IP地址等信息。這個文件叫 Root Hints,可以從 IANA 官網4下載。但考慮到根服務器的列表可能會變,所以客戶端需要定期從已知的根服務器查詢當前最新的服務器列表,用的也是 DNS 協議,這類請求叫作 Priming 查詢。

對于客戶端來說,它先從 Root Hints 中根據某種規則5選出一臺根服務器,然后向它查詢最新的根服務器列表,并本機緩存一段時間,過期之前都以該列表為準。

因為 Priming 查詢也是用 DNS 協議,自然也走 UDP 傳輸。互聯網早期 IP 網絡的最大傳輸單元長度(MTU)也就五百多字節,所以 DNS 回復信息的最大長度同樣不能太長。所以 DNS 協議規定回復信息不能超過 512 字節。這就是添加根服務器遇到的技術瓶頸。

其實解決這個問題很容易,完全可以要求客戶端使用 TCP 連接傳輸 Priming 查詢結果嘛。可惜當時沒有采用這種方案。不過,如果是我,也不會選 TCP 方案。因為所有 DNS 查詢都走 UDP 協議,簡單而統一。雖然 DNS 也支持使用 TCP,但讓 Priming 查詢單獨走 TCP 明顯會讓系統變得很復雜。

社區最終決定想辦法壓縮查詢結果長度。

報文結構與編碼

DNS 報文結構如下,分為五個部分6。

+---------------------+
|Header|
+---------------------+
|Question|thequestionforthenameserver
+---------------------+
|Answer|RRsansweringthequestion
+---------------------+
|Authority|RRspointingtowardanauthority
+---------------------+
|Additional|RRsholdingadditionalinformation
+---------------------+

Header

Header 為報文頭信息,長度固定為 12 字節,結構如下:

0123456789012345
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|ID|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR|Opcode|AA|TC|RD|RA|Z|RCODE|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QDCOUNT|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|ANCOUNT|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|NSCOUNT|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|ARCOUNT|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

Header 中跟本文內內直接相關的就是 QDCOUNT/ANCOUNT/NSCOUNT/ARCOUNT 這四個字段,分別表示后續 Question/Answer/Authority/Additional 段的數量。

Question

Question 段保存查詢請求信息,通長只有一個。它分成三個部分。后兩個部分表示查詢類型和網絡類型。含義不重要,重要的是長度固定為 4 字節。

0123456789012345
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
||
/QNAME/
//
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QTYPE|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QCLASS|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

第一部分 QNAME 長度可變,保存查詢的域名。但存儲的方式有點特別。以域名A.ROOT-SERVERS.NET.為例,它會分成三部分AROOT-SERVERSNET。每一部分稱作一個標簽(Label), QNAME 字段只保存標簽,不保存.。每個標簽用第一個字節記錄當前標簽長度,后面跟著標簽內容。最后用一個長度為零的標簽表示結尾。所以完整的 QNAME 字段編碼為:

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
20|1|A|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
22|12|R|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
24|O|O|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
26|T|-|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
28|S|E|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
30|R|V|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
32|E|R|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
34|S|3|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
36|N|E|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
38|T|0|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

長度為 20 字節。特別的,對于根域名.,它的 QNAME 編碼是:

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
20|0||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

長度為 1 字節。

Answer

Answer 段是服務器返回的響應結果。數量為一條到多條不等。每一條稱為一個 RR,全稱是 Resource Record。其結構如下:

0123456789012345
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
||
//
/NAME/
||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|TYPE|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|CLASS|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|TTL|
||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|RDLENGTH|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
/RDATA/
//
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

RR 跟前面的 Question 相比多了 TTL/RDLENGTH/RDATA 三個字段。TTL 表示有效時長, RDLENGTH 表示后續 RDATA 的長度,RDATA 保存實際的響應數據。根據 TYPE 和 CLASS 的不同,RDATA 內容也各不相同。在 Priming 查詢中,RDATA 保存各根服務器的域名,編碼跟前 Question 中的 QNAME 一樣。

如果服務器返回如下一條 RR 數據:

.518400INNSa.root-servers.net.

那么 RR 的總長度是 1+2+2+4+2+20=31 字節。

Authority

Authority 段用來返回待查詢域名的權威服務器信息。比如我們嘗試向根服務器直接查詢TAOSHU.INA記錄,根服務器就會在 Authority 段返回IN域名的解析服器。因為根服務器并不保存TAOSHU.IN的域名信息。不過在本文中,Priming 查詢的權威服務器就是根服務器,所以此段長度為零。

最后的 Additional 段用來返回一些附加信息。Answer 中只有域名信息。我們希望直接返回 IP 地址,所以需要用到 Additional 段。Additional 中也是一條一條的 PR,計算方式跟 Answer 的一模一樣。

因為 Priming 查詢會返回所有的根服務器域名及其對應的 IP 地址7,所以根服務器數量越多,返回的數據就越長。但 DNS 協議規定最長只能是 512 字節,這就產生了瓶頸。

到了 1995 年,已經開通了 9 臺根服務器,Priming 查詢結果快要超過 512 字節了。社區開始著手解決這個問題。方案是標簽壓縮。

標簽壓縮

壓縮辦法也很簡單,就是在 NAME 中引入指針結構

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|11|OFFSET|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

DNS 還有一個規定,域名的長度不能超過 63 字節。NAME 中第一個字節表示長度,最大值就是 63,二進制表示為00111111,可見高兩位是零。于是大家約定高兩位設為11的時候,后面的 14 位就表示從報文 Header 開始的偏移量。這樣一來,如果多個 RR 的域名中有相同的部分,就不需要重復傳輸,減少響應長度。

舉個例子,比如要同時返回A.ROOT-SERVERS.NETB.ROOT-SERVERS.NET兩個域名,顯然它們有共同的后綴ROOT-SERVERS.NET。假設A.ROOT-SERVERS.NET的偏移量為 20,那么可以表示為:

A.ROOT-SERVERS.NET
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
20|1|A|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
22|12|R|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
24|O|O|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
26|T|-|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
28|S|E|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
30|R|V|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
32|E|R|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
34|S|3|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
36|N|E|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
38|T|0|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
B.ROOT-SERVERS.NET
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
40|1|B|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
44|11|20|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
46|0||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

利用標簽壓縮技術,域名B.ROOT-SERVERS.NET只需要占用 5 個字節,比A.ROOT-SERVERS.NET節省了 15 個字節。

根服務器更名

要想使用壓縮,前提是所有域名有重復的部分。但之前的根服務器域名不相同,這就得改名。到了 1995 年,社區統一的域名為根服務器重新編組并部署標簽壓縮功能。

舊域名 新域名 運營機構
NS.INTERNIC.NET A.ROOT-SERVERS.NET InterNIC (operated by NSI)
NS1.ISI.EDU B.ROOT-SERVERS.NET Information Sciences Institute, USC
C.PSI.NET C.ROOT-SERVERS.NET PSINet
TERP.UMD.EDU D.ROOT-SERVERS.NET University of Maryland
NS.NASA.GOV E.ROOT-SERVERS.NET NASA Ames Research Center
NS.ISC.ORG F.ROOT-SERVERS.NET Internet Software Consortium
NS.NIC.DDN.MIL G.ROOT-SERVERS.NET GSI (operated by NSI)
AOS.ARL.ARMY .MIL H.ROOT-SERVERS.NET U.S. Army Research Lab
NIC.NORDU.NET I.ROOT-SERVERS.NET NORDUnet

上線之后,為新的根服務器留出了空間。于是在 1997 年,又上線了 J/K/L/M 四臺根服務器。

這時候 Priming 查詢響應的返回值有多大呢?我們可以算一下:

  • Header 固定 12 字節
  • 第一個 PR 保存完整域名,31 字節
  • 另外 12 PR 保存壓縮后的域名,12*15 = 180 字節
  • 13 個 PR 保存 A 記錄,13 * 16 = 208 字節8
  • Question 段中 QTYPE 和 QCLASS 字段, 4 字節
  • Question 段中 QNAME 字段,1 字節

總共為 12+31+180+208+4+1=436 字節。剩余可用 512?436=76 字節。一組臺服務器需要額外占用 15+16=31 字節。理論上還可以再添加兩臺根服務器,也就是最多15臺。

如果只管根服務器功能,確實還可以添加。但是早期的根服務器同時也是COM/NET/ORG的解析服務器。客戶端可以向根服器發起針對特定COM域名的 Priming 查詢。因為響應結果需要包含查詢域名 QNAME,所以上面說的 76 字節中至少要保留 64 字節給 QNAME。這樣就只剩下 12 字節。所以就不能再添加新的根服務器了。

IPv6 與 Anycast

雖然理論上是不能再加新的根服務器了,但后來網絡不斷發展,UDP 報文早已不需要把長度限制到 512 字節。而且引入 IPv6 網絡后,Priming 查詢結果中還需要返回 AAAA 記錄, 512 個字節肯定不夠用。所以社區又設計了 EDNS09 來支持返回超過 512 字節的 DNS 響應。

理論上還是可以繼續添加新的根服務器。但為什么不加了呢?那是因為有了更先進的技術 Anycast,中文譯作任播。任播,可以簡單理解為允許不同網絡中的計算機共用一個 IP 地址,同時對外提供 DNS 查詢服務。互聯網會根據客戶端的位置將請求路由到就近的計算機。

Anycast 技術將原來的單臺服務器變成了一組多臺服務器。到了2002年,J根服務器首次部署 Anycast 功能。到現在為止,前面說的13臺根服務器嚴格來說是 13 個域名并且對應 13 對 IPv4 和 IPv6 地址。每對地址之后都通過 Anycast 部署了很多臺實例,總計有超過 1500 臺根服務器實例。這些實例又稱為根鏡像服務器

中國根服務器鏡像

雖說中國沒有自己的根服務器,但境內還是有不少根鏡像服務器:

編號 城市
A 廣州
D 香港 臺北
E 臺北
F 北京 重慶 杭州 高雄 南寧 臺北
I 北京 香港 沈陽 臺北
J 北京 香港 湖州 上海
K 北京 廣州 貴陽 臺北
L 北京 長沙 海口 上海 武漢 西寧 新北 鄭州
M 高雄

資料來源:https://root-servers.org 資料截止時間:2023年06月06日

大家不妨通過 Ping 命令測一下,上面的幾個根服務器的延遲都在 50ms 左右,一看就是在國內,不然不會這么快。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9304

    瀏覽量

    86066
  • DNS
    DNS
    +關注

    關注

    0

    文章

    219

    瀏覽量

    19927
  • 代碼
    +關注

    關注

    30

    文章

    4827

    瀏覽量

    69054

原文標題:為什么DNS全球只有13臺根服務器,中國卻沒有自己的?

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么時候使用DNS服務器合適?

    什么時候使用DNS服務器合適?在 ap 模式下使用 esp8266 作為強制門戶時,我只使用了 dns 服務器。還有其他情況需要使用dns
    發表于 02-24 08:22

    DNS服務器及其配置

    DNS服務器及其配置:DNS的作用將主機名字轉換成二進制IP地址。1.DNS被設計成為一個聯機分布數據庫系統。2.DNS采用客戶
    發表于 12-07 14:39 ?20次下載

    如何配置Win 2003的DNS服務器

    如何配置Win 2003的DNS服務器 概要   本文介紹了如何配置“域名系統”(DNS) 服務器,使其承載可從外
    發表于 01-29 11:35 ?658次閱讀

    服務器有哪13個_為什么沒有中國

    服務器主要用來管理互聯網的主目錄,全世界只有13(這13
    發表于 12-26 10:32 ?6.4w次閱讀
    <b class='flag-5'>根</b><b class='flag-5'>服務器</b>有哪<b class='flag-5'>13</b>個_為什么<b class='flag-5'>沒有</b><b class='flag-5'>中國</b>

    服務器關了會怎么樣_美國會關掉中國服務器

    服務器主要用來管理互聯網的主目錄。所有服務器均由美國政府授權的互聯網域名與號碼分配機構ICANN統一管理,負責全球互聯網域名
    發表于 12-26 10:56 ?1.5w次閱讀

    服務器的作用及地理分布

    服務器主要用來管理互聯網的主目錄,全世界只有13。1個為
    發表于 12-26 14:49 ?7.7w次閱讀

    DNS服務器基于BGP anycast技術的跨地域部署

    截止到2018年9月4日,已經部署的DNS服務器的數量達到了937,這些服務器廣泛地分布在
    的頭像 發表于 12-02 11:15 ?7008次閱讀
    <b class='flag-5'>DNS</b><b class='flag-5'>根</b><b class='flag-5'>服務器</b>基于BGP anycast技術的跨地域部署

    全球互聯網域名服務器能確保我們的網絡安全嗎

    全球互聯網域名服務器,就是咱們經常在網絡配置中看到dns服務器,目前全球總共有
    發表于 08-26 11:44 ?1729次閱讀

    了解DNS的工作原理,了解域名的管理機制

    而每一個DNSDNS報文中都要占用一定的字節數,比如的名稱、TTL、IP地址等。這樣,13
    的頭像 發表于 09-03 10:43 ?5005次閱讀

    中國有多少服務器,為何要設立服務器

    服務器作為基礎的網絡設備,在互聯網中扮演著不可或缺的角色,特別是服務器。很多人都知道全球服務器的數量不多,但是現在
    發表于 01-12 16:35 ?3.2w次閱讀

    DNS服務器DNS服務器地址是什么

    今日就來同大家分享什么是DNS服務器地址,DNS服務器地址怎么找,幫助大家更了解DNS服務器。首
    的頭像 發表于 03-30 15:57 ?9081次閱讀

    探討DNS服務器解析

    本地 DNS 服務器收到來自客戶端的 DNS 請求,它會在其緩存中查找 google.com 的 IP 地址。如果它可以找到對應的條目,它將直接將 IP 地址返回給客戶端。否則,本地 DNS
    的頭像 發表于 05-05 15:42 ?1577次閱讀

    DNS報文結構與編碼解析

    網上很多人都說 DNS 服務器只有 13 中國一臺
    的頭像 發表于 06-26 10:54 ?1892次閱讀

    恒訊科技分析:什么是服務器?有哪些特點?

    ,域名被分為不同級別,例如.com、.net、.org等就是頂級域名。服務器就是管理這些頂級域名的服務器。 那么服務器有哪些特點?以下是
    的頭像 發表于 07-24 17:40 ?2645次閱讀

    DNS服務器可能不可用什么意思

    與該域名相關聯的IP地址。DNS服務器將IP地址返回給計算機,然后計算機使用該IP地址與目標服務器建立連接。 DNS服務器不可用的原因 硬件
    的頭像 發表于 01-17 09:24 ?1w次閱讀
    菲律宾百家乐试玩| 百家乐官网破解软件真的有用吗| 潜江市| 澳门顶级赌场娱乐场| 上海二八杠分析仪| 赌博百家乐有技巧吗| 百家乐怎么押钱| 百家乐翻天超清| 大发888娱乐城 qq服务| 金凤凰平台| 百家乐官网注册就送| 网上百家乐官网赌场| 网上百家乐官网有哪些玩法| 星期8百家乐官网的玩法技巧和规则 | 百家乐发牌靴遥控| 全讯网abckkk.com| 上海博彩生物| 百家乐官网娱乐城7| BB百家乐官网HD| 爱赢百家乐官网的玩法技巧和规则| 百家乐输一压二| 百家乐与龙虎斗怎么玩| 新全讯网xb112| 明升网站| 百家乐官网最好打法与投注| 竞咪百家乐官网的玩法技巧和规则| 百家乐官网不锈钢| 百家乐博娱乐场| 猫游棋牌下载| 川宜百家乐官网分析软件| 华侨人百家乐官网的玩法技巧和规则| 百家乐赌法| 百家乐网站| 韩城市| 澳门百家乐官网赌技巧| 百家乐娱乐城注册| 大发888娱乐城高手| 百家乐官网斗牛稳赚| 钱隆百家乐官网大师| 博之道百家乐技巧| 捕鱼棋牌游戏|