分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
数据链路层的知识点:
1、数据链路层为网络层提供可靠的数据传输;
2、基本数据单位为帧;
3、主要的协议:以太网协议;
4、两个重要设备名称:网桥和交换机。
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示:
其实在链路层之下还有物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。
链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示。
以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。
注意,虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。本文对RARP、ICMP、IGMP协议不做进一步介绍,有兴趣的读者可以看参考资料。
1.基本功能
帧同步:从接收到的比特流中准确区分帧的边界
差错控制:差错检查和差错纠正
流量控制:收发双方速度保持协调
链路管理:数据链路的建立,维持,释放
2.主要协议
以太网协议并不是第二层的唯一协议,但却是最常用的。就好比英语不是大家说的唯一语言,但却是最常用的。
3.常用的数据链路层
-
TCP/IP支持多种不同的数据链路层协议,这取决于网络使用的硬件,如以太网、令牌环、FDDI等局域网,串行线路、X.25、帧中继FR、ATM等广域网。
-
早期,由于各网络公司的竞争,局域网没有形成统一标准,为了将各种局域网融合,将链路层拆分成两层,逻辑链路层(LLC)和媒体接入控制(MAC)(802.3封装:SAP),
-
90年代,以太网取得垄断地位,以太网成为局域网代名词。数据链路层仅需要MAC层,采用以太网帧格式(Ethernet V2封装:ARPA)。
4.以太网和IEEE802的封装
以太网Ethernet: 1980年,数字设备公司(DEC)、Intel公司、施乐(Xerox)公司推出了DIX V1.0标准。1982年又推出了DIX V2.0标准,也就是现在通常所说的Ethernet II, 它采用了CSMA/CD(Carrier Sense, Multiple Access with Collision Detection)含冲突检测的载波侦听多路接入。
802.3:1985年,IEEE推出了"802.3 含冲突检测的载波侦听多路访问(CSMA/CD)访问方式和物理层规范",即802.3CSMA/CD标准
如图所示,显示了两种不同形式的封装格式。最常使用的封装格式是RFC894定义的格式。两种帧格式均采用48bit(6 byte)的目的地址和源地址。
这两个标准稍有不同,TCP/IP协议对这种情况的处理方式如下:
- 以太网的IP数据报封装在RFC894中定义,而IEEE802网络的IP数据报封装在RFC1042中定义。
- 一台主机一定要能发送和接收RFC894定义的数据报。
- 一台主机可以接收RFC894和RFC1042的封装格式的混合数据报。
- 一台主机也许能够发送RFC1042数据报。。如果主机能同时发送两种类型的分组数 据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC 894分组。
可见,RFC1042在TCP/IP里面处于一个配角的地位。
以太网协议实现RFC894规定的功能,能发送和接收采用RFC894封装格式的帧,同时也能够兼容与RFC894混合的RFC1042(IEEE802)封装格式的帧。
数据链路层的协议还是很多的,有我们最常用的以太网(就是平时我们用的网卡)协议,也有不太常见的令牌环,还有FDDI,当然,还有国内现在相当普及的PPP协议(就是adsl宽带),以及一个loopback协议。
联系linux里面的ifconfig -a命令,这个命令通常会得到如下的结果
inet addr:192.168.1.48 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::3617:ebff:febb:ed93/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:847304 errors:0 dropped:0 overruns:0 frame:0
TX packets:540883 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:277120836 (264.2 MiB) TX bytes:195312995 (186.2 MiB)
Interrupt:20 Memory:f7c00000-f7c20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3620024 errors:0 dropped:0 overruns:0 frame:0
TX packets:3620024 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1035581503 (987.6 MiB) TX bytes:1035581503 (987.6 MiB)
其中,em1就是以太网接口,而lo则是loopback接口。这也说明这个主机在网络链路层上至少支持loopback协议和以太网协议。
注意有的网卡标识是eth0等
em=embedded device,表示系统识别出这块网卡是集成在主板上的;而eth是传统的以太网卡设备的命名机制。
环回接口(loopback)。平时我们用127.0.0.1来尝试自己的机器服务器好使不好使。走的就是这个loopback接口。对于环回接口,有如下三点值得注意:
- 传给环回地址(一般是127.0.0.1)的任何数据均作为I P输入。
- 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是 因为广播传送和多播传送的定义包含主机本身。
- 任何传给该主机IP地址的数据均送到环回接口。
5.MTU最大传输单元
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。
- FDDI协议:4352字节
- 以太网(Ethernet)协议:1500字节
- PPPoE(ADSL)协议:1492字节
- X.25协议(Dial Up/Modem):576字节
- Point-to-Point:4470字节
我们上面使用ifconfig就可以看到MTU.
也可以用netstat来打印出MTU的结果,比如键入netstat -in
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
em1 1500 0 911211 0 0 0 582494 0 0 0 BMRU
lo 16436 0 3745238 0 0 0 3745238 0 0 0 LRU
就可以观察到em1的MTU是1500。而lo(环回接口)的MTU则是16436。
6.二层设备-交换机/网桥
交换机:
二层交换机工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。
二层交换机一般只认帧中的源和目的MAC地址进行数据传输。根据MAC地址寻址,通过站表选择路由,站表的建立和维护由交换机自动进行。而路由器属于OSI第三层即网络层设备,它根据IP地址进行寻址,通过路由表路由协议产生。
工作过程
二层交换机最大的好处是快速:由于交换机只须识别帧中MAC地址,直接根据MAC地址产生选择转发端口算法简单,便于ASIC实现,因此转发速度极高。
但交换机的工作机制也带来一些问题:
1.回路:根据交换机地址学习和站表建立算法,交换机之间不允许存在回路。一旦存在回路,必须启动生成树算法,阻塞掉产生回路的端口。而路由器的路由协议没有这个问题,路由器之间可以有多条通路来平衡负载,提高可靠性。
2.负载集中:交换机之间只能有一条通路,使得信息集中在一条通信链路上,不能进行动态分配,以平衡负载。而路由器的路由协议算法可以避免这一点,OSPF路由协议算法不但能产生多条路由,而且能为不同的网络应用选择各自不同的最佳路由。
3.广播控制:交换机只能缩小冲突域,而不能缩小广播域。整个交换式网络就是一个大的广播域,广播报文散到整个交换式网络。而路由器可以隔离广播域,广播报文不能通过路由器继续进行广播。
4.子网划分:交换机只能识别MAC地址。MAC地址是物理地址,而且采用平坦的地址结构,因此不能根据MAC地址来划分子网。而路由器识别IP地址,IP地址由网络管理员分配,是逻辑地址且IP地址具有层次结构,被划分成网络号和主机号,可以非常方便地用于划分子网,路由器的主要功能就是用于连接不同的网络。
5.保密问题:虽说交换机也可以根据帧的源MAC地址、目的MAC地址和其他帧中内容对帧实施过滤,但路由器根据报文的源IP地址、目的IP地址、TCP端口地址等内容对报文实施过滤,更加直观方便。
6.介质相关:交换机作为桥接设备也能完成不同链路层和物理层之间的转换,但这种转换过程比较复杂,不适合ASIC实现,势必降低交换机的转发速度。因此目前交换机主要完成相同或相似物理介质和链路协议的网络互连,而不会用来在物理介质和链路层协议相差甚元的网络之间进行互连。而路由器则不同,它主要用于不同网络之间互连,因此能连接不同物理介质、链路层协议和网络层协议的网络。路由器在功能上虽然占据了优势,但价格昂贵,报文转发速度低。近几年,交换机为提高性能做了许多改进,其中最突出的改进是虚拟网络和三层交换。
网桥(Bridge):
是一个局域网与另一个局域网之间建立连接的桥梁。属于数据链路层的一种设备。网桥的作用是扩展网络和通信手段,在各种传输介质中转发数据信号,扩展网络的距离,同时又有选择地将现有地址的信号从一个传输介质发送到另一个传输介质,并能有效地限制两个介质系统中无关紧要的通信。
网桥可分为本地网桥和远程网桥。本地网桥是指在传输介质允许长度范围内互联网络的网桥;远程网桥是指连接的距离超过网络的常规范围时使用的远程桥,通过远程桥互联的局域网将成为城域网或广域网。如果使用远程网桥,则远程桥必须成对出现。
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow