how it works

first of all,瞭解一下TCP/IP協議族 TCP/IP協議族wiki

web

端口:瀏覽器

軟件領域的端口通常指網絡中面向鏈接服務(TCP)和無鏈接服務(UDP)的通訊協議端口,是一種抽象的軟件結構,
包括一些數據結構和I/O(基本輸入輸出)緩衝區。

按端口號可分爲3大類:
(1)公認端口(Well Known Ports):從0到1023,它們緊密綁定(binding)於一些服務。一般這
些端口的通信 明確代表了某種服務的協議。例如:80端口實際上老是HTTP通信。
(2)註冊端口(Registered Ports):從1024到49151。它們鬆散地綁定於一些服務。也就是說有
許多服務綁定於 這些端口,這些端口一樣用於許多其它目的。例如:許多系統處理動態端口從1024左右
開始。
(3)動態和/或私有端口(Dynamic and/or Private Ports):從49152到65535。理論上,不該爲
服務分配這些端 口。實際上,機器一般從1024起分配動態端口。但也有例外:SUN的RPC端口從32768開
始。


服務器:啓動服務,通常服務都是經過某個應用層協議(TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet,創建在TCP或UDP之上,詳情參考本貼最上面到wiki連接)+某個端口來傳輸數據(經過bind方法來創建某個應用具體使用的傳輸協議和端口),服務啓動以後就會經過這個監聽這個端口來判斷是否須要創建鏈接。

客戶端:主動發送鏈接請求,主要須要包含(主機地址+傳輸協議+端口)等信息,表示要和某主機地址上的某端口用某傳輸協議創建鏈接。

服務器

以在瀏覽器輸入http://localhost:8000/舉個例子說明:網絡

用戶在瀏覽器輸入以後點擊肯定,瀏覽器解析url,向localhost對應的主機地址(通常會經過DNS解析到對應到IP地址)發送socket請求,要求和localhost上的8000端口創建http鏈接,localhost上的web應用從服務啓動開始便會一直監聽8000端口,當收到外部對8000端口發送的socket請求的時候,啓動socket鏈接,創建通訊。

服務器監聽到8000端口傳來的IO流,根據http協議解析數據流,並轉到服務端對應的處理模塊,處理完成再經過reponse對象等傳回客戶端,造成客戶能看到的頁面
數據結構

相關文章
相關標籤/搜索