数据链路层目的是建立在物理层基础上,通过一些数据链路层协议,在不太可靠的物理链路上实现可靠的数据传输。即数据链路层提供网络中相邻节点之间可靠的数据通信。
数据链路层的主要功能是为网络层提供连接服务,并在数据链路连接上传送帧。依据功能可以分为有连接和无连接两种。本实验采用的是有应答,无连接服务。 无连接服务时,发送方的数据链路层要发送数据时,就直接发送数据帧。接收方的数据链路层能够接受数据帧,或者收到的帧校验正确,就像源主机数据链路层发送应答帧;不能接受或接受到的帧校验不正确时,就返回否定应答,发送端要么重发原帧,要么进入等待状态。
在数据链路层主要是负责传输数据,有很多种协议,用的最多的是局域网中的以太网协议,和广域网中的PPP协议,HDLC协议
Ethereal软件抓包原理
1.首先数据会根据应用(比如WEB应用是采用TCP协议)进行传输层的封装,封装TCP的报文数据,而TCP报文是根据源,目端口通信的,也就是说此端口号来标识我们计算机应用层中哪个应用!比如我们的计算机发次HTTP连接,我们的计算机会随机取一个端口号,而目的端口会封装80(假如目的WEB服务器采用默认端口),目标主机收到此份数据,就会知道原来这份数据是交给我的HTTP应用的!
2.再次进行网络层的封装,里面会包含控制位,来说明此份数据报文是采用哪种传输层协议,比如TCP为0X06,这里会有源,目IP地址的封装。
3.最后进行数据链路层封装,也就是2层,里面会有TYPE字节来指示我上层封装的是哪种网络层协议,比如IP就为0X0800,然后进行的源,目MAC地址封装,此地址用来在以太网网络中寻址的。
这样一份数据包就完成了
原文地址:http://12045330.blog.51cto.com/12035330/1856888