我們編寫的程序是處於應用層,當使用 sendto 函數發送 UDP 報文時,指定了目標的 IP 和端口,傳輸層會將應用層數據進行打包,裏面包含了源端口號和目的端口號,再到下面是IP層,IP層在處理時會將源IP與目的IP填入並進行打包,接著是到數據鏈路層打包,會填寫源端和目的端的MAC地址。
網絡通訊是遵守對等層通訊的,接收方會按相反的順序依次往上解包,最終送達應用層。
而應用層在調用了 sendto 發送數據後,所有後續的均是由 TCP 協議棧自動實現的。
當然,ARP報文自然也是由協議棧自己處理的。