TCP/IP系列之數據鏈路層
數據鏈路層是TCPIP4層協議中最底層的協議,它的主要功能為:
為IP模塊發送和 接收IP數據報。
為ARP模塊發送ARP請求和接收ARP應答。
為RARP發送RARP請 求和接收RARP應答
數據鏈路層的協議一般有以太網(目前最常用的)、令牌環網、F D D I(光纖分布式數據接口)
及R S-2 3 2串行線路等。 .
數據從IP層傳到數據鏈路層在經過底層物理線路傳輸的示意圖如下:
數據在一台網傳輸的時候是以以太網數據幀的格式傳輸的,在令牌環網則以令牌環網協議規定
的數據格式進行傳輸,連接兩個異構網絡的路由器負責轉換.不過目前在數據鏈路層絕大多數都是
以太網.(如果是在同一個局域網內,則沒有路由器IP路由)
下面是以太網RFC 894規定的以太網幀的格式:
下面是用Wireshark抓取的一個以太網幀:
RFC 894要求數據幀最小為60字節(48字節數據+12字節頭),為了保證這一點,
必須在不足的空間插入填充pad字節.
同時每一種數據鏈路層協議,都有一個MTU(最大傳輸單元)定義,
在這個定義下面,如果IP數據報過大,則要進行分片(fragmentation).
下圖是在linux下用netstat -in看到的eth0的MTU為1500字節.
環回接口(loopback)概念,大多數的產品都支持環回接口( Loopback Interface),以允許運行在同一台主機上的客戶
程序和服務器程序通過TCP/IP進行通信.A類網絡號127就是為環回接口預留的.根據慣例,
大多數系統把IP地址127.0.0.1分配給這個接口,並命名為localhost.一個傳給環回接口的IP數
據報不能在任何網絡上出現. .
我們想象,一旦傳輸層檢測到目的端地址是環回地址時,應該可以省略部分傳輸層和所
有網絡層的邏輯操作.但是大多數的產品還是照樣完成傳輸層和網絡層的所有過程,只是當
IP數據報離開網絡層時把它返回給自己.
1) 傳給環回地址(一般是127.0.0.1)的任何數據均作為I P輸入。
2) 傳給廣播地址或多播地址的數據報復制一份傳給環回接口,然後送到以太網上。這是
因為廣播傳送和多播傳送的定義包含主機本身。
3 ) 任何傳給該主機I P地址的數據均送到環回接口。
*通過ping 127.0.0.1可以檢測本機的TCP/IP是否工作正常.
*不僅僅是127.0.0.1代表本機,127開頭的合法IP都代表本機,如127.12.13.1
在JDK提供的API中通常不能對鏈路層進行操作,可以通過jpcap來操作ARP包.
參看 http://blog.csdn.net/kkdelta/article/details/7717930
作者 kkdelta