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