1. 程式人生 > >五層結構 判斷兩個IP是否處於同一子網?

五層結構 判斷兩個IP是否處於同一子網?

網絡管理 主機ip .cn 文件 七層 smt 無限 可靠傳輸 log

互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層

技術分享

應用層(各種協議)
端口
HTTP-----超文本傳輸協議----- 80
FTP -----文件傳輸協議 ----- 21
DNS -----域名解析協議 ----- 53
Telnet---遠程控制協議 ----- 23
SMTP ----網絡管理協議 ----- 25

技術分享

傳輸層

基於端口進行通訊
補充:端口範圍0-65535,0-1023為系統占用端口

TCP:可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。

UDP:不可靠傳輸,”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。

tcp報文

技術分享

tcp三次握手和四次揮手

技術分享

網絡層


IP地址:網絡號(標識子網)和主機號(標識主機)兩部分

ARP協議

arp協議由來:計算機通信基本靠吼,即廣播的方式,所有上層的包到最後都要封裝上以太網頭,然後通過以太網協議發送,在談及以太網協議時候,我門了解到

通信是基於mac的廣播方式實現,計算機在發包時,獲取自身的mac是容易的,如何獲取目標主機的mac,就需要通過arp協議

arp協議功能:廣播的方式發送數據包,獲取目標主機的mac地址

判斷兩個IP是否處於同一子網?

已知IP地址172.16.10.1和172.16.10.2的子網掩碼都是255.255.255.0,請問它們是否在同
一個子網絡?兩者與子網掩碼分別進行AND運算,

172.16.10.1:10101100.00010000.00001010.00000001
255.255.255.255.0:11111111.11111111.11111111.00000000
AND運算得網絡地址結果:
10101100.00010000.00001010.00000000->172.16.10.0


172.16.10.2:10101100.00010000.00001010.00000010
255255.255.255.0:11111111.11111111.11111111.00000000
AND運算得網絡地址結果:
10101100.00010000.00001010.00000000->172.16.10.0

結果都是172.16.10.0,因此它們在同一個子網絡。

協議工作方式:每臺主機ip都是已知的

例如:主機172.16.10.10/24訪問172.16.10.11/24

一:首先通過ip地址和子網掩碼區分出自己所處的子網

技術分享

二:分析172.16.10.10/24與172.16.10.11/24處於同一網絡(如果不是同一網絡,那麽下表中目標ip為172.16.10.1,通過arp獲取的是網關的mac)

技術分享
三:這個包會以廣播的方式在發送端所處的自網內傳輸,所有主機接收後拆開包,發現目標ip為自己的,就響應,返回自己的mac


數據鏈路層

.一組電信號構成一個數據包,叫做‘幀’
.每一數據幀分成:報頭head和數據data兩部分

報頭:源地址(6字節) 目的地址(6字節) 數據類型(6字節)
數據:最短46字節,最長1500字節
數據包:報頭+數據 最短64字節,最長1518.

五層結構 判斷兩個IP是否處於同一子網?