MTU:一個網絡包的最大長度,以太網中一般是1500字節;(含有頭部長度,包括IP頭部,TCP頭部,不包括MAC頭部)
MSS:除去頭部后,一個網絡包所能容納的TCP的數據的最大長度
下圖為TCP/IP軟件的分層結構:
其中,IP中ICMP協議用於告知網絡包傳送過程中產生的錯誤及各種控制信息,ARP協議用於根據IP地址查詢相應的以太網的MAC地址。
TCP模塊在執行連接、收發、斷開等各階段的操作中,都需要委托IP模塊將數據封裝成包發送給通訊對象。
下面介紹一下網絡包的一些基本知識:
包是由頭部和數據兩部分組成。
頭部包含目的地等控制信息,頭部后面就是委托方要發給對方的數據。
下面是TCP/IP包的結構:
簡單區分一下路由器和集線器的區別:
它們在傳輸網絡包的時候有各自的分工:
1、路由器是根據IP規則傳輸包的設備,根據目標地址判斷下一個路由器的位置
2、集線器是按照以太網規則傳輸包的,在子網中將網絡包傳到下一個路由。
下圖是包收發操作的整體過程:
包收發操作的起點就是TCP模塊委托IP模塊發送包的操作,這個委托的過程就是在TCP模塊在數據塊的前面加上TCP頭部,然后整個傳遞給IP 模塊,這部分就是網路包中的內容。
與此同時,TCP模塊還需要指定通信對象的IP地址,收到委托后,IP模塊會將包的內容當做一個整塊數據,在前面加上包含控制信息的頭部。
IP模塊會添加IP頭部和MAC頭部這兩個,其中,IP頭部中包含IP協議規定、根據IP地址將包傳送到目的地的控制信息;MAC頭部包含通過以太的局域網將包傳輸至最近路由器所含的控制信息。
IP頭部包含很多控制信息,其中重要的是包將發送到哪里的IP地址,這是應用程序提供的;IP頭部中還需要填寫發送方的IP地址,需要IP模塊利用路由表進行判斷,即判斷發送使用的網卡。
MAC地址是在網卡生產時寫在ROM里面的,是全世界唯一的一串地址,是生成網卡時寫入的,根據IP地址查詢MAC地址。
我們通過ARP協議查詢目標路由器的MAC地址,發送廣播來查詢即可:問:**IP地址是誰的? 答:**IP地址是我的,我的MAC地址是**。為了防止網絡中增加很多ARP包,我們會有一個ARP緩存空間中保存查詢到的MAC地址。