前言:LLC子层看懂了又忘记,写在这里方便记忆。
MAC就不说了。LLC格式百度。
IEEE802.3帧中的LLC子层除了定义传统的链路层服务之外,还增加了一些其他有用的特性。这些特性都由DSAP、SSAP和Control字段提供。
例如以下三种类型的点到点传输服务:
无连接的数据包传输服务
目前的以太网实现就是这种服务。
面向连接的可靠的数据传输服务
预先建立连接再传输数据,数据在传输过程中可靠性得到保证。
无连接的带确认的数据传输服务。
该类型的数据传输服务不需要建立连接,但它在数据的传输中增加了确认机制,使可靠性大大增加。
下面通过一个例子来说明SSAP和DSAP的应用。假设终端系统A和终端系统B要使用面向连接的可靠的数据传输服务,这时候会发生如下过程:
A给B发送一个数据帧,请求建立一个面向连接的可靠连接。
B接收到以后,判断自己的资源是否够用(即是否建立了太多的连接),如果够用,则返回一个确认信息,该确认信息中包含了识别该连接的SAP值。
A接收到回应后,知道B已经在本地建立了跟自己的连接。A也创建一个SAP值,来表示该连接,并发一个确认给B,连接建立。
A的LLC子层把自己要传送的数据进行封装,其中DSAP字节填写的是B返回的SAP,SSAP字节填写的是自己创建的SAP,然后发给MAC子层。
A的MAC子层加上MAC地址和LENGTH字段之后,发送到数据链路上。
B的MAC子层接收到该数据帧之后,提交给LLC子层,LLC子层根据DSAP字段判断出该数据帧属于的连接。
B根据该连接的类型进行相应的校验和确认,通过这些校验和确认后,才向上层发送。
数据传输完毕之后,A给B发送一个数据帧来通知B拆除连接,通信结束。摘--huawei手册
上面这些看了还是没能解答心中的疑惑。
目前MAC+IP不是用的挺好的,LLC提供的无连接,面向连接DSAP等等,为什么少了他还能用。
LLC作用是指明上层协议,当然还有说的提供的无连接等等。
所以DSAP/SSAP用来标志上层协议。比如 IPX为0XE0,
snap 使用 org code+PID来标识协议, 比如 APPLE talk 0x809B。等等。
看一下数据包格式,网上找的图
LLC只出现在802.3以太网的格式中,802.3的MAC层没有字段指明上层协议字段,但是指明了数据包长度,所以上层协议需要LLC指明。
在ETHERNET_II帧中,把802.3的长度字段改为了type。由Type字段区分上层协议,这时候就没有必要实现LLC子层,仅包含一个MAC子层。
只是现在厂商都用ETHERNET_II。实际效果和802.3+LLC是一样的。
那么问题来了,802.3是有长度标志的,LLC表示上层协议,Ethernet_II没有长度标志,至少现在都不用了,那么判定一个数据包是不是发送完了呢。
如何判断答案如下:
因为以太网帧使用4B/5B编码,出现5bit固定类型的二进制,表示此数据包结束,正常传输中是不会出现这5bit的特定序列,如果有也是经过反码或者补码什么的替换掉了,学过计算机组成原理的同学就知道了。所以不需要协议里面有长度字段。当然具体还有很多细节,喜欢深究的同学可以自行脑补。
对于64字节的最小帧经过填充,怎么区分哪一段是填充的内容。数据都在IP包里面。IP包有的长度字段。可以使用这个来区别。