TCP、ARP協議
阿新 • • 發佈:2021-06-21
ARP協議
'''
APR 地址解析協議,用於實現從IP地址到MAC地址的對映,即詢問目標IP對應的MAC地址
'''
arp協議的兩方面用途:
1. arp協議會把ip地址解析成mac地址
2. 根據ip以及子網標識子網地址
arp協議工作流程:
# 模擬定義一個源地址以及目標地址: # 源地址:192.168.1.10/24 # 目標地址:192.168.1.20/24 1. 通訊的第一步先拿到目標主機的ip地址和子網掩碼,即192.168.1.20/24 2. arp協議算出本機的網段以及目標主機的網段,源地址:192.168.1.0,目標地址:192.168.1.0 3. 此時的話就可以判斷出源地址與目標地址網段一致(在一個子網內),即可直接使用mac地址定位目標
交換機只有在兩種情況下才把包廣播
目標mac是:FF-FF-FF-FF-FF-FF 目標mac不存在於mac地址表中 ''' 如果在一個子網裡面,資料包的走向為: 源地址>本地交換機>目標主機 1. 如果在一個子網內進行通訊,則靠的是mac地址定位到對方在哪裡 2. 傳送arp協議的廣播包拿到目標主機的mac地址(因為我們現在有的只是目標的ip地址),格式如下 "自己的mac地址 FF-FF-FF-FF-FF-FF 192.168.1.10/24 192.168.1.20/24 資料部分" "在未得到目標mac地址的情況下,先用FF代替,然後交換機進行廣播,通過ip地址來辨別目標身份" 3. 發起真正的通訊(通過上面傳送的廣播包拿到mac地址後) "自己的mac地址 目標主機的mac地址 192.168.1.10/24 192.168.1.20/24 源埠 目標埠 資料部分" ''' # 修改上述同在一個子網內的地址 # 源地址:192.168.1.10/24 # 目標地址:101.200.10.22/24 1. 首先拿到目標主機的ip地址和子網掩碼,即172.16.1.10/24 2. arp協議算出本機與目標地址的網段是否一樣(明顯不在一個子網內) ''' 不在一個子網的話,先前的主力就從交換機變到路由器了 傳送arp協議的廣播包要先拿到閘道器的mac地址,格式如下(跟上面步驟一樣,不過把目標主機換成了閘道器): "自己的mac地址 FF-FF-FF-FF-FF-FF 192.168.1.10/24 閘道器的ip地址 資料部分" "通過上述方式獲取到閘道器的mac地址後,經由路由器轉發到目標地址,因為三層主要依靠ip協議" 真正通訊: "自己mac地址 閘道器的mac地址 192.168.1.10/24 101.200.10.22/24 源埠 目標埠 資料部分” '''
二層隔離和三層隔離
主要針對於子網劃分
- 二層隔離: 即使用不同的交換機來劃分不同的區域網
- 三層隔離: 主要是通過更改子網掩碼來實現邏輯上的子網劃分
總結
- 二層隔離與三層隔離要保持一致
- 二層聯通,三層可以隔離,即兩臺計算機接入一臺交換機,但不一定在一個子網內
IP地址與子網劃分基礎知識
根據tcp/ip協議,連線在internet上的每個裝置都需要有ip地址,它是一個32位二進位制數,也可以用點分十進位制來表示,每八位一組,用一個十進位制表示即0~255,每組用'.'隔開。例如:172.16.1.1
- 特殊的IP地址
"IP地址被分為常用的A類(1126),B類(128191),C類(192~223);還有不經常用的D和E類"
廣播地址: 主機號部分全為1(即255)的ip地址稱之為廣播地址,如192.168.1.255
有限廣播地址:指的是32位全為1(255.255.255.255)的ip地址,用於本網廣播
網路地址:主機號全為0的ip地址稱之為玩過地址,如172.16.45.0就是一個B類的網路地址
迴環地址:127.0.0.1即自己本機網路,用於迴路測試
私有地址:只能在區域網中使用,有以下幾種:
1. 10.0.0.0----10.255.255.255 1個A類
2. 172.16.0.0----172.31.255.255 16個B類地址
3. 192.168.0.0----192.168.255.255 256個C類地址 - 子網掩碼
"子網掩碼用來識別ip地址中的網路地址和主機地址"
"子網掩碼也是32位二進位制數字,在子網掩碼中,對應與網路地址部分全用1表示,主機部分用0表示" - 子網劃分
"子網劃分與vlam都可以做到隔離廣播域,子網是劃分三層隔離,vlan是二層隔離"
優點:減少網路流量,提高網路效能,簡化管理,易於擴大地理範圍
TCP三次握手以及四次揮手
三次握手(主要用來建立雙向連結):
1. 客戶端傳送連結請求;此時客戶端得狀態為syn_sent
連結過程由syn=1表示,為了安全起見將隨機產生一個序列號即:seq=x
2. 服務端確認連結請求,並同時向客戶端傳送連線請求,此時服務端得狀態為syn_RCVD
連結過程由syn=1表示,ack=1+x表示迴應和迴應的序列號,seq=y重新生成一個序列號
3. 客戶端確定連結請求,此時客戶端狀態為ESTABLISHED,服務端接收到狀態也為ESTABLISHED
連結過程只有客戶端的迴應操作,即ack=1+y.
經過以上三個步驟後,雙向連結已經建立,之後便可正常傳輸資料
四次揮手(用來斷開雙向連結)
1. 客戶端傳送斷鏈請求;此時客戶端狀態為fin_wait_1
斷鏈過程由fin=1表示
2. 服務端確認斷鏈請求;此時服務端狀態為close_wait,客戶端狀態為fin_wait2,此時第一條連結已斷
迴應過程由ack=1表示
3. 服務端傳送第二條的斷鏈請求,此時服務端狀態為last_ack,
請求狀態由fin=1表示
4. 客戶端確認請求;此時客戶端的狀態為time_wite
迴應過程由ack=1表示