TCP/IP系列之数据链路层 数据链路层是TCPIP4层协议中最底层的协议,它的主要功能为: 为IP模块发送和 接收IP数据报。 为ARP模块发送ARP请求和接收ARP应答。 为RARP发送RARP请 求和接收RARP应答 数据链路层的协议一般有以太网(目前最常用的)、令牌环网、F D D I
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字节.

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 (文章内容如有侵权,敬请来信告知,我们将及时撤销)