OSI的通信模型把网络通信划分成为了7个相对独立的功能层次---应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。(这图丑的啊。。。。)

wKioL1aoHHCSPZB9AACNv56-QnE180.jpg

物理层的东西负责传输比特流,利用高低脉冲电路表示0和1,不在老衲的研究范围之内。

数据链路层(OOL)有两个责任:发送和接受,同时,也提供数据有效的端到端的传输连接(PPP啥的),数据链路层负责将指令、数据等封装到帧中(贞子,恩(⊙v⊙)),帧是链路层的结构,他必须包含足够的信息(我是谁,我要发给谁),确保数据能够安全无误的通过二层传输到目的地。

so,从此看来,每个数据帧最基本需要有的:

1、作为一个快递员,我要知道是谁发货,谁收货吧

2、我送的是啥,总的告诉别人车里装的是啥东西是吧

3、校验,要不别人发个iPhone,到手变成石头了

同时,作为快递员,工作流程是这样的:上面各种大佬,想干啥干啥,我只看客户---网络层给我的包裹,然后我就任劳任怨的承载好,丢给下面的物理层----高佬和矮胖,走路一颠一簸的。。。。。

wKioL1aoHW-yutk1AAEkIQkpR34484.jpg

(这图丑的。。。。。)

如果你想详细看看作为一个快递员,要承载多少东西的话。。。。

wKioL1aoHfTihW6nAAMrv62mYAc408.jpg

/(ㄒoㄒ)/~~真tm多。。。。他们就是这样一层一层插入的。。。插入。。。。插入



那首先来看看以太网,最大型的快递公司:

以太网虽然作为最大的快递公司,下面也有几个小型分公司

EthernetⅡ、Netware、802.3 SAP、802.3 LLC SNAP,作为分公司,我们执行的快递标准是不应该改变的,大概的流程是这样的

wKiom1aoIZmTg-sOAAEpE5DZpxw275.jpg

所以对于我们快递公司来讲,客户承载啥,我并不是那么关心,我只用在首尾增加快递单号啊、校验啥的。

同时,我们对包裹大小是有要求的,老外总公司的要求是这样的


Ethernet Frame

Here we discuss both legal and illegal Ethernet frames.The receiver will drop all illegal frames.

The vast majority of all local (LAN) data traffic in the world is Ethernet frames !!  There is no single unit of data that is more common. So anyone in any type of technical field would benefit by understanding the contents of these frames, and how they are transmitted and received. 

Min Frame Size = Header+CRC+DataMin = 64
Max Frame Size = Header_CRC+DataMax = 1518


简单的说,总公司要求:

1、包裹封装必须合法,不然我不要

2、包裹不能过小,也不能过大,大小必须在64到1518之间,如果小于64我没法传,如果大于1518,我就要考虑是不是发两个包裹了,如果客户不让(DF置位,不允许分片),那没办法,也只能丢弃

既然说到这里,包裹大小只能靠用户了,用户数据大,我们也得传啊,让不让发多个包裹,也是用户说了算的事情,要了解业务,就要先看看我们快递单是咋写的,前面也提到了,快递单必须包含的有:

谁发货、谁收货、送货内容、校验,各家快递公司对快递单号的写法也多少有不同,来个总览:

wKiom1aoJBTA_apoAAN6RKWmArQ834.jpg

从上面可以看出,在以太网中,我们使用MAC地址作为客户发货、收货地址


先从EthernetⅡ公司开始吧,先看看详细封装

wKiom1aoJS6zlaeBAAKUjH6Datg398.jpg

各个字段的作用已经很明显了,这里算个东西,每个字段的长度相加6+6+2+4=18bytes,所以,客户要发送的货物(data)部分,最小为46,最大为1500

type字段表明了所承载的内容,可承载的内容大致如下(恩。。。谁tm记啊。。。。),记住几个关键的就行了,比如IP、ARP、RARP、MPLS等等,这里你也可以发现一个问题-----ARP这个协议不是三层的哦,之前有面试问,ARP工作在哪一层,诺,三层的协议都有告诉你type=0x0800,ARP协议族是单独列出来的,再看看MPLS ×××,作为一个标签党,工作在二三层之间,so,我们可以这样说,ARP工作在第二层。

wKiom1aoJTGTnUsVAAQ6CWFJPOw559.jpg



Netware快递公司:

封装是这样的



spacer.gifwKiom1aoLVvTjpkmAAMsagANius521.jpg相对于EthernetⅡ来说,有几个改动

1、把type字段改成了length

2、把type字段改成了DSAP和SSAP

3、载荷能够负载的更少点6+6+2+1+1+4=20


802集团公司都差不多

你看看802.3SAP




wKioL1aoMbyRg0VNAAIVuqF9ea8372.jpg



你在看看802.3 LLC 




wKiom1aoMbeBYy8cAALKbSI4ij4440.jpg



OUI呢,是卖给厂商的,24个bit,22个bit可以卖,最后2个bit来表示单播或者组播

而且呢,802.3头部,使用lenth来与以太网二型帧区别,length有效数值为0-1536(即0x600)

那么以太网二型帧就要避开这个数值段,如果大于0x600,则为以太网二型帧,小于0x600的,就是802.3

因为802.3头部没有类型字段,因此通过802.2来补充(又叫LLC)ISO2层区分为LLC+MAC层,不同的协议区分为不同的MAC层,但是公用一个LLC层,like this

wKiom1aoMx3yjgNgAACNgAjFCWE361.jpg




其实写这么多(╮(╯_╰)╭你好意思说多。。。。),主要记住以下几点

1、在以太网上传输的数据帧封装必须合法,否则会被丢弃

2、数据帧大小必须在64-1518之间,小于这个无法传输,大于这个要分片

3、几种封装的细微区别,交换机使用lenth长度来判断格式,大于1536就是以太网二型帧,小于1536就是802.3的帧

4、ARP不是三层协议啊





附:http://www.infocellar.com/networks/ethernet/frame.htm

老外的一篇关于以太网帧的文章,不错