网络运行原理
一、狹義角度
?
客戶端:貼近用戶的應用程序例如web瀏覽器、電子郵件客戶端、手機app
服務器:遠程計算機上運行的應用程序,客戶端可以在需要時通過互聯網于服務端進行通信
當你的電腦接入到互聯網的時候互聯網會分配一個IP地址給你,某個服務器也接入到互聯網也會給服務器分配一個IP地址。此時你的電腦可以和服務器進行通訊。當你的電腦發送消息給xxx服務器要獲取index.html的內容時,消息會被轉化為電子信號通過電纜發送給xxx服務器。在服務端將電子信號轉化為計算機可以使用的文本數據,這一切是如何實現的呢,主要是通過TCP/IP協議族。協議是一組規則,用于指定應如何通過網絡來相互通信,TCP/IP協議一共分為4層分別是:應用層、TCP傳輸控制層、IP網絡層、鏈路層網絡協議通過定義明確接口來協同工作每個層都可以使用下面各層的功能,而不必擔心各層是如何實現的。
應用層:提供特定于應用程序的協議,比如負責瀏覽器和網絡服務器相互通信的HTTP協議,負責文檔傳輸的FTP協議,負責電子右鍵客戶端檢索的IMAP協議
傳輸控制層:發送數據包到計算機上使用特定端口的應用程序
網絡層:使用IP地址將數據包發送到特定的計算機
鏈路層:將二進制數據包與網絡信號相互之間轉換
使用應用層的HTTP協議請求獲取html文本這時需要發送一個請求消息消息在發送前會被分解為許多片段我們稱之為數據包數據包通過應用層進入到TCP層后每個數據包會被分配一個端口號,端口號用來確定目標計算機哪一個應用序要接受使用該數據包。TCP是一種面向連接的可靠字節流服務協議。TCP需要經過三次握手建立連接后才能交換數據,每個收到的數據包都會向發送方發送ack確認,已確保發送成功。數據包進入到IP層后,每個數據包將會賦予目標計算機一個IP地址。IP是不可靠的無連接協議,它并不關心數據包是否到達目的地,也不關心連接和端口號,它的工作是發送數據包并將其路由到目標計算機。其中每個數據包都是獨立的互不依賴的,有可能會亂序到達目標地址或者在傳輸中丟失,那如何保證數據包到達和順序正確呢?這都交給了TCP,也就體現了分層的作用。當數據包過大時,在IP層會進行分包由于每個數據包在物理層走的物理鏈路不一樣,傳輸速度也不一樣導致數據包沒有按順序到達目的地,但TCP會根據數據包上攜帶的序列號來進行排序重組并且發送方在一個特定時間內沒有接收到接受方的ack確認時,則發送方會重新傳送該數據包。我們常常把IP等同于IP地址,這是不對的。IP是網絡協議,而IP地址是一串數字,IP地址有兩種標準一種是IPV4,采用的是32位地址即4字節,因此地址空間只有2的32次方約40億個地址。一些地址是為特殊用途所保留的,如專用網絡約1800萬地址。隨著互聯網爆炸式發展地址被不斷分配使用IPV4已經枯竭于是IPV6運營而生IPV6采用128位的地址因此新增的地址空間支持2的128次方約3.4X10的38次方個地址。有了IP地址和端口號之后鏈路層將數據包的文本信息轉譯成電子信號然后通過光纜傳輸在電纜的另一端的路由器上檢查每個數據包中的目標地址并確定將其發送到何處,最終數據包到達服務器后從TCP/IP協議族的底部開始向上運行當數據包向上通過協議族時客戶端添加的所有路由數據例如IP地址和端口號都將從數據包中剝離出來當數據到達棧頂時數據包已經重新恢復成最初的形式,通過端口號可以將數據傳遞給當前服務器監聽該端口的應用程序,應用程序根據當前請求數據做出反應。比如現在我們想獲取Index.html服務器會將路徑index.html的數據通過剛才的方式返回給你的電腦也就是客戶端,這樣就可以看到xx網站的首頁內容了。到這里我們完成了客戶端與服務器在互聯網中的一次數據交互。
二、廣義角度
?從更廣的角度來看看你的電腦和xxx服務器之間的互聯網到底是怎么構成的。你的電腦通過調制解調器modem也就是我們常說的貓,貓將計算機的數字信號翻譯成可以沿著普通電話線傳送的模擬信號后在公共網絡進行傳輸,公共電話網絡通過連接ISP互聯網服務提供商來接入互聯網,我們生活中常見的移動、聯通、電信等都是ISP。數據包經過電話網絡和ISP后它們將路由到ISP主干網絡數據包通常會從此經過多個路由器,并經過多個主干網直到目的地。互聯網主干網由許多相互連接的大型網絡,組成這些大型網絡被稱為網絡服務提供商簡稱NSP,NSP是為ISP提供網絡主干服務的公司。ISP可以從NSP那里批量購入帶寬為客戶提供網絡接入服務NSP網絡通過網絡訪問點NAP相連來交換數據包流量,每個NSP都必須連接至少三個網絡訪問點,數據包流量可能會通過NAP從一個NSP的主干跳到另一個NSP主干。當然互聯網的網絡架構不會這么簡單,互聯網是如何幫助數據包找到一條正確路線的把數據包送到目的地,在互聯網中有個特殊計算器-路由器,路由器上面有個路由表記錄了子網絡的所有IP地址然而他并不知道上層網絡所包含IP地址,當數據包到達路由器;路由器檢查路由表上是否有目的地的IP地址,如果有則直接發送那個網絡否則就向上層發送數據在更高的層級尋找擁有該IP的路由器。如果依然沒有找到,則再次將數據包向上路由,直到到達NSP主干網為止,連接到NSP骨干網的路由器擁有最大的路由表。通過這張表可以將數據包路由到正確的骨干網,然后開始向下傳播進入越來越小的網絡,直到找到目的地為止,你的電腦就是這樣訪問到某個服務器的。
總結
- 上一篇: 超小型php框架,超轻量级的PHP框架
- 下一篇: 库克「豪赌」MR:七年磨一剑,不行也得行