應用層:dns、http、https所在的層。經過應用層的封裝,瀏覽器會將包交給下一層去完成,通過 socket 程式設計來實現。(http 頭:正文格式,正文長度,url,post 等)
先用 www.baidu.com 類似的網域名稱發起請求,dns/httpdns 對網域名稱進行解析,得到具體的ip位址。現在一般使用 https 協議做加密傳輸資料。
傳輸層。傳輸層有 udp 協議和 tcp協議。(tcp頭:有2個埠,乙個瀏覽器埠,乙個伺服器監聽埠)
網路層:傳輸層封裝完畢後,瀏覽器會將包交給作業系統的網路層,網路層的協議是 ip協議。(ip 頭:裡有源 ip 位址,以及目標 ip 位址)
知道目標 ip 位址,就得判斷 ip 是區域網還是網際網路。如果是區域網,通過 arp 協議,就會獲取到區域網內目標伺服器的 mac 位址。閘道器往往是乙個路由器,多個 ip 是乙個路由表。(arp 協議最終也會快取為乙個 arp 對映表)
上述都是從傳送請求的機器上獲得的 tcp、ip 等資料。mac 位址是閘道器通過 arp 協議獲取。
鏈路層:ip 位址傳送給閘道器,是靠 arp 協議。(閘道器的 mac 和 客戶端電腦的 mac)
arp 協議:作業系統會詢問包是要送到哪台伺服器上的,某伺服器的 mac 位址裡的ip,是目標 ip 位址,該伺服器就會主動回應。
物理層
到底目標伺服器後,就會取下 mac 位址匹配,再取下 ip 頭匹配,在傳輸層的時候,就會對每乙個 tcp 請求返回乙個成功/失敗的簡單回應。然後通過 tcp 裡面的目標埠號,進行處理。
所以 tcp 三次握手的時候,ip 和 mac 層也是運轉了三次,並不止是 tcp 在運作。
在網路上執行的包是完整的,可以有下層沒有上層,但是絕對不可能有上層沒有下層。所以對於 tcp 協議,三次握手或者重試,只要想發出去包,必須有 ip 層和 mac 層。這樣才有目標,才能把包傳送出去。
當 buffer 裡面的內容完整後,就可以從網口發出去了。
三層裝置:含有 tcp、ip、mac,匹配 ip ,是對 ip 做丟棄、**,還是留著。
公有 ip 到私有 ip,可以舉個例子。公有 ip 就是小區,小區名很難有重複(公有ip 不重複)。私有 ip 就是樓號和門牌號。
遠端定位需要用 ip 定位,區域性定位就可以用 mac 位址。(mac 位址侷限在乙個子網裡)
動態主機配置協議(dhcp- dynamic host configuration protocol):自動配置子網 ip 的協議。配置一段共享的ip位址,新接入的機器通過 dhcp 協議就能自動配置 ip。
乙個新機器,帶著唯一的 mac 位址,使用 ip 位址 0.0.0.0 傳送乙個廣播包,廣播包封裝在udp (源埠、目標埠)裡,udp 封裝在 bootp 裡面。目的 ip 位址為 255.255.255.255。dhcp server 就會分配乙個 ip 位址給新機器,並且記錄下該 ip,不會再分配給其他 dhcp 客戶。
1)、物理層:ip層要封裝了 mac 層才能將包放進物理層。乙個集線器,將多台電腦連線起來,沒有大腦,完全在物理層工作。將收到的每乙個位元組,都複製到其他埠上去,這就是第一層物理聯調的方案。
2)、鏈路層:也就是 mac (medium access control),即**訪問控制。控制往**上發資料的時候,誰先發,誰後發,防止混亂。這和 mac 位址無關。(學名多路訪問)
有了目標 mac 位址,資料報在鏈路上廣播,mac 的網絡卡才能發現這個包是傳送給它的。mac 拿到包,開啟 ip 包,發現 ip 是自己的,再開啟 tcp 包,發現埠也是自己的。讓後將請求返回結果返回,層層封裝,又到達 mac 層。有源 mac 層,此時源 mac 層就成了目標 mac。
3)、交換機
交換機學習功能:第一次機器 a 傳送求情後,會將 a 記錄在網口上。下一次其他機器訪問機器 a ,就會直接找到該機器(根據記錄的 mac 位址)。
如果應用到交換機層面,假如 a 在交換機左側,其他機器請求來後,交換機就只會把該廣播訊息廣播到右側。(最開始廣播模式,當應用學習能力,記住了之前的機器mac 位址,則可以直接呼叫不用廣播)
stp 協議:spanning tree protocol ,樹狀交換。並且通過一些方法選舉出根交換機、樹枝交換機等。
並且交換機很多的情況,可以通過 vlan 形成虛擬區域網。
tcp 三次握手,建立連線,建立一定的資料結構來維護雙方的互動狀態。提供可靠交付。通過 tcp 連線傳輸的資料,無差錯、不丟失、不重複、並且按序到達。
udp 則繼承了 ip 包的特效,不保證不丟失,不保證按順序到達,是一種無狀態的服務。
tcp 是面向位元組流,udp 繼承 ip 包,基於資料報,乙個乙個地發,乙個乙個的收。
ip 頭里會存乙個8位協議,區分資料到底是 tcp 還是 udp。然後應用程式監聽乙個埠,用來區分應用程式。這樣知道我的資料報是給哪乙個應用程式處理。(udp/tcp 頭都應該有埠號)
udp 的使用場景:
1)、需要資源比較少,網路情況比較好的內網,或者對包丟失不敏感的應用。
2)、不需要一對一溝通,建立連線。而是可以廣播的應用。
3)、需要處理速度快,延時低,可以容忍少數丟包。小中介
1)、當網路包到達乙個閘道器的時候,可以用個獲取到下乙個閘道器的 ip,雖然可以通過 ip 就獲取,但是還是要通過本地的 mac 位址。
原因是:網路包帶有源/目標 ip,源/目標 mac。從路由表獲取下一跳的 ip 位址,看起來是 ip 位址,但是其實是通過 arp 協議得到的 mac 位址,將下一傳送的閘道器的 mac 位址放在目標 mac 位址裡面。
根據《趣談網路協議》所做筆記
趣談網路協議筆記 一
第一講 為什麼要學習網路協議 第二講 網路分層的真正含義是什麼?第三講 ifconfig 最熟悉又陌生的命令列 第四講 dhcp與pxe ip是怎麼來的,又是怎麼沒的 第一模組正如其名只是乙個綜述,不會對於每個細節都拿捏到極致,我也不會死扣細節,只希望能夠對整體有乙個了解,不能只見樹木不見森林!人類...
趣談網路協議筆記 零
看到極客時間劉超的分享,感覺撿到寶了,一直以來,真的,無論是大學時期學網路還是自己看網路相關的書籍。讓我感覺自己就是乙個儲存器,只有儲存和讀取的功能,只知道我存了什麼,但是也僅此而已。我在大學的時候真的感覺,大學老師這工資真的很好拿啊!每天對著ppt讀字,讀完下課就行了!學學人家怎麼進行知識的傳播,...
趣談網路協議(1) 協議
課程筆記 趣談網路協議 劉超 一 協議的三要素 語法 內容要符合一定的規則和格式 語義 內容要代表某種意義 順序 有先後次序的規定 購物網提交乙個訂單背後的工作 二 網路分層的真實含義 網路為什麼要分層?因為,是個複雜的程式都要分層。只要是在網路上跑的包,都是完整的。可以有下層沒上層,絕對不可能有上...