天天看點

趣談網絡協定-筆記(1)

前言

來自極客時間上的講師劉超的關于網絡協定的課程,品質非常高,強烈推薦。

一、概念

  • 協定三要素
    • 文法
    • 語義
    • 順序
  • 以太網 Ethernet

    當今區域網路采用的最通用的通信協定标準,處于資料鍊路層。它規定了包括

    實體層 的連線、電子信号和 媒體通路層 協定 的内容。
  • 網關gateway,路由器router,交換機switch,集線器hub,網橋bridge

    hub: broadcast to every port, one-line

    switch: better hub, intelligent

    they are both used to exchange data within a local network

    hub->switch。bridge已淡出

router: routes data from one network to another, base on ip address

gateway: 離開區域網路就要經過一個網關,網關是路由器的一個網口

參考1 參考2
tips:
  1. 想象自己是一個處理網絡包的程式,如何拿到網絡包,如何處理,如何發出去
  2. 網絡上跑的包都是完整的,可以有下層沒上層(例如:Ping),而不可能有上層沒下層

二、分層結構

趣談網絡協定-筆記(1)

二層定義了本地區域網路的傳輸行為,ip層定義了端到端的傳輸行為。網絡傳輸以包為機關,二層叫幀,網絡層叫包,傳輸層叫段。

  • 二層裝置 三層裝置
    • 二層裝置: 工作在鍊路層的裝置,摘下mac頭,判斷丢棄、轉發或留着,轉發出去前要把mac頭再填上
    • 三層裝置: 工作在ip層的裝置,把mac頭、ip頭都摘下來,然後同上

三、ip位址

趣談網絡協定-筆記(1)
  • ipv6=128位
  • mac位址=6byte=48位,無定位功能
  • 無類型域間選路CIDR:将32位ip位址一份為二,前面網絡号,後面主機号
下一篇:趣談網絡協定-筆記(2)

思考題

1.網絡包到達網關時,可以通過路由表得到下一個網關的ip,直接通過ip就可以了,為何還要通過本地的mac位址呢?

摘評論裡@芒果的發言:ip位址不是固定的。為何不直接用mac呢?因為ip選址+mac定位效率更高

2.網絡分層協定的類比,比總經理&員工的比喻更恰當的?

評論裡的快遞比喻個人更認同

3.STP協定缺點

  • 拓撲發生變化,新的配置消息需要一定時延才能傳播到整個網絡,期間會導緻網絡不穩定
  • 網絡規模大時,鍊路阻塞将不承擔任何流量,造成帶寬浪費

4.ICMP差錯封包也出問題了呢?

差錯封包不會産生差錯封包

5.回複的包,公網ip NAT成内網ip時,怎麼知道發給誰的?

是ip+端口(TCP、UDP)或ID(ICMP)哈希比對算法

6.路由協定交換的資訊本身,還要走路由嗎,不是死鎖了嗎

OSPF直接基于IP協定,隻發給鄰居,隻有一跳,不經過中間裝置。BGP基于TCP, 在BGP peer之間交換資訊

7. 計算機看來,怎樣才算一個連接配接呢?

接收端和發送端為維護連接配接所保持的資料結構,即socket,就是連接配接

8. 如何在某個系統中檢視TCP連接配接的狀态?

netstat,lsof,ss等

9. bbr如何達到最優點的?

進入緩存并等待,會增加額外的時延

10. epoll是linux的函數,windows對應的機制是什麼呢?如何寫一個跨平台的程式呢

windows是IOCP,事件發生時,IOCP機制将資料直接copy到緩沖區,應用可以直接使用。而epoll的異步通知,應用需要調用IO函數擷取資料。跨平台可以使用libevent庫,這是一個事件通知庫,适用于linux、win、bsd等。

11. 哪些手段可以提高https的效率?

從https設計的流程考慮:DNS查詢(httpdns),tcp三次握手(改用基于udp的quic),交換3個key(共享密鑰)

12. RTMP視訊流傳輸機制存在什麼問題?如何優化

基于TCP,不适合實時場景。使用基于udp的quic。

13.如何做跨機房的高可用?

  • 同城雙活
    趣談網絡協定-筆記(1)
  • 異地災備
    趣談網絡協定-筆記(1)

14.公有雲和私有雲如何打通?

15.iptables如何通過QUEUE做負載均衡?

繼續閱讀