Case Study:Networking Concept
Network Types:
Local Area Networks(LANs)
Wide Area Networks(WANs)
Metropolitan Area Networks(MANs)
Storage Area Networks(SANs)
Content Networks(CNs)
Devices:
Layer3 Network Routers
Layer2 Data Link Switches,bridges,NICs
Layer1 Physical Hubs
Case Study:Data Link Layer
作用:
1>
定义MAC或硬件地址
2>
定义连接的物理或硬件拓扑
3>
定义网络层对数据链路层的帧封装
4>
提供CONS与CLNS服务(一般情况下,数据链路层不提供CONS服务。)
数据链路层的主要作用:规划连接到相同的media type的两个网络设备的互联方式。
Data Link Layer Addressing:
1>
数据链路层使用MAC或硬件地址进行通信。在一个LAN中通信,连接到同一个访问介质的每一个设备都要有一个唯一的MAC地址。
2>
MAC
地址为48位的二进制,一般表示为十六进制形式,为12位。
3>
MAC
地址为了方便管理,使用了与IP地址类似的dotted 形式,即dotted hexadecimal format。如:FFFF.FFFF.FFFF。
5>
每种不同的数据链路层协议使用不同的数据链路地址,如Frame Relay使用Data Link Connection Identifiers(DLCIs)。
6>
MAC
地址的前6位(十六进制)用来唯一的标识一个NIC的厂商(vendor),被称为Organizationally Unique Identifier(OUI)。例如:cisco的OUI号为:0000.0C
7>
MAC
地址的后6位(十六进制)用来唯一的标识在同一个OUI下的NIC。这个值理论上应该是全球唯一的,但是实际上vendor可以会给不同的NIC相同的MAC。因为:从目的上说,MAC地址用来区别连接到同一个访问介质上的设备(或者说是一个broadcast domain),全球的网卡不可以应该于同一网段,所以实际上它可以不是全球唯一的。Vendor可以对不同的国家区域使用想同的MAC。
Data Link Address Types:
Unicast
Boradcast
Multicast
Case Study:Ethernet
Ethernet
是一个LAN访问介质上的一个数据链路层协议,它在共享的网络上使用CSMA/CD技术来防止数据冲突。
IEEE’Version of Ethernet:
实际有两种类型的Ethernet:IEEE和DIX。
Ethernet
最早于1980s早期由Digital,Intel和Xerox(DIX)三家公司开发。现在被称为Ethernet Ⅱ。
第二个版本的Ethernet是同IEEE开发的,同时将其标准化为IEEE 802.2与IEEE 802.3。IEEE将Ethernet分为两个子层,LLC与MAC。
LLC:
LLC
实现Ethernet的软件方面的功能。MAC实现的是Ethernet的硬件方面的功能。
LLC
通过使用Service Access Point(SAP) identifiers来实现复用。
当一个网络层协议被封装到一个802.2 frame时,网络层数据所用的协议就被放置于SAP字段。当目的设备收到这个frame时,它会检测这个SAP字段来决定将数据交给哪个网络层协议来处理。即,如果你的网络层同时使用IPX与TCP/IP协议,LLC层的SAP可以用来区分不同的上层协议。
同时,LLC也可以提供类似TCP的排序及流控等可靠服务。
IEE 802.3(MAC):
IEEE 802.3
负责定义两个NIC之间传递的frame。
IEEE 802.2(LLC):
IEEE 802.2
用来实现数据链路层面向上层的功能。
有两种类型的IEEE 802.2帧:
Service Access Point(SAP)
与Subnetwork Access Protocol(SNAP)
这些IEEE 802.2帧被封装与IEEE 802.3帧中。
802.2 SAP frame:
一般我们使用的都是的802.2 SAP frame:
802.2 SNAP frame:
源来的802.2 SAP frame存在的问题是:尽管它的SAP字段为8bits,但只有前6bits用来标识上层协议,即最多能标识64种上层协议。因为IEEE 802.2 frame是一种标准,所以它必须要能支持所有的上层协议。早在1980s以前就已经有多于64种上层协议了,所以它在当今远远不够用。
802.2 SNAP frame
不用改变SAP字段的长度就可以克服这个限制。
为了指示这个frame为一个802.2 SNAP frame,SAP字段被设置为十六进制0xAA,control字段被设置为十六进制0x03,OUI字段被设置为十六进制0x0。
Type
字段用来标识哪个上层协议产生的这个数据负载(payload)。为了克服802.2 SAP frame中的1byte的SAP字段只支持64个上层协议的不足,802.2 SNAP frame使用2bytes的type字段,从而理论上可以支持65536个上层协议。
只有少数的上层协议使用802.2 SNAP frame,Apple Talk就是一个使用802.2 SNAP frame的网络层协议。
因为有多种数据链路层协议可用于LAN,所以IEEE 802.2标准支持使用其它的LAN协议做为它的MAC子层。其中Token Ring被定义为IEEE 802.5,FDDI被定义为ANSI标准。
当一个设备的NIC收到一个802.3帧时:
1>
NIC
首先检测FCS字段,已决定它是否有效。
2>
检测目的MAC地址是否是指向它的,如果是再向上层发送,否则直接丢弃。
3>
MAC
子层移去802.3帧数据,将802.2 frame数据转交给LLC子层。
4>
LLC
子层检测目的SAP字段的值,以决定将数据负载交与哪一个上层协议。典型的SAP值:IP协议(0x06,十六进制),IPX协议(0x0E,十六进制)。即,如果LLC检测到目的SAP值为0x06,则将数据负载传递给上面的IP协议。
IEEE 802.2 VS. IEEE 802.3:
IEEE 802.3 frame
用于传输IEEE 802.2 frame到其它设备。
IEEE 802.2 frame
用来定义说明哪个网络层的协议提供的这个数据。
所以说IEEE 802.2类似于一个multiplexing(利用)的功能:它区分不同的网络层协议,如IPX,TCP/IP,APPLE TALK等。
Ethernet
Ⅱ’s Version of Ethernet:
Ethernet
Ⅱ是原始的Ethernet frame类型。
Ethernet
Ⅱ与IEEE Ethernet的相同点:它们都使用CSMA/CD技术来避免半双工链路上的数据冲突。
Ethernet
Ⅱ与IEEE Ethernet的不同点:
1>
Ethernet
Ⅱ不含有子层的概念,IEEE 802.2/3使用两个子层:LLC与MAC
2>
Ethernet
Ⅱ使用type字段来标识上层协议,对应于802.3的length字段。IEEE 802.2的type字段用来标识上层协议。
Ethernet
Ⅱ与IEEE 802.3 frame十分类似,NICs通过检测Ethernet Ⅱ的type字段与IEEE 802.3 frame的length字段的内容来区分不同的frame类型:
如果这个相应的字段值大于1500,则此frame为Ethernet Ⅱ frame。
如果这个相应的字段值小于或等于1500,则此frame为IEEE 802.3 frame。
两种类型的Ethernet frame可以共存于一个相同的网络,但它们的NICs必须支持同时这两种协议,否则网络不能互通。如:支持802.3 frame的NICs不能接收Ethernet Ⅱ frame。相反也一样。
Case Study:Transport Layer
传输层可以提供设备之间的可靠的或非可靠的数据传输。
Reliable Connections:
可靠的数据传输是靠ACK确认来实现的。当源发送一个数据包时,它必须等待目的设备回复一个ACK包,它才继续传递以后的数据包。从而确保数据的可靠传输。
要想建立可靠的连接,必须在传输数据前进行同步握手,即典型的TCP协议的三次握手(three-way handshake)。
一旦三次握手完成,数据就可以通过刚建立的连接传输数据了。
因为连接是在数据传输前建立的,所以这种连接被种为Connection-oriented(面向连接)。
Unreliable Connections:
与面向连接的服务不同,不可靠的连接只需要直接发送数据就可以了,它不需要任何的三次握手与ACK确认。
Case Study:Flow Control �C Windowing
在使用Windowing流控时,Window size用来定义源发送方最多可以发送多少数据包,然后就必须等待ACK确认。
Windowing
主要有两个功能:
1>
Flow Control
2>
Reliable Translation
大部分的Windowing的实现都是在传输前先协商,再以后的传输时动态的改变。
Window size
的大小决定着网络的效率与吞吐量。
如上图
1>
当window size为3时,源PC-A只可以发送3个segment(传输层PDU),按顺序segment1,segment2,segment3发送),就必须等待目的PC-B发送ACK确认包。
2>
目的PC-B以值为4回复一个ACK,即请求segment4数据。
3>
源PC-A在收到PC-B的ACK后,就可以再依次发送segment4,segment5,segmen6。从而继续等待确认。
4>
所以说,一个大的window size就有一个高的传输效率。
1>
如果此时在源PC-A收到一个ACK4后,发送segmen4,segmen5,segmen6给目的设备PC-B。有其它的原因segment4丢失了。segment5,segment6正确到达。
2>
目的设备PC-B会发送一个ACK4给源,指示请求segment4。
3>
此时根据使用的不同的传输层协议,可能会有两种结果:
(1)源设备PC-A了解到只有segment4丢失了,只重新发送segment4给目的设备。
(2)源设备PC-A不能了解目的设备收到了几个,则它会重传所有的segment4以后的数据包。
4>
大部分协议使用第二种方式重传。因为如果有两个segment数据丢失,则第一种方式不能实现segment的重传。
大部分的协议可以在实现windowing时,可以根据网络的状况动态的调整window size,进而可以使网络的效率与吞吐量最大化。
当源设备与目的设备的window size不同时,windowing实现可能会非常的复杂:
如果源PC-A使用window size为3,目的设备PC-B使用window size 10。这样源会在发送3个segment的数据后等待目的方确认。而目的方会等待源发送过10个segment后才进行ACK确认,以至于双方都在等待。
所以:window size最好在源/目的两方相同。
TCP Sliding Windowing Mechanism:
传输层的TCP协议是一个使用Windowing技术的代表。
所谓的sliding windowing,即window size可以动态的调节,以适应不同的网络状况。这也正好符合Windowing技术的本质。
一个连接的window size越大,它所需要的ACK就越少,进而这个连接的使用效率就越高。
TCP Windowing
使用前边讲到的第一种重传方式,但不同的是,它ACK能指示多个未收到的segment,进而可以大大提高效率。
Case Study:Protocol Data Unit(PDU)
本文出自 “SENSE” 博客,转载请与作者联系!