1. 程式人生 > >網路基礎知識(一):網路分層、UDP協議

網路基礎知識(一):網路分層、UDP協議

  1. TCP/IP四層:
    應用層、運輸層、網路層、鏈路層
    應用層是使用者程序,而其他三層是核心工作

  2. 應用層協議(TCP):
    FTP(21) 檔案傳輸協議
    Telent(23) 遠端登陸
    SSH(22) 安全遠端登陸協議
    SMTP 簡單郵件傳送協議
    應用層協議(UDP):
    DNS(53) 域名解析協議
    BOOTP(68) 載入程式協議
    TFTP(69) 簡單檔案傳送協議
    SNMP 簡單網路管理協議
    傳輸層協議: TCP/UDP
    網路層協議: IP/ICMP/IGMP
    ICMP 用於交換錯誤報文,Ping和Traceroute使用ICMP
    IGMP 組管理協議,用於UDP的跨路由器組播
    ICMP/IGMP都被封裝在IP資料報中(類似TCP/UDP一樣)
    鏈路層協議:

    ARP/RARP

  3. IP:
    網路層提供的是逐跳協議,不可靠服務,TCP是在不可靠的IP層上提供可靠的運輸層
    IP的錯誤處理方法:丟棄該資料報,併發送ICMP訊息報給源端

  4. 網際網路地址分類:
    型別 開頭 網路號(bit) 主機號(bit)
    A 0 7 24
    B 10 14 16
    C 110 21 8
    D 1110 多播組號共:28位
    E 11110 (保留,共27位)

  5. 廣播地址:
    網路號和主機號全為1:受限的廣播地址,不能被路由器轉發
    有網路號,主機號為全1的:如果有固定子網號,則向該子網廣播,否則子網號為全1的,向該網路的所有子網廣播。

  6. 報頭大小:
    IP 20位元組
    TCP 20位元組(可擴充套件)
    UDP 8位元組
    ARP 28位元組

  7. 鏈路層有三個目的:
    IP資料報的傳送和接受、ARP的請求和應答、RARP的請求和應答。

  8. SLIP:序列線路IP,序列線路的速率較低,一般用於小的TCP分組交換

  9. localhost的IP地址為127.0.0.1,是A類地址,沒有進行子網劃分。

  10. 網路位元組序:
    是大端儲存,即高位位元組存在地位地址中,是由於TCP/IP首部中所有的二進位制整數在網路中傳輸都以這種次序,而我們PC機一般都是小端儲存。

  11. IP資料報大小:
    一般鏈路層都會對IP資料報進行分片,主機一般不接收超過576位元組的資料報。由於TCP是流傳輸,因此無影響,而UDP一般都限制使用者的資料報長度為512位元組。
    注意:NFS檔案系統允許超過8192位元組的IP資料報

  12. IP路由選路過程:
    1)搜尋與目的IP地址完全相同的表目;
    2)搜尋目的網路號匹配的表目;
    3)搜尋預設表目;
    4)以上都沒有,則向原地址傳送“主機不可達”或“網路不可達”的ICMP報文
    注意: 1)IP的逐跳協議,為一個網路指定一個路由器即可,這樣可以大大減少路由表的大小,比如整個Internet上的路由器只有幾千個表目;
    2)整個IP路由的過程當中,目的IP地址始終是不變的,但是每一跳的鏈路層的目的MAC地址始終都指向下一跳的鏈路層地址(且一般都是預設的)。如果是跨路由器的,那麼下一跳的MAC地址是由該網路的路由器告知的。

  13. 大多數的子網例子都是B類地址,一個包含30個子網的B類地址比30個C類地址的好處是:減小路由表的規模。因為子網對於路由器外是透明的,對於網路內部是不透明的。

  14. MAC地址是48bit,IP地址是32bit
    使用 arp -a 檢視ARP告訴快取,每一項的生存時間是20分鐘

  15. 乙太網最小長度:
    60位元組,而28位元組的ARP+14位元組的乙太網首部=42位元組,因此要填充至60位元組。

  16. TCP中client的connect的連線超時時間一般為:75s。這個時間其實是有ARP的請求時間決定的。
    重點:如何減小connect連線超時時間?
    問題分析:因為connect呼叫阻塞時,我們即時退出應用程式,也要75s後才能繼續使用,說明內部超時是在核心中工作的。我們應該在connect之前先將socket設定為非阻塞的,然後再呼叫connect,這時,無論是否成功都會立即返回,我們可以通過select的返回值判斷是否連線成功。如果socket是可讀可寫的,說明連線失敗;如果socket是可寫的,說明連線成功。注意,在連線成功後要將socket重新設定為阻塞的,為什麼?

  17. RARP作用: 由MAC地址獲得IP地址。
    有盤系統一般在系統啟動時,從磁碟上的配置檔案中讀取IP地址;而無盤系統就要通過RARP了。
    BOOTP: 解決了RARP是鏈路層協議,不能跨路由的問題。
    通常與TFTP協同工作,固化在無盤系統只讀儲存器中。
    一個無盤系統需要在只讀儲存器中實現下列協議:BOOTP、TFTP、UDP、IP和一個區域網驅動程式

  18. ICMP:
    報頭大小是不固定的,一個“UDP埠不可達”的ICMP報文大小是70位元組:
    乙太網頭(14) + IP頭(20) + ICMP頭(8) + 產生差錯(不可達)的IP頭(20) + UDP頭(8) = 70位元組
    ICMP重定向報文可以更新路由表

  19. Traceroute命令用於檢視主機到另一主機的路由,而Ping命令也有這個功能,但是Ping命令只能存9個IP地址。
    Traceroute和Ping區別:
    Ping每隔1s傳送一個包,不管是否接受到回覆;
    Traceroute直到收到應答或超時才發下一個。
    TTL一般為255,資料報每經過一個路由器就減1,直至為0時丟棄。TTL的存在為了防止資料報無休止的在網路中。
    Traceroute工作流程:首先發送TTL為1的資料報,第一個路由器將TTL減1,丟棄該資料報,然後回送超時ICMP報文,這樣就獲得了路徑上第一個路由器地址。然後傳送TTL為2、3…依次獲得路徑地址。而如何判斷到達主機呢?由於到達主機後,不會回送超時ICMP報文,所以我們傳送的源資料報中要使用一個不可能的值作為UDP埠,這樣當目的主機接收到資料報後就會回送一個“埠不可達”錯誤,這樣我們就知道到達目的主機了。

  20. IP選路可以分為靜態選路和動態選路。
    靜態選路
    1)通過route命令增加表項(通常從系統自載入程式檔案中)
    2)通過ICMP重定向生成表項(通常在預設方式出錯的情況下)
    動態選路:
    只有在 1)網路很小
    2)與其他網路只有單點連線
    3)沒有多餘路由
    三個條件都滿足時才用靜態選路,否則都是動態選路,所以顯然動態選路更常用。
    動態選路協議: 1)用於同一自治系統路由器間的內部閘道器協議(IGP)
    a)RIP 易受攻擊
    b)OSPF 客服了RIP的所有限制,廣泛使用
    2)用於不同自治系統路由器間的外部閘道器協議(EGP)
    BGP 使用TCP作為傳輸層協議
    3)無型別域間選路(CIDR):防止路由表膨脹

  21. UDP首部8位元組:
    16位源埠、16位目的埠、16位UDP長度、16位檢驗和
    TCP發生檢驗和差錯的概率比UDP高得多,因為TCP一般用於遠端連線,而UDP一般為本地通訊。
    UDP分片除了最後一片以外都是8的整數倍大小。

  22. 混雜模式:多數介面都為混雜模式,可以接收每個幀的複製,tcpdump就是這種模式。

  23. 廣播的問題:增加了對廣播不感興趣主機的處理負荷。
    解決: 使用組播
    組播: 由於多播都是D類地址,所以開頭4位為1110,且多播組號中的高5位在對映過程中被忽略,例如:
    224.128.64.32和224.0.64.32被對映為同一乙太網地址(他們的高9位相同)
    多播目前還不能在廣域網中進行。

  24. 廣播分組長度最大為1472
    原因:乙太網MTU為1500,減去20位元組IP頭和8位元組UDP頭為1472,如果是1473,由於大於MTU,會被鏈路層分片,而廣播地址是不允許被分片的,所以會返回“Message too long”錯誤。

  25. DNS指標查詢:給定IP地址,返回域名
    為了減少DNS通訊量,所有的名字伺服器都使用快取記憶體