我想了解當我們在瀏覽器中輸入一些 URL 時發生的流程,以及如何使用 Linux 命令調試某些內容
答案1
[I] 想了解當我們在瀏覽器中輸入一些 URL 時發生的流程
請參閱範例
以及如何調試
最有用的工具可能是
tcpdump
。nslookup
或更現代的等價物host
和dig
.wget
或者curl
。閱讀他們的手冊頁以找出有用的選項,例如--server-response
,--debug
,--verbose
,--no-dns-cache
不過,您需要先了解本機名稱解析,因為在 DNS 之前可能會使用一些名稱服務(例如本機主機文件,以及在一些罕見的設定中、其他網路服務,例如 NBNS、YP 等)。我會從閱讀開始man resolv.conf
答案2
Linux 系統附帶了許多系統函式庫,包括sys/sockets.h
C 程式的實現,它實現了伯克利套接字 API和POSIX標準。 POSIX 規範包括以下定義:方法呼叫getaddrinfo()
它將主機的 IP 位址傳回給需要它的程式。每個程式運行時(例如Python,珀爾,php等)實作自己的接口,透過它們調用取得地址資訊()但大多數實際上使用核心的方法來實際處理 DNS 請求。
套接字連接涉及許多方法調用,包括socket()、bind()、connect()等。這裡關於如何協調這些呼叫以建立網路連接。
客戶端 DNS 解析故障的解決僅涉及伺服器和快取。伺服器將用它知道的目的地地址進行回應,但如果由於某種原因(地理位置、黑名單等)它不是您想要的地址,您可以將伺服器更改為具有您想要的地址的伺服器。如果您使用所需位址連接到伺服器,但仍會得到錯誤結果,則可能是由主機上或路由器或快取代理上游的快取回應所引起的。