Browers是如何在浩瀚的互聯網上找到我們需要的資源呢?
以下將記錄這個過程,這個過程是web編程需要需要熟知的。
用戶打開浏覽器輸入目標地址(比如http://www.sina.com),那麼接下來發生什麼事情呢?
1,浏覽器首先會查詢本機的系統,獲取主機名對應的IP地址。
2,若本機查詢不到相應的IP地址,則會發起DNS請求,獲取主機名對應的IP地址。
3,使用查詢到的IP地址,直接訪問目標服務器。
首先說說訪問目標地址的兩種方式:
第一,使用目標IP地址訪問。比如你可以直接在浏覽器中輸入新浪的IP地址:218.30.13.36而直接訪問它的主機。
第二,由於IP地址都是一堆數字不方便人記憶,於是有了域名這種字符型標識。DNS服務器則完成域名解析的工作,它將你訪問的目標域名轉換成相應的IP地址。
因此若你的電腦上不了網未必就一定是目標主機的問題了哦!還有可能是DNS服務器的故障。所以這種情況下,你能熟知幾個常用的IP地址,那麼在命令行使用ping一下就能知道問題是否是出現在DNS服務器上了。比較常用的IP有:百度180.76.76.76 谷歌8.8.8.8或8.8.4.4阿裡雲223.5.5.5或223.6.6。
為什麼我們不能自己建立一個www.sina.com或者www.google.com這樣的網站而讓全世界的人都訪問我這個網站呢(顯然sina和google肯定不會讓你這麼干)?由以上幾步可以看出,因為域名系統的存在,使得我們可以訪問目標域名(www.sina.com)的時候,DNS服務器總是解析對應的IP地址(218.30.13.36)。所以若要別人都訪問你的“新浪”,則需要將DNS的服務器路徑指向你本機所在的IP地址,這顯然得新浪願意才行。
那麼,假如我為了學習一定要這樣做呢?恩!確實也可以,可是此“新浪”非彼“新浪”。
由步驟1可知道,浏覽器在發送DNS請求的之前,需要訪問本機的系統查看一下是否存在對應的主機IP。那麼我們是否可以修改這個配置文件呢?答案是肯定的。
windows下打開文件:c:windows\system32\drivers\etc\hosts
linux下打開文件:/etc/hosts
加入你需要修改的IP地址,使目標的IP指向你本機的IP,則它就能實現訪問你本機上的資源了。
如加入:127.0.1.1 (假如這是我本機的IP) www.sina.com
127.0.1.1 www.google.com
這樣你和你的朋友都可以訪問你主機上這個sina了,顯然由以上的討論可知,你朋友只能通過你的IP地址訪問該sina。
4,浏覽器發送HTTP請求。
HTTP請求由三部分組成,分別是:請求行、消息報頭、請求正文
有興趣的朋友可以在這裡查看相關的資料。
5, 從請求信息中獲得客戶機想訪問的主機名。
6,從請求信息中獲取客戶機想要訪問的web應用。(web應用程序指提供浏覽器訪問的程序,簡稱web應用)
7,從請求信息中獲取客戶機要訪問的web資源。(web資源,即各種文件,圖片,視頻,文本等)
8,讀取相應的主機下的web應用,web資源。
9,用讀取到的web資源數據,創建一個HTTP響應。
10,服務器回送HTTP響應。
HTTP響應也是由三個部分組成,分別是:狀態行、消息報頭、響應正文
有興趣的朋友可以在這裡查看相關的資料。
11,客戶浏覽器解析回送的資源,並顯示結果。
TCP (Transmission Control Protocol):TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路復用。通過面向連接、端到端和可靠的數據包發 送。通俗說,它是事先為所發送的數據開辟出連接好的通道,然後再進行數據發送;
TCP支持的應用協議主要有:Telnet(遠程終端協議)、FTP(File Transfer Protocol文件傳輸協議)、SMTP(Simple Mail Transfer Protocol簡單郵件傳輸協議)等;
UDP(User Datagram Protocol):UDP則不為IP提供可靠性、流控或差錯恢復功能。一般來說,TCP對應 的是可靠性要求高的應用,而UDP對應的則是可靠性要求低、傳輸經濟的應用。
UDP支持的應用層協議主要有:NFS(網絡文件系統)、SNMP(簡單網絡管理協議)、DNS(主域名稱系統)、TFTP(通用文件傳輸協議)等。
TCP和UDP協議屬於傳輸層協議。
常見互聯網TCP/UDP協議其端口號:
FTP 控制 : 21端口 說明:ftp服務器所開放的端口,用於上傳下載。最常見的攻擊者用於尋找打開anonymous的ftp服務器方法。這些服務器帶有可讀寫的目錄。
SSH 服務 : 22端口 說明:pcAnywhere建立的tcp和這一端口的連接可能是為了尋找ssh。這一服務有許多弱電,如果配置成特定的模式,許多使用 RSAREF庫的版本就會有不少漏洞存在。
Telnet 服務: 23端口 說明:遠程登陸,入侵者在搜索遠程登陸UNIX的服務。大多數情況下掃描這一端口是為了找到機器運行的操作系統。還有使用其他技術,入侵者會找到密碼。
SMTP 服務 : 25端口 說明:SMTP服務器所開放的端口,用於發送郵件。入侵者尋找SMTP服務器是為了傳遞他們的SPAM。入侵者的賬號被關閉,他們需要連接到高帶寬的EMAIL服務器上,將簡單的信息傳遞到不同的地址。
DNS 服務 : 53端口 說明: 為DNS(Domain Name Server,域名服務器)服務器所開放,主要用於域名解析,DNS服務在NT系統中使用的最為廣泛。入侵者可能是試圖進行區域傳遞(TCP),欺騙DNS(udp)或隱藏其它的通信。因此防火牆常常過濾或記錄此端口。
HTTP 服務 : 80端口 說明:用於網頁浏覽。木馬Executor開放此端口
POP3服務: 110端口 說明: 郵件協議3的服務開放端口,POP2、POP3都是主要用於接收郵件的。 它用於接收郵件,客戶端訪問服務器的郵件服務。 pop3服務有許多公認的弱點。關於用戶名和密碼交換緩存溢出的溢出弱點至少有20個,這意味者入侵者可以在真正登陸前進入系統。成功登陸後還有其它緩沖區溢出錯誤。
IMAP服務: 143端口 說明:是用於“Internet Message Access Protocol”v2(Internet消息訪問協議,簡稱IMAP),和pop3問題一樣多。許多IMAP服務器存在有緩沖區溢出漏洞。一種LINUX蠕蟲admvorm會通過這個端口繁殖,因此許多這個端口的掃描來自不知情的已經被感染的用戶。
HTTPS 服務: 443端口 說明:網頁浏覽端口,能提供加密和通過安全端口傳輸的另一種HTTP
終端服務: 3389端口 說明:windows2000開放此端口。
詳細請參考:TCP/UDP常用端口列表。