前端也得學學計算機網絡呀

    別以爲做前端的就不用學計算機網絡了,做WEB開發而不知道基本的計算機網絡知識實在是有點說不過去,我們或許沒有必要了解物理層或者數據鏈路層,但至少來講,應用層是必須瞭解的。最近自學了一下計算機網絡的基本知識,看得是謝希任的那本經典教材。本文總結了一下我個人認爲比較重要的知識點,歡迎批評指正。

 


 

一、計算機網絡分層結構

    爲了增強計算機網絡系統的靈活性,便於開發和維護,建立了一種層次結構模型,各層只管自己的事,通過拿到別的層的服務和數據來完成自己的任務,暴露出自己的接口給其他層或者應用程序使用。分層很複雜,OSI的七層結構什麼的沒有必要理會,這裏介紹書中提到的五層結構模型。(這足夠了)

    5層結構

(這裏引用一張圖,來源:http://blog.csdn.net/dadadie/article/details/52190817

    我們只用簡單瞭解一下各層的作用

    1、實體層(物理層)

    物理層說白了就是那些連線,光纖、雙絞線之類的。

    2、鏈接層(數據鏈路層)

    他也是計算機網絡的低層,他的作用就是將網絡層交下來的數據封裝成幀交給物理層,以及將從物理層接收的幀解析出數據交給網絡層。(ps:數據在物理層一般叫幀,在網絡層交IP數據報或者包)。像適配器、轉發器、集線器、網橋、交換機都被歸在鏈接層。

    3、網絡層

    網絡層的作用是向上層提供簡單靈活的、無連接的、盡最大努力交付的數據報服務,它不提供服務質量的承諾,它是爲主機間提供邏輯通信。這裏涉及到地址解析,路由等內容。常見的路由器可以歸爲網絡層。

    4、運輸層

    運輸層是爲應用進程之間提供端到端的邏輯通信。傳說中的TCP三次握手、四次握手就發生在這裏。這裏需要重點關注。

    5、應用層

    域名解析、HTTP、電子郵件等等都是應用層的範疇。應用層的協議比較多,我們重點關注HTTP 協議。

    下面將各層的協議給個圖

協議棧

 

(圖片來源:http://product.pconline.com.cn/itbk/wlbg/network/1107/2474259.html)

    沒找到合適的圖,這裏可以理解網絡接口層爲物理層+數據鏈路層

二、網絡層

    網絡層重點是IP協議,IP協議包括ARP協議、ICMP協議、IGMP協議。下面逐步講解

    1、IP地址

    (1)定義:IP地址是各個主機在網絡中的唯一的邏輯標識,標識了主機及其所在的網絡。IP::={網絡號,主機號},他是由32爲二進制輸構成的,一般寫成點分十進制形式。

    (2)分類:分爲AB -E,識別方法爲,第一位爲0爲A類,10爲B類,110爲C類,DE不用考慮,網絡號,A爲前8爲,B類16位,C類32位。

    2、子網劃分

    直接用網絡號劃分網絡會造成ip地址浪費,因爲一個網絡中可能並沒有那麼多的主機。我們需要將一部分主機號拿過來當網絡號,增加可用網絡個數。

   我們將網絡號部分全部變成1,主機號部分全部變成0就可以得到子網掩碼,用子網掩碼與IP地址逐位求與就能得到該IP地址的網絡地址。

    IP地址  AND 子網掩碼 = 對應的網絡地址

    舉一個例子,你的公司拿到了一個B類網絡號(比較有錢啊)145.13.0.0,但是呢你的公司有7個部門需要有獨立的網絡,你總不能申請6個網絡號吧,此時就要劃分子網了,我們可以取主機號的前三位作爲子網號,2的三次方=8,去掉111,000剛好得到6個網絡,這個時候的子網掩碼是多少呢?將網絡號全部變成1,前面的16位網絡號+你的三位子網號。答案就是255.255.11100000.00000000(不要像我一樣),就是255.255.224.0。假設你們公司有臺主機IP地址爲145.13.3.1,那麼他的網絡地址是多少呢?直接和255.255.224.0求與得到的是145.13.0.0對不對,這不就是劃分給你的網絡號嗎?是的,這說明對外來將你們還是一個網絡,並非因爲劃分子網而變成多個網絡。

    3、無分類IP

    這也是解決IP不夠用的方法,他是在IP後面跟一個/數字,例如145.13.3.1/20,它表示前20位是網絡地址。

    4、物理地址(MAC地址)

    物理地址是數據鏈路層和物理層使用的地址,基於此,我們需要一種轉換機制

    5、ARP(地址解析協議)

    在網絡層需要將IP解析爲MAC,因爲高層只認識IP,低層只認識MAC,ARP就是做這個事情的。

    6、ICMP協議(網際控制報文協議)

    它允許主機或路由器報告差錯情況和提供異常情況報告。

    7、IGMP,與多播有關,瞭解即可

    8、VPN ,NAT

    VPN就是常說的FQ,NAT是提供了使用專用內網訪問因特網的機制。

    總結一下:網絡層應該重點掌握子網劃分、ARP。

三、傳輸層

  1、TCP協議(傳輸控制協議)

  (1)定義:TCP鏈接::={(IP1:port1),(IP2:port2)}

  (2)特點:

  面向鏈接:使用TCP協議之前必須先建立連接

  點對點:提供供的是一對一的連接

  可靠交付:TCP傳送的數據無差錯、不丟失、不重複、按時序到達

  全雙工:我可以給你發數據,你也可以給我發

  面向字節流:會將數據分塊分解

  (3)TCP連接建立和釋放(三次握手、四次握手來了)

TCP鏈接建立

  TCP連接釋放

    (圖片來源:http://www.cnblogs.com/NeilZhang/p/5700312.html)人家拍個照片也不容易,小弟用用啊。  這個兩個圖就反映了傳說的那幾次握手,其實是幾次確認過程。

       (4)可靠傳輸工作原理

    停止等待協議和連續ARQ協議(瞭解)

  (5)流量控制(滑動窗口)(瞭解)

  (6)擁塞控制:慢開始、擁賽避免、快重傳、快恢復(瞭解)

  2、UDP(用戶數據報協議)

  特點:無連接的,盡最大努力交付,面向報文,沒有擁賽控制,首部開銷小,一對一、一對多、多對一、多對多都可以。

  注意:和TCP比較,他是DNS用到的重要協議

四、應用層

  1、DNS(域名系統)

  DNS建立了名字和IP的映射關係。我們的應用程序拿到一個域名時不能直接使用,而是要用到其對應的IP地址,這是要麼從自己的緩存中拿到,要麼就請求域名服務器解析。

  2、域名的樹狀結構

  域名的規則是一個樹狀結構,有機構管理頂級域名,二級機構拿到頂級域名後可以進一步劃分,交給三級機構,三級機構還能再分,這樣只要在一個級裏沒有重複的域名劃分,那麼任何一個域名都是唯一的。上個圖:

域名的樹狀結構

 

  3、域名解析過程

  應用程序拿到域名後會在自己緩存中查找,有則直接用,沒有則請求本地域名服務器解析,如果服務器中有則返回個應用程序,如果沒有則請求其他本地域名服務器,得到IP後給應用程序,如果在本地服務器沒有找到,它會告訴應用程序該向哪個服務器請求。

  4、HTTP協議

  (1)萬維網

  萬維網不是一個特殊的網絡,而是由許多網絡在一起構成的集合。

  (2)URL(統一資源定位符)

  指的是網絡中某個資源的指針。通過這個指針就可以標識網絡中的一個資源,然後可以進行各種操作。

  基本格式:協議://主機:端口/路徑 (例如:https://i.cnblogs.com/EditPosts.aspx)

  (3)http協議(超文本傳輸協議)

   http協議是面向事務的(不可分割)的應用層協議,HTTP協議是無狀態的

  一個http的基本流程,上一個圖,自己畫的,我加上了瀏覽器的渲染過程,其實沒那麼複雜。

  記住一個HTTP有兩個RTT,不知道RTT請問度良

  (4)請求報文(參考:http://blog.csdn.net/zhangliang_571/article/details/23508953

http請求報文

  (5)響應報文(參考:http://blog.csdn.net/a19881029/article/details/14002273

  響應報文

  (6)重要的http狀態碼(參考:http://www.runoob.com/http/http-status-codes.html

  5、cookie

  cookie是保存在客戶端的小的文本文件,某個域下的cookie會跟隨請求響應傳送

  6、應用層的其他內容(這裏不仔細講了,只是列出來)

  FTP:文件傳輸協議

  SMTP:簡單郵件傳輸協議

  DHCP:動態主機配置協議

  SNMP:簡單網絡管理協議

五、總結

  本文給出了前端開發者必須掌握的計算機網絡知識,這只是我個人的理解,並不代表一定是對的或者一定適合你,推薦看謝希任的那個計算機網絡教材,這樣你一定會收穫更多。後面可能會寫關於網絡安全的文章,最近在看一本書叫《WEB前端黑客技術揭祕》。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章