在這個世界上有倆種人,一種是每天趴在網上,跟計算機網絡親密接觸的人,另外一種是天外飛仙,不吃煙火食,天然也不使用互聯網的人😀。css
因此,不管你是互聯網世界的新用戶,或者,你已經投身互聯網工做很長時間了,亦或是你天天喜歡使用計算機和網絡的網民,你都應該瞭解基本的網絡知識,特別是計算機網絡。瀏覽器
若是你維護過服務器,或者是一個服務端的開發者,你瞭解遠程的用戶是如何鏈接到你的服務器或者訪問到你的服務的嗎?
發現大部分人的回答是模糊的,有的根本不明就理,因此,本文就儘量多的來聊一聊,有關這類計算機網絡與網絡組件的基本知識。ruby
咱們先來給計算機網絡下個定義:服務器
計算機網絡能夠被定義爲,藉助於數據傳輸介質(例如電纜、光纖等),鏈接貫穿世界各地的計算機,並交換網絡數據包。網絡
這個圖中包含了基本的網絡組成結構,和常見的網絡設施,以及一些網絡術語,例如:因特網Internet、互聯網服務提供商ISPs、路由器Router等,咱們接下來,看一下這些組件是如何工做的,以及之間的交互關係。框架
節點在計算機網絡中的意思是各類計算設備,例如我的PC、移動手機、平板電腦、服務器等等,可用經過網絡與相似的設備進行數據包的交換。ide
任何溝通都須要一致的溝通基礎,咱們一般稱爲 協議,例如人類溝通的協議,包括各類地方語言、手語、表情等,都是須要事先約定好的規則。性能
而互聯網是一個遠距離傳輸信息的協議,在傳輸以前,須要先知道對方的位置。
好比,你考慮在你女友過生日的時候,送她一份禮物,你須要先知道把禮物送到哪裏,她的家庭或工做地址。網站
如何給網絡節點設置地址呢?
任何技術都不是憑空產生的,必須踩着前人的肩膀,參考現有技術的啓發,演變而來的。
早期計算機科學家們,想經過惟一的ID,來識別網絡中在計算機,他們想到了當今的電話號碼(telephone number),由此,也想出了一個IP(Internet Protocol)的概念。google
這個IP是計算設備在計算機網絡中的地址,從技術的角度來說,它是一個用於標識這個網絡設備的32位數字,全部的網絡設備都基於它們的IP地址往返通訊。
例如你上傳一個文件到一個網站,或者從一個網站下載一個文件。在網絡通訊中,文件會被轉化成網絡中若干個數據包,每一個 「包」 含有網絡節點的目的地(ip和端口,服務端操做系統收到這個包之後,進行按序拼接,以後交給監聽這個端口的進程,也就是一個程序)。
IP地址分爲倆個類別:
IPv4,爲了方便治理,對它進行了分類,包括Class A, B, C, D, E等五類,每一個類別可分配不一樣數量的IP地址,使得路由表可以作的很是小, 路由器可以快速地處理網絡轉發,根據網絡規模需求(例如設備的數量),採用不一樣的IP分類,獲得更好的網絡性能。
32位IP地址,用第一組數字來區分IP所屬種類,更多關於IP分類的信息請自行科普「IP分類」,其實就是對全部的ip地址進行了人爲分段
倆種類型的IPv4地址:
須要注意的一點,每一個設備都有可能同時有幾個ip地址,例如一臺計算機同時鏈接了有線和無線網絡,那它就有倆個ip地址。
顧名思義,路由器是一個物理的網絡組件,負責轉發數據包到指定的目的網絡設備。網絡中的設備自己是不知道本身通訊的對方的具體位置,由路由器根據路由器自身維護的路由表,加上數據包中的目的設備地址來轉發數據包的請求。
Routing table: Destination Gateway Genmask Flags Metric Refs Iface default 192.168.0.1 0.0.0.0 UG 1024 233 eth0 192.168.0.0 * 255.255.255.0 UC 0 0 wlan0 192.168.0.0 * 255.255.255.0 UH 0 2 eth0
Destination,目地設備的ip地址;
Gateway,網關,網絡與網絡鏈接的中間設備,例如倆臺路由器的鏈接,然而,倆臺路由器不能直接鏈接,須要藉助另外一臺路由器,這臺路由器就是網關。
子網掩碼(Genmask/Subnet mask),僅僅是爲了劃分網絡,子網掩碼結合ip地址能夠分割成相對較小的ip邏輯區域,便於管理。
Flags,接入網絡設備的標記,例如UG,U表示是路由器,G表示是網關。
Iface(網絡接口),接入網絡的網絡類型,例如你的設備接入的Wifi,那這個網絡接口就是「wlan」,若是接入的是有線LAN,那網絡接口iface就是「eth」。
以上主要是網絡基礎層面的內容,主要包括ip地址和路由器倆大網絡核心技術,如何識別設備,以及設備彼此之間如何通訊,接下來我們看看如何實現更高層的技術應用。
Network Address Translation ,網絡地址轉換,爲了讓有限的公有ip鏈接更多網絡設備,就須要用到NAT,網絡地址轉換,這個功能一般也是由路由器來實現。路由器一頭與Internet服務商獲取一個公網ip,另外一頭掛了不少網絡設備,路由器爲每個設備分配一個內部私有的ip地址,只有這個路由器內部的設備之間可見,以外是沒法與這些設備直接鏈接,須要經過路由器來轉發信號,這就是NAT技術。
例如,你在家裏經過電腦訪問Twitter,網絡鏈接大概是這樣的,電腦隨機選擇一個端口,去鏈接路由器,路由器隨機選擇一個端口去鏈接Twitter服務器,以下:
Private IP |PrivatePort |PublicIP |PublicPort |Remote |RemotePort ------------- ------------ --------- ----------- ------- ----------- 192.168.1.100 | 37641 | 104.244.42.129 | 59273 | 104.244.42.129 | 80
Private IP 和 PrivatePort 是你電腦的ip和端口,PublicIP 和 PublicPort 是路由器的公有ip和路由器的端口,而 Remote 和 RemotePort 是Twitter服務器的ip和端口。
DHCP,Dynamic Host Configuration Protocol,
Internet網絡服務商和路由器都有這個功能,爲網絡設備動態分配地址,例如你的電腦第一次接入路由器的時候,可有手動的設置一個靜態的ip地址,也可有由路由器隨機分配一個ip地址,固然,路由器與Internet服務商的網絡鏈接的時候,也可有動態獲取一個ip地址。
DNS,Domain Name System/Server,
咱們如今都知道,全部的網絡設備都有ip地址,不管是公有ip仍是私有ip,經過這個ip就能夠訪問響應的網絡設備或者網絡服務,例如,咱們訪問 104.244.42.129
這個地址的時候就能打開Twitter的網站,由於這是Twitter服務器的ip地址。
可是,這個地址沒有可解釋性,就是幾個隨機的數字,人類很難記憶,或者可被記住的數量很是有線,全部,DNS就應用而生了,其實就是一個翻譯的過程,將ip地址和人類容易理解的文字相互轉換,這些文字叫作 域名,例如google.com, twitter.com等,咱們訪問這些地址的時候,DNS會將其對應的ip地址找到,而後經過ip去訪問對應的服務器。
域名的結構:
包括協議,域名名字,後綴等。
注意,Internet 和 internet 不是同一個東西,
internet是互聯網,泛指全部能夠互聯互通的網絡,而Internet是一個具體的互聯網,叫因特網,就比如 人 和 黑人、白人、男人、女人的區別,一個是概念,一個是具象的東西。
Internet是經過TCP/IP實現的internet,固然還有基於其餘協議的internet,而,目前最大,應用範圍最廣的internet就是Internet(因特網)。
而,ISPs(Internet Service Providers)就是Internet網絡服務提供商,可讓人們很方便的接入Internet,實現與Internet互聯,聽說Internet的前身是ARPAnet,美國高等研究計劃署開發的世界上第一個運營的網絡,是全球Internet的鼻祖。
Internet服務商是分層組織結構,包括1級、2級和3級,以下圖:
1級服務商是Internet的主要服務商,國際級別,這些互聯網服務提供商經過海底的大電纜相互鏈接,而且爲2級服務商提供接入的服務。
整個Internet的結構看起來以下圖:
可見路由器是網絡中很是重要的一個關鍵環節,對外經過公有ip相互通訊,內部爲各個設備分配私有的ip地址,而後經過NAT協議實現網絡轉發,造成了局域網。
而不一樣的ISPs實現了上層網絡的跨區域鏈接,造成了廣域網,而最終造成的整張大網就是Internet,因特網,也就是咱們每天都離不開的互聯網。
而,每一個網絡設備之間究竟是如何傳輸數據,通過了哪些網絡設備和轉換,以及各類網絡服務是如何,用什麼方式對外提供的,這就是開放式系統互聯通訊模型(Open System Interconnection Reference Model,簡稱OSI),定義了不一樣設備互聯的標準,是設計和描述計算機網絡通訊的基本框架。