网络编程-TCP/IP协议栈-IP协议
協議
- 協議就是約定的一種規則,例如撲克游戲中約定好的各種規則,2<3<4<5<…等,以此作為游戲規則。當所有人都遵循這個規則,那么久可以不需要任何多余的交流就可以進行游戲,這個方式形成的約定就是一種協議。
TCP/IP協議簇
-
互聯網早期無法進行大規模的通信使用,因為大家雖然都懂計算機的鏈接原理,但是每個人的鏈接方式都不同,所以造成這種情況。當時就衍生出了很多為了解決當前問題的協議,比如TCP協議約定大家使用TCP鏈接時候傳輸的一種協議,HTTP協議則約定了文本傳輸的一種協議。
-
TCP/IP協議并不是指某一個具體的協議,它是指一系列的協議棧,因此也叫TCP/IP協議棧或者TCP/IP協議簇
-
在TCP/IP協議簇中,定義了包含對應OSI模型的每一層,上一篇中有過一個簡單模型的說明。以下對OSI模型層做了細化說明處理,如下圖:
-
如上圖中OSI模型的七層協議,在TCP/IP中使用四層代替。
-
在TCP/IP協議簇中每一層都有對應的協議,最終組成協議簇,上一篇也有解釋,但是是一個簡單版本的,一下圖列出了TCP/IP四層中的每個協議所在位置:
-
如上圖所示,我們常看到的TCP,UDP在協議棧的傳輸層,而IP協議則在協議棧的網際層,還有出現次數特別多的HTTP協議是在協議棧的應用層。
-
TCP/IP協議棧被分作多個層級,目的是為了整理硬件之間通信時的一個通用的模型,每一個層級都按照指定的協議與上下層進行信息交換,上一篇中也有一個簡單的說明,我們用如下圖來表示
-
通過上圖歸納來一下上一篇中介紹的幾個層級,也就是TCP/IP協議的總體概念,但是氣內部還有很多的協議,我們介紹幾個比較常見的
- IP協議
- TCP協議
- UDP協議
- HTTP協議
IP協議
- IP協議處于TCP/IP協議簇的網際層。它提供不可靠的,無連接的服務,而且必須依賴其他層協議進行差錯控制。在局域網環境,IP協議往往被封裝在以太網幀中傳送。而所有的TCP,UDP,ICMP,IGMP數據都被封裝在IP數據報中傳送。在IP協議中,有兩個重要的內容,一個是IP地址概念,一個是IP協議報頭
IP地址
-
對應IP地址我們日常中接觸到很多,他給每個接入互聯網的計算器一個地址,從而使得其他計算機能夠訪問到他。與此同時,當計算機有了地址之后,才能遵循IP協議,和其他計算機進行數據的傳遞。
-
IP現有目前有兩種IPV4,IPV6,IPV4占用32bit,而IPV6則是32字節,128bit,IPV6可用的數量是比較大的,用來解決IPV4 不夠用的情況。以IPV4 為案例
-
IPV4的32bit地址中分為兩個部分:網絡號和主機號。同時根據不同開頭可以分為五類A,B,C,D,E
-
網絡號用于區分不同的網絡點,比如我們公司就是一個網絡的集群,我們可以通過他的網絡號碼確認該公司的網關,在通過主機號碼確認每一臺計算機。
-
例如一個C類IP地址類型,包含21為網絡號碼,實際就能區分2^21 個網絡號碼,而每一位網絡號可以區分2 ^ 8 - 2 = 254個主機(起始網絡地址和最后一個為廣播地址都不可用于主機)每個網絡好修改一位,即使后面八位一樣 那也是表示在不同網絡號碼下的不同主機,只不過這些主機的編碼正好相同罷了,還是在不同的IP地址下。如果一個網吧采用這種方式,那么他最多能安裝254臺機器,如果想要更多的主機號,應該延長主機號的位數,但是相應網絡號的也會減少,因為總長度是不變的
-
我們通過子網掩碼能夠改變網絡號的主機號尾數。通常的掩碼類似:
二進制表示:
11111111.11111111.11111111.00000000- 如果一個IPV4地址:192.168.1.1,那么IP地址和掩碼經過與(&)運算后的結果為:192.168.1.0(192.168.001.000),這個就是我們常說的網關。
- 從192.168.1.1~ 192.168.1.254 都可以作為主機號碼,也即是這個網關下,可以容納254臺機器,如果將掩碼改為:
- 那么與ip192.168.1.1 進行與(&)運算的結果: 192.168.0.0,這個時候使用的主機號碼變成來192.168.0.0~192.168.1.254 ,即可以容納510 臺機器。
IP尋址
- 當一個IP包從一臺計算器被發送,他會到達一個IP路由器。
- IP路由器負責將這個包路由到他的目的地,直接或者通過其他路由器中專。
- 在一個相同的通信中,一個包進經過的路徑可能會和其他包不一樣。而路由器負責根據通信量,網絡中的錯誤,或者其他參數來進行正確尋址
IP協議的報頭
- 上面的數據分層中,我們看到IP協議的構成實際上是IP報頭 + TCP協議內容,
- 因此決定一個IP協議屬性的關鍵是IP報頭的內容。
- 下面我們來看IP協議的組成,IPV4 中普通的IP首部長20字節,其中32位的源IP地址和32位目的IP地址
- TTL生存時間,代表數據包可以進過最多路由次數,比如TTl是10 ,意思是經過10此路由轉發還沒到到達,則報文丟棄。
- 8位上層協議指的是傳輸層承載的協議
- 16數據報長度:指IP數據包的最大長度,16bit那么最長可以65535字節。但是通過鏈路的MTU不會有這么大,因此,如果數據包長度超過MTU,數據包會被分片。如果發生來分片,則需要用到16位表示以及13位分段偏移來找到分片的報文
上一篇 網絡編程-網絡分層的意義
下一篇 網絡編程-TCP/IP協議棧-TCP協議
總結
以上是生活随笔為你收集整理的网络编程-TCP/IP协议栈-IP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拔罐几天一次最好
- 下一篇: 网络编程-TCP/IP协议栈-TCP协议