unix網絡編程-附錄A:IP ICMP

背景

這篇是unix網絡編程的學習筆記。編程


ip層協議,無鏈接,不可靠。因此必須依賴上層協議實現鏈接和可靠,好比tcp。網絡

鏈接指創建鏈接,可靠指基於鏈接的通訊纔是可靠的。好比,udp,就不須要創建鏈接,它只管發送數據,有沒有收到無論,因此也說它不可靠,只要沒有創建鏈接通訊,就是不可靠。**但是,不創建鏈接怎麼通訊呢?**特別注意,這裏說的不創建鏈接,不是真的不創建鏈接,而是創建的鏈接是一次性的,不是長期關係,長期鏈接,好比tcp是長期鏈接長期通訊,只要不主動close()就能夠一直通訊。而udp不行,udp只管創建鏈接,發送數據,而後鏈接結束。udp建立鏈接也是建立socket,這個都是同樣的,不一樣的傳輸層協議包括tcp udp icmp都是經過建立套接字來實現的,只不過不一樣的參數選項而已。socket

ip層只負責源地址和目的地址,還有數據。ip路由協議的主要目的是路由數據。tcp

可靠

可靠性包括幾點
1.無差錯
2.按順序
3.不重複學習

ip數據報文

最重要的字段
1.數據
2.源地址
3.目標地址操作系統

重點關注前面三個字段。3d

4.數據的大小
就是整個報文的數據大小。知道大小,讀數據的時候就知道何時結束。unix

5.惟一標識符
惟一標識該數據報文。由於可能重複,因此寫讀的時候根據這個要去重。cdn

6.協議
最多見的是tcp仍是udp。
還有icmp(internet control message protocol網絡控制消息協議),好比ping telnet traceroute等,使用的就是icmp協議。blog


知道了咱們須要哪幾個核心字段,再來看ip協議的細節是怎麼包含這幾個核心字段的。ip數據報文,包括兩部分:
1.頭
2.數據

頭就是和http請求頭/響應頭同樣,屬於協議的格式部分,有了這些字段,才能識別是什麼協議。

頭字段的圖

對頭字段的圖的說明,總共包括兩部分:
1.固定字段
2.選項字段

固定字段總共佔20個字節,上圖的每一行是32位(即佔4個字節),總共5行,因此總共恰好是20個字節。

選項長度不固定,最大值是40個字節。由於固定字段裏有個長度字段限制了頭的總長度。

固然,還有一部分,就是數據自己,這個不提略過。

icmp協議

是傳輸層協議,和tcp udp同層級。

報文格式


做用
用於肯定兩臺機器是否能夠通訊,若是不能通訊,是由於哪些緣由。

報錯信息如圖


imcp協議如何通訊?
也是套接字,不過是原始套接字,你就記住是兩套機制,雖然都是套接字。可是,使用的時候差很少,建立原始套接字的時候,只是參數不一樣,有個字段標識這是原始套接字。

原始套接字用於ping程序,不須要端口,至關因而兩臺機器操做系統之間的通訊,而不是某個具體的程序,因此不須要端口。

參考

unix網絡編程

相關文章
相關標籤/搜索