1.ARP協議
地址解析協議(Address Resolution Protocol)
已知對方的三層ip地址,需要二層mac地址
?當一臺設備(請求方)需要知道某個 IP 地址對應的 MAC 地址時,會使用 ARP封裝一個數據幀。這臺設備的網絡層以自己的 IP 地址作為源 IP 地址、以目的設備(被請 求方)的 IP 地址作為目的 IP 地址、以自己的 MAC 地址作為源 MAC 地址、以廣播 MAC 地址作為目的 MAC 地址,在本地網絡中發送一個 ARP 廣播消息,其目的是在本地網絡 中尋找數據包目的 IP 地址對應的 MAC 地址.
工作過程
1) 主機A首先查看自己的ARP表,如果ARP表中含有主機B對應的ARP表項,則主機A直接利用ARP表中的MAC地址,對IP數據包進行幀封裝,并將數據包發送給主機B。
(2) 如果主機A在ARP表中找不到對應的MAC地址,則將緩存該數據報文,然后以廣播方式發送一個ARP請求報文。ARP請求報文中的發送端IP地址和發送端MAC地址為主機A的IP地址和MAC地址,目標IP地址和目標MAC地址為主機B的IP地址和全0的MAC地址。由于ARP請求報文以廣播方式發送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即主機B)會對該請求進行處理。
(3) 主機B比較自己的IP地址和ARP請求報文中的目標IP地址,當兩者相同時進行如下處理:將ARP請求報文中的發送端(即主機A)的IP地址和MAC地址存入自己的ARP表中。之后以單播方式發送ARP響應報文給主機A,其中包含了自己的MAC地址。
(4) 主機A收到ARP響應報文后,將主機B的MAC地址加入到自己的ARP表中以用于后續報文的轉發,同時將IP數據包進行封裝后發送出去。
免費ARP
功能:重復地址探測
主機被分配了IP地址或者IP地址發生變更后,必須立刻檢測其所分配的IP地址在網絡上是否是唯一的,以避免地址沖突。主機通過發送ARP Request報文來進行地址沖突檢測。
當以一臺設備的接口由 down-> up 的瞬間向同一局域網內的設備發送一個arp 報文。
源ip:本機ip
源mac:本機mac
目標mac:ff:ff:ff
目標IP:本機IP
??
為了檢驗局域網下是否由相同的ip?
代理arp
?代理ARP(Proxy-arp)的原理就是當出現跨網段的ARP請求時,路由器將自己的MAC返回給發送ARP廣播請求發送者,實現MAC地址代理(善意的欺騙),最終使得主機能夠通信。
?把AR2的兩個接口開啟代理arp,ar1就能訪問到ar3了,但其實是只能訪問到AR2,借助AR2訪問對方。
2.ping 過程
成幀:一個數據若想被發送出去,那么這個數據必須完成數據幀格式的封裝(成幀)否則,沒有資格被發送出去
數據ping過程
- 發送方先封裝數據包,由于數據包需要目標MAC
- 先在自己的arp表中找,如果沒有
- 發送一個廣播的arp,尋找目標的mac
- 目標收到后,發送響應arp,發送發獲取到mac
- 封裝數據發送數據.
3.傳輸層TCP/UDP
1.TCP?
TCP全稱傳輸控制協議,必須對數據的傳輸進行控制。
tcp數據包
三次握手
第一次握手:當計算機 A 想要和計算機 B 建立連接時,會封裝一個數據段,該數據段
的 SYN 位置位,表示計算機 A 希望與計算機 B 建立連接。此時 TCP 為序列號字段隨機
生成一個值來代表第 1 個數據字節的序列號,這里用 a 表示;ACK 未置位,確認號為 0。
第二次握手:當計算機 B 收到數據段時,會封裝一個數據段。這個數據段的 SYN
位和 ACK 位都置位,因為計算機 B 既需要確認計算機 A 的建立連接請求,又需要向
計算機 A 請求連接。SYN 位置位,TCP 為序列號字段隨機生成一個值來代表第 1 個數
據字節的序列號,這里用 b 表示。ACK 位置位,確認已接收序列號為 a 的數據段。
但是,該數據段沒有數據部分,因此計算機 B 等待接收的是下一個數據段,即確認
號為 a+1。
第三次握手:當計算機 A 收到 SYN, ACK 數據段時,會封裝一個 ACK 數據段來確認
計算機 B 的建立連接請求。這個數據段的 SYN 位未置位,因此序列號字段不再隨機生成,
而是計算機 B 第二次握手中的確認號,即 a+1;ACK 位置位,確認接收到序列號為 b 的
數據段,即確認號為 b+1。
四次握手
第一次握手:當計算機 A 想要與計算機 B 斷開連接時,會封裝一個 FIN 數據段, 表示之后沒有數據要傳輸了。該數據段的 FIN 置位,表示計算機 A 希望斷開和計算機 B
之間的連接。
第二次握手:當計算機 B 收到 FIN 數據段時,會封裝一個 ACK 數據段來確認計算 機 A 的斷開連接請求。
第三次握手:同時,計算機 B 也需要封裝一個 FIN 數據段來發起斷開連接請求,并且把該數據段發送給計算機 A。
第四次握手:計算機 A 使用 ACK 數據段確認自己收到計算機 B 發來的 FIN 數據段
?seq:信息發送的次序,
ack:確認信息,ack=M+1:表示 seq=M的數據包已經收到,要接受M+1的數據包了ack對seq的回復
UDP?
UDP全稱為用戶數據報協議。UDP 為應用程序提供了一種無需建立連接就可以發送封裝的 IP?數據包的方法
UDP數據包
小白一枚,水平有限,如有錯誤,歡迎指教。。。