TCP/IP系列之数据链路层
数据链路层是TCPIP4层协议中最底层的协议,它的主要功能为:
为IP模块发送和 接收IP数据报。
为ARP模块发送ARP请求和接收ARP应答。
为RARP发送RARP请 求和接收RARP应答
数据链路层的协议一般有以太网(目前最常用的)、令牌环网、F D D I(光纤分布式数据接口)
及R S-2 3 2串行线路等。 www.VeVB.com
数据从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数
据报不能在任何网络上出现. www.VeVB.com
我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所
有网络层的逻辑操作.但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当
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