1.TCP/IP中鏈路層的附加數據是什么
在用wireshark打開報文時,鏈路層顯示的Trailer數據就是附加數據,如圖

2.如何產生
1.例如以太網自動對小於64字節大小的報文進行填充(未實驗)。
2.使用鏈路層套接字寫數據時,實際數據大小 > (ip頭標示報文大小 + 鏈路層頭部)
3.生存周期
測試:使用套接字發送帶Trailerr數據的報文,看收端是否可以收到。
IP層SOCK_RAW套接字
1.內網 可以攜帶Trailerr數據
2.外網 丟包(路由器所為?)
鏈路層SOCK_PACKET套接字
1.內網 截斷Trailer數據(交換機所為?)
2.外網 截斷Trailer數據(交換機所為?)
4.作用
假設二層交換機下有2個設備A和B
1.增添了一條操作系統與外界通信的額外通道
試想下,怎么在協議不支持的情況下從A設備處獲得B設備的系統時間?
在B設備向A設備發數據時(任何協議),把自己的系統時間寫到附加數據中,A使用鏈路層套接字(比如tcpdump使用的套接字)獲取鏈路層數據就可以對
附加數據做解析。
2.控制上層應用程序的行為
應用程序的行為被收到的報文所影響,應用程序收報文的大致流程如下:
網卡收到報文->內核處理->TCP/IP協議棧處理->上層應用
可見內核處理可以對報文進行篡改(例如iptables的mangle),來”欺騙“應用程序。
例如上層應用只對特定ip進行服務,比如1.1.1.1,如果是來自2.2.2.2的請求會被拒絕掉,不改變上層應用
行為的前提下,可以在內核處對報文進行修改,把2.2.2.2修改為1.1.1.1(當然,應用程序發包時內核也要把1.1.1.1修改為2.2.2.2)
而附加數據的作用是為這種報文修改提供策略或依據。
