1.學習ARP前要了解的內(nèi)容
建立TCP連接與ARP的關(guān)系
應(yīng)用接受用戶提交的數(shù)據(jù),觸發(fā)TCP建立連接,TCP的第一個SYN報文通過connect函數(shù)到達IP層,IP層通過查詢路由表:
如果目的IP和自己在同一個網(wǎng)段:
當IP層的ARP高速緩存表中存在目的IP對應(yīng)的MAC地址時,則調(diào)用網(wǎng)絡(luò)接口send函數(shù)(參數(shù)為IP Packet和目的MAC))將數(shù)據(jù)提交給網(wǎng)絡(luò)接口,網(wǎng)絡(luò)接口完成Ethernet Header + IP + CRC的封裝,并發(fā)送出去;
當IP層的ARP高速緩存表中不存在目的IP對應(yīng)的MAC地址時,則IP層將TCP的SYN緩存下來,發(fā)送ARP廣播請求目的IP的MAC,收到ARP應(yīng)答之后,將應(yīng)答之中的<IP地址,對應(yīng)的MAC>對緩存在本地ARP高速緩存表中,然后完成TCP SYN的IP封裝,調(diào)用網(wǎng)絡(luò)接口send函數(shù)(參數(shù)為IP Packet和目的MAC))將數(shù)據(jù)提交給網(wǎng)絡(luò)接口,網(wǎng)絡(luò)接口完成Ethernet Header + IP + CRC的封裝,并發(fā)送出去;。
如果目的IP地址和自己不在同一個網(wǎng)段,就需要將包發(fā)送給默認網(wǎng)關(guān),這需要知道默認網(wǎng)關(guān)的MAC地址:
當IP層的ARP高速緩存表中存在默認網(wǎng)關(guān)對應(yīng)的MAC地址時,則調(diào)用網(wǎng)絡(luò)接口send函數(shù)(參數(shù)為IP Packet和默認網(wǎng)關(guān)的MAC)將數(shù)據(jù)提交給網(wǎng)絡(luò)接口,網(wǎng)絡(luò)接口完成Ethernet Header + IP + CRC