小白文——計算機網路如何學??

貝貝子發表於2022-03-06

推薦閱讀:

計算機⽹絡相⽐作業系統好學⾮常多,因為計算機⽹絡不抽象,你要想知道⽹絡中的細節,你都可以通過抓包來分
析。
也就是說,計算機⽹絡不會因為裝置的不同⽽不同,⼤家都遵循這⼀套「規則」來相互通訊,這套規則就是
TCP/IP ⽹絡模型

TCP/IP ⽹絡模型

對於同⼀臺裝置上的程式間通訊,有很多種⽅式,⽐如有管道、訊息佇列、共享記憶體、訊號等⽅式,⽽對於不同設
備上的程式間通訊,就需要⽹絡通訊,⽽裝置是多樣性的,所以要相容多種多樣的裝置,就協商出了⼀套通⽤的⽹
絡協議

應用層

最上層的,也是我們能直接接觸到的就是應⽤層(Application Layer),我們電腦或⼿機使⽤的應⽤軟體都是在應⽤層實現。

那麼,當兩個不同裝置的應⽤需要通訊的時候,應⽤就把應⽤資料傳給下⼀層,也就是傳輸層。

所以,應⽤層只需要專注於為⽤戶提供應⽤功能,不⽤去關⼼資料是如何傳輸的,就類似於,我們寄快遞的時候,

⽽且應⽤層是⼯作在作業系統中的⽤戶態,傳輸層及以下則⼯作在核心態。

傳輸層

在傳輸層會有兩個傳輸協議,分別是 TCP 和 UDP

TCP 的全稱叫傳輸層控制協議(Transmission Control Protocol),⼤部分應⽤使⽤的正是 TCP 傳輸層協議,⽐
如 HTTP 應⽤層協議。TCP 相⽐ UDP 多了很多特性,⽐如流量控制、超時重傳、擁塞控制等,這些都是為了保證
資料包能可靠地傳輸給對⽅。

UDP 就相對很簡單,簡單到只負責傳送資料包,不保證資料包是否能抵達對⽅,但它實時性相對更好,傳輸效率
也⾼。當然,UDP 也可以實現可靠傳輸,把 TCP 的特性在應⽤層上實現就可以,不過要實現⼀個商⽤的可靠 UDP
傳輸協議,也不是⼀件簡單的事情。

應⽤需要傳輸的資料可能會⾮常⼤,如果直接傳輸就不好控制,因此當傳輸層的資料包⼤⼩超過 MSS(TCP 最⼤
報⽂段⻓度) ,就要將資料包分塊

這樣即使中途有⼀個分塊丟失或損壞了,只需要重新這⼀個分塊,⽽不⽤重新傳送整個資料包。在 TCP 協議中,我們把每個分塊稱為⼀個 TCP 段(TCP Segment)。

當裝置作為接收⽅時,傳輸層則要負責把資料包傳給應⽤,但是⼀臺裝置上可能會有很多應⽤在接收或者傳輸數
,因此需要⽤⼀個編號將應⽤區分開來,這個編號就是端⼝

⽽對於瀏覽器(客戶端)中的每個標籤欄都是⼀個獨⽴的程式,作業系統會為這些程式分配臨時的端⼝號。

由於傳輸層的報⽂中會攜帶端⼝號,因此接收⽅可以識別出該報⽂是傳送給哪個應⽤。

網路層

我們不希望傳輸層協議處理太多的事情,只需要服務好應⽤即可,讓其作為應⽤間資料傳輸的媒介,幫
助實現應⽤到應⽤的通訊,⽽實際的傳輸功能就交給下⼀層,也就是⽹絡層(Internet Layer)。

⽹絡層最常使⽤的是 IP 協議(Internet Protocol),IP 協議會將傳輸層的報⽂作為資料部分,再加上 IP 包頭組裝
成 IP 報⽂,如果 IP 報⽂⼤⼩超過 MTU(以太⽹中⼀般為 1500 位元組)就會再次進⾏分⽚,得到⼀個即將傳送到⽹絡的 IP 報⽂。

⽹絡層負責將資料從⼀個裝置傳輸到另⼀個裝置,世界上那麼多裝置,⼜該如何找到對⽅呢?

我們⼀般⽤ IP 地址給裝置進⾏編號,對於 IPv4 協議, IP 地址共 32 位,分成了四段,每段是 8 位。

因此,需要將 IP 地址分成兩種意義:

  • ⼀個是⽹絡號,負責標識該 IP 地址是屬於哪個⼦⽹的;
  • ⼀個是主機號,負責標識同⼀⼦⽹下的不同主機;

怎麼分的呢?

這需要配合⼦⽹掩碼才能算出 IP 地址 的⽹絡號和主機號。那麼在定址的過程中,先匹配到相同的⽹絡號,才會去找對應的主機。

除了定址能⼒, IP 協議還有另⼀個重要的能⼒就是路由。

資料鏈路層

路由器怎麼知道這個 IP 地址是哪個裝置的呢?

每⼀臺裝置的⽹卡都會有⼀個 MAC 地址,它就是⽤來唯⼀標識裝置的。

路由器計算出了下⼀個⽬的地 IP 地址,

再通過 ARP 協議找到該⽬的地的 MAC 地址,這樣就知道這個 IP 地址是哪個裝置的了。

物理層

當資料準備要從裝置傳送到⽹絡時,需要把資料包轉換成電訊號,讓其可以在物理介質中傳輸,這⼀層就是物理層
(Physical Layer),它主要是為資料鏈路層提供⼆進位制傳輸的服務。

推薦閱讀:

相關文章