wordpress 頭像設(shè)置湖南靠譜seo優(yōu)化公司
上篇介紹了計算機網(wǎng)絡(luò)的基礎(chǔ)知識,也提到互聯(lián)網(wǎng)(The Internet),本篇將會詳細介紹互聯(lián)網(wǎng)(The Internet)
。
文章目錄
- 1. 互聯(lián)網(wǎng)(The Internet)組成及數(shù)據(jù)包傳輸過程
- 2. IP 數(shù)據(jù)包的不足
- 3. UDP(User Datagram Protocol)
- 4.TCP(Transmission Control Protocol)
- 5. DNS(Domain Name System)
- 6. OSI Model
1. 互聯(lián)網(wǎng)(The Internet)組成及數(shù)據(jù)包傳輸過程
上篇介紹了你的計算機和一個巨大的分布式網(wǎng)絡(luò)連在一起,這個網(wǎng)絡(luò)叫互聯(lián)網(wǎng)。
互聯(lián)網(wǎng)由無數(shù)互聯(lián)設(shè)備組成,而且日益增多,計算機為了獲取視頻首先要連到局域網(wǎng),也叫 LAN(local area network)
,你家 WIFI 路由器連著的所有設(shè)備,組成了局域網(wǎng),局域網(wǎng)再連到廣域網(wǎng),廣域網(wǎng)也叫 WAN(Wide Area Network)
。
WAN 的路由器一般屬于你的"互聯(lián)網(wǎng)服務(wù)提供商",簡稱 ISP(Internet Service Provider),比如 Comcast,AT&T 和 Verizon 這樣的公司。
廣域網(wǎng)里,先連到一個區(qū)域性路由器,這路由器可能覆蓋一個街區(qū),然后連到一個更大的 WAN,可能覆蓋整個城市,可能再跳幾次,但最終會到達互聯(lián)網(wǎng)主干?;ヂ?lián)網(wǎng)主干由一群超大型、帶寬超高路由器組成,
為了從 YouTube 獲得這個視頻,數(shù)據(jù)包(packet)要先到互聯(lián)網(wǎng)主干,沿著主干到達有對應(yīng)視頻文件的 YouTube 服務(wù)器,數(shù)據(jù)包從你的計算機跳到 Youtube 服務(wù)器,可能要跳個10次,先跳4次到互聯(lián)網(wǎng)主干,2次穿過主干,主干出來可能再跳4次,然后到 Youtube 服務(wù)器。
如果你在用 Windows, Mac OS 或 Linux系統(tǒng),可以用 traceroute 來看跳了幾次,更多詳情看視頻描述(YouTube原視頻下)。
我們在"印第安納波利斯"的 Chad&Stacy Emigholz 工作室,訪問加州的 DFTBA 服務(wù)器,經(jīng)歷了11次中轉(zhuǎn),從 192.168.0.1 出發(fā),這是我的電腦在 局域網(wǎng)(LAN)里的 IP 地址,然后到工作室的 WIFI 路由器,然后穿過一個個地區(qū)路由器,到達主干。然后從主干出來,又跳了幾次,到達"DFTBA.com”的服務(wù)器,IP 地址是 104.24.109.186。過程可參考下圖:
注:如何查詢訪問的網(wǎng)頁的服務(wù)器地址-百度一下即可,這是我利用百度到的方法訪問到的百度網(wǎng)站服務(wù)器地址
可以看到百度服務(wù)器的IP地址,其對應(yīng)的端口號為80,輸入瀏覽器中就可以連接到百度服務(wù)器了
但數(shù)據(jù)包到底是怎么過去的?如果傳輸時數(shù)據(jù)包被弄丟了,會發(fā)生什么?如果在瀏覽器里輸 “DFTBA.com”,瀏覽器怎么知道服務(wù)器的地址多少?本篇將會討論這些話題
2. IP 數(shù)據(jù)包的不足
上篇介紹過,互聯(lián)網(wǎng)是一個巨型分布式網(wǎng)絡(luò)會把數(shù)據(jù)拆成一個個數(shù)據(jù)包來傳輸,如果要發(fā)的數(shù)據(jù)很大,比如郵件附件數(shù)據(jù)會被拆成多個小數(shù)據(jù)包。例如,網(wǎng)頁上所看到的視頻就是一個個到達你電腦的數(shù)據(jù)包,而不是一整個大文件發(fā)過來。
數(shù)據(jù)包(packet)
想在互聯(lián)網(wǎng)上傳輸要符合"互聯(lián)網(wǎng)協(xié)議(Internet Protocol)"
的標(biāo)準(zhǔn),簡稱 IP。
就像郵寄手寫信一樣,郵寄是有標(biāo)準(zhǔn)的,每封信需要一個地址,而且地址必須是獨特的,并且大小和重量是有限制的,違反這些規(guī)定,信件就無法送達。
IP 數(shù)據(jù)包也是如此,因為 IP 是一個非常底層的協(xié)議,數(shù)據(jù)包的頭部(或者說前面)只有目標(biāo)地址
,頭部存 "關(guān)于數(shù)據(jù)的數(shù)據(jù)"也叫元數(shù)據(jù)(meta data)
。
這意味著當(dāng)數(shù)據(jù)包到達對方電腦對方不知道把包交給哪個程序,是交給 Skype 還是使命召喚?因此需要在 IP 之上,開發(fā)更高級的協(xié)議。
3. UDP(User Datagram Protocol)
這些協(xié)議里最簡單最常見的叫"用戶數(shù)據(jù)報協(xié)議",簡稱 UDP(User Datagram Protocol)
。
UDP 也有自己的頭部,這個頭部位于數(shù)據(jù)前面,頭部里包含有用的信息,信息之一是端口號,每個想訪問網(wǎng)絡(luò)的程序都要向操作系統(tǒng)申請一個端口號。比如 Skype 會申請端口 3478,當(dāng)一個數(shù)據(jù)包到達時接收方的操作系統(tǒng)會讀 UDP 頭部,讀里面的端口號,如果看到端口號是 3478,就把數(shù)據(jù)包交給 Skype。
總結(jié):IP 負責(zé)把數(shù)據(jù)包送到正確的計算機UDP 負責(zé)把數(shù)據(jù)包送到正確的程序
UDP 頭部里還有"校驗和"
,用于檢查數(shù)據(jù)是否正確,正如"校驗和"這個名字所暗示的檢查方式是把數(shù)據(jù)求和來對比。
以下是個簡單例子:
假設(shè) UDP 數(shù)據(jù)包里原始數(shù)據(jù)是 89 111 33 32 58 41
,在發(fā)送數(shù)據(jù)包前電腦會把所有數(shù)據(jù)加在一起,算出"校驗和",89+111+33+...
以此類推,得到 364
,這就是"校驗和"。
UDP 中,"校驗和"以 16 位形式存儲 (就是16個0或1),如果算出來的和,超過了 16 位能表示的最大值高位數(shù)會被扔掉,保留低位,當(dāng)接收方電腦收到這個數(shù)據(jù)包,它會重復(fù)這個步驟把所有數(shù)據(jù)加在一起,89+111+33...
以此類推,如果結(jié)果和頭部中的校驗和一致代表一切正常
;
如果不一致,數(shù)據(jù)肯定壞掉了,也許傳輸時碰到了功率波動,或電纜出故障了。
不幸的是,UDP 不提供數(shù)據(jù)修復(fù)或數(shù)據(jù)重發(fā)的機制,接收方知道數(shù)據(jù)損壞后,一般只是扔掉。而且,UDP 無法得知數(shù)據(jù)包是否到達,發(fā)送方發(fā)了之后,無法知道數(shù)據(jù)包是否到達目的地,這些特性聽起來很糟糕,但是有些程序不在意這些問題,因為 UDP 又簡單又快。
拿 Skype 舉例:它用 UDP 來做視頻通話,能處理壞數(shù)據(jù)或缺失數(shù)據(jù),所以網(wǎng)速慢的時候 Skype 卡卡的,這是因為只有一部分數(shù)據(jù)包到了你的電腦,但對于其他一些數(shù)據(jù),這個方法不適用。比如發(fā)郵件,郵件不能只有開頭和結(jié)尾 沒有中間,郵件要完整到達收件方,如果"所有數(shù)據(jù)必須到達"就用"傳輸控制協(xié)議",簡稱 TCP(Transmission Control Protocol)
。
4.TCP(Transmission Control Protocol)
TCP 和 UDP 一樣,頭部也在存數(shù)據(jù)的前面
,因此,人們叫這個組合 TCP/IP。
就像 UDP ,TCP 頭部也有"端口號"和"校驗和",但 TCP 有更高級的功能,我們這里只介紹重要的幾個:
- TCP 數(shù)據(jù)包有序號:15號之后是16號,16號之后是17號,以此類推發(fā)上百萬個數(shù)據(jù)包也是有可能的。序號使接收方可以把數(shù)據(jù)包排成正確順序,即使到達時間不同,哪怕到達順序是亂的,TCP 協(xié)議也能把順序排對。
以下即為該過程的示意圖:
- TCP 要求接收方的電腦收到數(shù)據(jù)包并且"校驗和"檢查無誤后(數(shù)據(jù)沒有損壞)給發(fā)送方發(fā)一個
確認碼(acknowledgement,ACK)
,代表收到了。
“確認碼” 簡稱 ACK得知上一個數(shù)據(jù)包成功抵達后,發(fā)送方會發(fā)下一個數(shù)據(jù)包,假設(shè)這次發(fā)出去之后,沒收到確認碼那么肯定哪里錯了,如果過了一定時間還沒收到確認碼發(fā)送方會再發(fā)一次。
過程示意圖如下:
注意:數(shù)據(jù)包可能的確到了,只是確認碼延誤了很久,或傳輸中丟失了,但這不礙事 因為收件方有序列號,如果收到重復(fù)的數(shù)據(jù)包就刪掉。
- TCP 不是只能一個包一個包發(fā), 可以同時發(fā)多個數(shù)據(jù)包,收多個確認碼這大大增加了效率,不用浪費時間等確認碼。
- 有趣的是,確認碼的成功率和來回時間可以推測網(wǎng)絡(luò)的擁堵程度,TCP 用這個信息,調(diào)整同時發(fā)包數(shù)量,解決擁堵問題。
簡單說:TCP 可以處理亂序和丟失數(shù)據(jù)包,丟了就重發(fā),還可以根據(jù)擁擠情況自動調(diào)整傳輸率
你可能會奇怪,既然 TCP 那么厲害,還有人用 UDP 嗎?
TCP 最大的缺點是那些"確認碼"數(shù)據(jù)包把數(shù)量翻了一倍,但并沒有傳輸更多信息,有時候這種代價是不值得的特別是對時間要求很高的程序,比如在線射擊游戲,如果你玩游戲很卡,你也會覺得這樣不值!
5. DNS(Domain Name System)
當(dāng)計算機訪問一個網(wǎng)站時需要兩個東西:1.IP地址 2.端口號
例如 172.217.7.238 的 80 端口這是谷歌的 IP 地址和端口號。
事實上,你可以輸?shù)綖g覽器里,然后你會進入谷歌首頁,有了這兩個東西就能訪問正確的網(wǎng)站但記一長串?dāng)?shù)字很討厭,google.com 比一長串?dāng)?shù)字好記,所以互聯(lián)網(wǎng)有個特殊服務(wù)負責(zé)把域名和 IP 地址一一對應(yīng),就像專為互聯(lián)網(wǎng)的電話簿它叫"域名系統(tǒng)",簡稱 DNS(Domain Name System)
。
它的運作原理你可能猜到了,一般 DNS 服務(wù)器是互聯(lián)網(wǎng)供應(yīng)商提供的,DNS 會查表,如果域名存在,就返回對應(yīng) IP 地址。如果你亂敲鍵盤加個.com 然后按回車,你很可能會看到 DNS 錯誤,因為那個網(wǎng)站不存在,所以 DNS 無法返回給你一個地址。如果你輸?shù)氖怯行У刂?#xff0c;比如 youtube.com,DNS 按理會返回一個地址,然后瀏覽器會給這個 IP 地址發(fā) TCP 請求。
發(fā)送youtube.com
DNS返回一個地址,然后瀏覽器會給這個 IP 地址發(fā) TCP 請求
輸入一個錯誤的網(wǎng)址后:
如今有三千萬個注冊域名,所以為了更好管理,DNS 不是存成一個超長超長的列表,而是存成樹狀結(jié)構(gòu)。頂級域名(Top Level Domains,簡稱 TLD)在最頂部,比如 .com
和 .gov
,下一層是二級域名,比如 .com 下面有g(shù)oogle.com 和 dftba.com,再下一層叫子域名,比如 images.google.com, store.dftba.com,再下一層叫子域名,比如 images.google.com, store.dftba.com,這個樹超!級!大!
前面說的"三千萬個域名"只是二級域名不是所有子域名,因此,這些數(shù)據(jù)散布在很多 DNS 服務(wù)器上,不同服務(wù)器負責(zé)樹的不同部分。
6. OSI Model
好了 我知道你肯定在等這個:我們到了一層新抽象!
前面介紹了線路里的電信號,以及無線網(wǎng)絡(luò)里的無線信號,這些叫"物理層(Physical Layer)"
,而"數(shù)據(jù)鏈路層(Data Link Layer)"
負責(zé)操控"物理層"。
數(shù)據(jù)鏈路層有: 媒體訪問控制地址(MAC),碰撞檢測,指數(shù)退避,以及其他一些底層協(xié)議
再上一層是"網(wǎng)絡(luò)層(Network Layer)"
,負責(zé)各種報文交換和路由。
本篇我們講了"傳輸層(Transport layer)"
里一大部分, 比如 UDP 和 TCP 這些協(xié)議,負責(zé)在計算機之間進行點到點的傳輸,而且還會檢測和修復(fù)錯誤。
我們還講了一點點"會話層(Session Layer)"
,"會話層"會使用 TCP 和 UDP 來創(chuàng)建連接,傳遞信息,然后關(guān)掉連接,這一整套叫"會話(session)"
。
查詢 DNS 或看網(wǎng)頁時,就會發(fā)生這一套流程,這是 開放式系統(tǒng)互聯(lián)通信參考模型(OSI,Open System Interconnection) 的底下5層。這個概念性框架 把網(wǎng)絡(luò)通信劃分成多層,每一層處理各自的問題,如果不分層直接從上到下捏在一起實現(xiàn)網(wǎng)絡(luò)通信,是完全不可能的,抽象使得科學(xué)家和工程師能分工同時改進多個層不被整體復(fù)雜度難倒。
而且驚人的是!我們還沒講完呢!OSI 模型還有兩層,“表示層"和"應(yīng)用程序?qū)印?#xff0c;其中有瀏覽器、Skype、HTML解碼、在線看電影等。下篇再進行介紹
7.學(xué)習(xí)視頻地址:互聯(lián)網(wǎng)(The Internet)