以太网帧格式

来源:互联网 发布:Ubuntu gnu grub 编辑:程序博客网 时间:2024/06/07 14:59

首先我们知道:描述一个网络中各个协议层的常用方法是使用

国际化标准组织(International  Organization  for  Standardization  , ISO)的

计算机通信开放系统互联(open  systems  interconnection , OSI)模型


在众多的数据链路中,使用最为广泛的是以太网,易于实现NIC(网卡)及驱动程序,当然还有其它的:(令牌环网,IEEE  802.3    )



传输层的主要有(TCP和UDP),可以看到网际协议中tcp/udp之间留有间隙,表明网络应用绕过传输层直接使用IPv4,IPv6是有可能的,着也就是所谓的原始套接字(raw  socket)

网络层的协议(ICMP, IP, IGMP)

然而对于(ARP地址解析协议,   RARP反向地址解析协议),我们习惯上把它们认为是链路层的协议,实际上,从分层的角度来看,更准确的说是,(应该是一种介于网络IP层与链路层之间的一种协议)


帧(frame):是数据链路层的单位

最大传输单元(MTU):Maximum Transmission  Unit

以太网的最大传输数据长度是:1500字节

IEEE 802.3的最大传输数据长度是:1492字节



要了解以太网帧格式,首先我们必须知道

封装

不管是tcp/ip四层模型还是ISO/OSI模型:数据包传输的过程,会有不断加首部的过程,在传输层会加入(TCP或UDP首部),在网络层可能会加入(IP包首部),在链路层可能会加入以太网首部

解封

当通过电缆传递过来后,首先对以太网首部解析,识别上一层是IP包首部,则会将其继续发往上一层,交由网络层的ip协议继续进行解析,识别上一层是tcp首部(如果是udp的话,则交由传输层的udp协议进行解析,这也就是分用),则继续交由传输层的tcp协议进行解析,然后将数据传回应用层,完成通信


当加入了以太网首部之后:也就形成了一种特有的格式(以太网帧格式)


前导码(8个8位字节,由0,1数字交替组合而成,表示一个以太网帧的开始,也是对端网卡能够确保与其同步的标志)

前导码末尾有一个叫做SFD(Start  Frame  Delimiter),它的值是11,但是在IEEE 802.3中将最后8比特成为SDF


                                                   

目标mac地址(6个字节):存放了目标通信对端的物理地址(即就是:mac地址)

源mac地址(6个字节):   存放了构造以太网帧发送端工作站的物理地址

类型(2个字节):常用的用三种(0800,0806,8035)

          0800:表示通过ip协议

          0806:表示通过ARP协议(将IP地址转换为mac地址

          8035:表示通过RARP协议(将mac地址转换为ip地址)

数据:48-1500(字节),对于以太网而言,传输数据帧,最大传输是1500个字节,最少是48个字节,不足48个时,补全48个字节

FCS(4字节):   (Frame  Check  Sequence)是帧尾,称之为帧检验序列,检验帧是否有所破坏,通常在传输过程中,如果出现电子干扰,可能会出现发送数据导致乱码位的出现,我们可以通过这个进行检验,将错误的帧丢弃,这里保存着整个帧除以生成多项式的余数,在接收端也用同样的方法计算,如果得到的FCS相同,就判断接收帧正常

这里的RARP/ARP请求、应答占28个字节,PAD占8个字节

链路层识别存放的是mac地址(物理地址),网络层用的是ip地址(逻辑地址)


要实现通信,但是只知道目标主机的ip地址,形成的以太网格式中需要用到目标主机的mac地址,这时我们可以通过ARP协议,转化为相应的mac地址



当然,我们上面还提到了ICMP协议:它是传递差错,时间,回显,网络等控制数据(当上面通过ARP协议通过路由器轮转找不到对应的mac地址时,就会将错误的信息从服务端传回)

或者是当我们的数据报中,我们设置的是不分片,但是我们的数据量又大于传输的MTU,所以就会出错,通过ICMP协议返回




OSI模型的顶上三层被合并成一层,称为所谓的应用层,这就是Web客户(浏览器),Telnet客户,Web服务器,Ftp服务器等等,


为什么套接字提供的是从OSI模型的顶上三层进入传输层的接口??

1,顶上三层处理具体网络应用(FTP,Telnet, HTTP)的所有细节,却对通信细节了解很少,底下四层对网络应用了解不多,却处理所有的通信细节(发送连接,发送数据,等待确认,重发机制,校验和等等)

2,顶上三层通常构成了所谓的用户进程(user process),底下四层却通常作为操作系统内核的一部分提供。Unix与其他现代操作系统都提供分隔用户进程与内核的机制。由此可见,第四层,第五层之间的接口是构建API的自然位置。

0 0