ICMP協議(Internet Control Message Protocol),Internet控制報文協議,其做用就是探測網絡鏈接,該協議提供了簡單的出錯報告信息,發送的出錯報文會返回到發送數據的源端,發送端隨後可根據ICMP報文肯定發生錯誤的類型,並肯定如何才能更號地重發失敗的數據包。須要注意的是ICMP只負責報告錯誤,而如何處理特定的錯誤,則由發送端本身決定。算法
(1)版本:對於IPv4版本的IP協議來講,其值是4服務器
(2)首部長度:用於指定當前IP頭部的總長度(單位爲32位),因爲該字段爲4位,因此最大十進制爲15,IP協議頭部的總長度爲15*32/8 = 60字節網絡
(3)服務類型:用於分配優先級、延遲、吞吐量以及可靠性,該字段的最高3bit用於定義IP優先級,能夠定義8種不一樣的服務優先級。其次第3到第6bit用於定義最低延遲、最高吞吐量、可靠性和最小開銷,而最後1bit則必須置0,注意,第3至第6bit的定義中,至多隻能有一位置1,應用程序須要根據特定需求來進行置位分佈式
(4)長度:定義整個IP數據報的總字長server
(5)認證:用於對IP數據報進行惟一標識,其值從一個隨機數開始,隨着發送的IP數據報每次加1,不過,對於字長超過MTU的IP數據報,拆分後發送的數據報具備相同的認證blog
(6)標誌:該字段長度爲3位,第一位爲保留字段,第2位置1則表示禁止對IP數據報拆分,若是將該位置置爲1,那麼網絡層將不會對IP數據報進行拆分,取而代之的是返回一個ICMP差錯報文,第3位表示是否含有更多的分片,除了最後一個分片之外,其它IP數據報都應該置爲1路由
(7)段偏移量:表示分片相對於原始IP數據報開始處的偏移量get
(8)TTL:用於指定數據報到達目的地以前容許通過的最大路由跳數同步
(9)協議:表示當前上層所使用的協議類型it
(10)校驗和:經過CRC算法計算出來,用於檢查接收到的數據是否正確
(11)源IP地址
(12)目的IP地址
(13)選項:40字節
肯定了路由以後,將IP報文封裝成數據鏈路層的幀並轉發到對應端口上。
路由匹配規則:
(1)路由最長匹配原則:咱們優先選擇子網掩碼最長的路由表項進行匹配,由於掩碼越長,表示網絡號越長,表明其網絡範圍越小,越精確
(2)路由迭代查找原則
(3)默認路由匹配原則:在路由器中加入一條IP地址和子網掩碼均爲0.0.0.0的路由表項
子網掩碼的有趣解釋:
做者:車小胖
連接:https://www.zhihu.com/question/56895036/answer/150953183
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
從前有一個地主,有256間房子,地主家的門牌號碼是「192.168.1」,那麼他家第一間房子的門牌號碼是192.168.1.0,第二間是192.168.1.1,…第256間的編號是192.168.1.255。
地主老了,須要把256間房子分給4個兒子,平均分配,每一個兒子能夠分64間。
請來一位先生主持公道,先生這麼來操做:
192.168.1.0-192.168.1.63 分給大兒子
192.168.1.64-192.168.1.127 分給二兒子
192.168.1.128 -192.168.1.191 分給三兒子
192.168.1.192-192.168.1.255 分給四兒子那如何來描述四個兒子的子網網段呢?
192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26/26是什麼鬼?
255.255.255.192的二進制是多少? 「11111111-11111111-11111111-11」你們數數一共多少個1?不用數了,是26個1,爲了簡化子網掩碼的表示,用/26代替255.255.255.192。按位與運算
咱們來看大兒子的網段192.168.1.0/26是如何獲得的?以大兒子的房間爲例:
192.168.1.0-192.168.1.63二進制表示:
192.168.1.011000000.10101000.00000001.00000000
192.168.1.63
11000000.10101000.00000001.00111111
首尾地址徹底相同的是多少?
11000000.10101000.00000001.00數數一共多少位?26位!那麼用這個「192.168.1.0/26」就能夠表示大兒子全部房間。
對照房間的門牌號碼「192.168.1.199」,很顯然屬於四兒子的。
一個主機192.168.1.199/26 可否和直連主機192.168.1.200/24 通訊?能夠的,由於都是四兒子的房間。
一個主機192.168.1.199/26 可否和直連主機
192.168.1.1/24 通訊? 不能夠, 由於一個是大兒子的房間,一個是四兒子的房間,沒法直連通訊!
TCP協議是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議,TCP協議支持超時重傳和確認機制,確保了發送消息的可靠性
A. 3次握手協議
(1)第一次握手:創建鏈接時,客戶端發送SYN包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號
(2)第二次握手:服務器收到SYN包,必須確認客戶SYN(ack=j+1),同時發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態
(3)第三次握手:客戶端收到SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP鏈接狀態),完成3次握手
B. 4次分手協議
(1)第一次分手:主機1(能夠是客戶端也能夠是服務器),設置Sequence Number和Acknowledge NUmber,向主機2發送一個FIN報文段;此時主機1進入FIN_WAIT_1狀態,這表示主機1沒有數據要發送到主機2
(2)第二次分手:主機2收到主機1發送的FIN報文段,向主機1回覆一個ACK報文段,Acknowledgment Number爲Sequence Number加1;主機1進入FIN_WAIT_2狀態,主機2告訴主機1,爲贊成你的關閉請求
(3)第三次分手:主機2向主機1發送FIN報文段,請求關閉鏈接,同時主機2進入CLOSE_WAIT狀態
(4)第四次分手:主機1收到主機2發送的FIN報文段,向主機2發送ACK報文段,而後主機1進入TIME_WAIT狀態,主機2收到主機1的ACK報文段之後就關閉鏈接,此時,主機1等待2MSL後依然沒有收到回覆,證實server端已正常關閉,那號,主機1也能夠關閉鏈接了