第2章链路层TCP/IP协议(第2章)主讲:刘志丹第2章链路层第2章链路层课时安排:3课时教学课型:理论课教学目的:通过本章学习,使学生掌握链路层的功能,各类局域的IP数据包的构成,从而进一步了解TCP/IP开放性的含义。教学重点:链路层的功能及以太网、IEEE802、SLIP,CSLIP、PPP的组包格式教学难点:以太网、IEEE802、SLIP,CSLIP、PPP的组包格式,MTU的含义及吞吐量的计算。教学方法及手段:应用多媒体技术,详细各种网络组包的方法并进行比较。演示吞吐量的计算过程。第2章链路层第2章链路层2.1引言2.2以太网和IEEE802封装2.3尾部封装2.4SLIP:串行线路IP2.5压缩的SLIP2.6PPP:点对点协议2.7环回接口2.8最大传输单元MTU2.9路径MTU2.10串行线路吞吐量计算2.11小结第2章链路层2.1引言第2章链路层2.1引言1、链路层的三个目的从图1-4中可以看出,在TCP/IP协议族中,链路层主要有三个目的:(1)为IP模块发送和接收IP数据报;(2)为ARP模块发送ARP请求和接收ARP应答;(3)为RARP发送RARP请求和接收RARP应答。第2章链路层2.2以太网和IEEE802封装TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。以太网速率为10Mb/s,地址为48bit。例如:货车装载规格、吨位与高速路、城乡公路的关系注意802.4802.5已经被市场所淘汰以太网技术已经从传统的10兆以太网,发展到了百兆以太网、千兆以太网、万兆以太网。请思考:跟10兆以太网相同的帧格式相比,以上高速以太网的帧格式是否有区别?为什么?第2章链路层第2章链路层2.2以太网和IEEE802封装2、链路层的封装格式图2-1显示了RFC894(以太网)、RFC1042(IEEE802网络)两种不同形式的封装格式及其区别。图中每个方框下面的数字是它们的字节长度。RFC894原文引用FrameFormatIPdatagramsaretransmittedinstandardEthernetframes.ThetypefieldoftheEthernetframemustcontainthevaluehexadecimal0800.ThedatafieldcontainstheIPheaderfollowedimmediatelybytheIPdata.第2章链路层第2章链路层第2章链路层2.2以太网和IEEE802封装从图中可以看出:(1)两种帧格式都采用48bit(6字节)的目的地址和源地址。这就是硬件地址(MAC地址)。ARP和RARP协议对32bit的IP地址和48bit的硬件地址进行映射。第2章链路层2.2以太网和IEEE802封装(2)接下来的2个字节在两种帧格式中互不相同。802的是长度字段,是指它后续数据的字节长度,但不包括CRC检验码;以太网是类型字段定义了后续数据的类型。第2章链路层2.2以太网和IEEE802封装(4)在以太网帧格式中,类型字段之后就是数据;而在802帧格式中,跟随在后面的是3字节的802.2LLC和5字节的802.2SNAP。其中LLC由目的服务访问点(DSAP)和源服务访问点(SSAP)及Ctrl组成,值都设为0xaa。Ctrl字段的值设为3。随后的3个字节orgcode都置为0。再接下来的2个字节类型字段和以太网帧格式一样。第2章链路层2.2以太网和IEEE802封装(5)CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验序列)。(6)802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。为了保证这一点,必须在不足的空间插入填充(pad)字节。在开始观察线路上的分组时将遇到这种最小长度的情况。演示1,使用sniffer分析一个帧类型为0800的帧。查看帧结构查看数据部分的长度查看填充字节pading观察演示结果,回答思科路由器中使用的帧结构属于什么标准?2,使用sniffer分析一个帧类型为0806的帧。3、请问,除了课本上的这三种,是否还有其他帧类型?第2章链路层知名协议的EtherType值0x0000-0x05DCIEEE802.3长度0x0101–0x01FF实验0x0600XEROXNSIDP0x0800网际协议(IP)0x0801X.75Internet0x0802NBSInternet0x0805X.25Level30x0806地址解析协议(ARP:AddressResolutionProtocol)0x0808帧中继ARP(FrameRelayARP)[RFC1701]0x8035RARP:ReverseAddressResolutionProtocol0x8037NovellNetwareIPX第2章链路层从什么地方可以查阅到以太网帧格式中的“类型”字段是怎样分配的?(英文)第2章链路层演示使用PT软件,演示对思科路由器进行ping命令的背后……请回答:ping命令使用什么协议?该协议封装数据时,首部需要几个字节?观察演示结果,回答思科路由器中使用的帧结构属于什么标准?第2章链路层思科九年节选塞斯蒙NewHireTraining结束之后,紧接着是连在一起的两周技术培训。由于培训地点在公司办公室,我和老樊搬到了离建威比较近的金都假日。给我们讲课的是TrainingPartner的塞斯蒙:中等身材,微胖,戴着眼镜,是那种很有亲和力的面相。此人浸淫数据网络行业很多年,背后也是一大堆的故事。我还记得塞斯蒙开篇第一句话就问我们谁知道思科一台25路由器的成本是多少,大家当然哑口无言。然后他很顽皮地笑了,说了一个让大家瞠目结舌的数字。“所以,这就是你们要坐在这里学习的目的——如何把这台成本是这个数字的路由器卖到你们将来要做的标书上的数字,哈哈哈。”不过,后来又补了一句,“这是商业机密啊,我可什么都没说,你们也什么都没有听到。”塞斯蒙的课讲得非常好,让当时脑袋里还是一片黄土地的我有一种久旱逢甘露的感觉。时隔十年,我还记得当时他开宗明义说的一个技术实例:为什么路由器第一次Ping指令发出后收到的连通感叹号是4个而不是5个?每次他丢出一些这样的问题的时候,都会很友善很狡猾地嘿嘿笑着。讲完了之后他还会说,以后,你要是连这个问题都不知道怎么解释给客户听的话,你可千万别说在我这里上过课。据塞斯蒙介绍,当时有一个专门培养CCIE的培训计划,名称叫做NETGUN,因为出来以后的选手全是网络界的TOPGUN,也就是顶尖高手的意思。当时我们都很神往,只可惜之后的我离所谓的TOPGUN差之千里,以至于后来每次见到塞斯蒙时自己都有一种愧不敢见少年恩师的感觉。但在当时的班里,有几个人对于塞斯蒙的每个问题都能微微一笑,信手解之。老高是其中之一。第2章链路层为什么路由器第一次Ping收到的连通感叹号是4个而不是5个?讀《思科九年》看到的。答案:因為ARP。因為第一次PING,mac地址表里没有对方mac地址,所以做ARP广播找这个地址。找到了存到MAC表里,这时应该第一个ICMP因為延遲,没通(因为没有MAC地址)后面再发的时候,MAC表里已经找到对方的MAC地址了。所以后面四个都是通的。如果再PING的话.5个就都可以通了。第2章链路层以太网帧首的识别在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,如图3所示。其中,前7个字节称为前同步码(Preamble),内容是16进制数0xAA,最后1字节为帧起始标志符0xAB,它标识着以太网帧的开始。前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。第2章链路层第2章链路层第2章链路层2.3尾部封装现已不用。第2章链路层2.4SLIP:串行线路IPSLIP的全称是SerialLineIP。它是一种在串行线路上对IP数据报进行封装的简单形式,在RFC1055中有详细描述。SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet。RS-232C第2章链路层一般用于20m以内的通信。目前在IBMPC机上的COM1、COM2接口,就是RS-232C接口。第2章链路层2.4SLIP:串行线路IP下面的规则描述了SLIP协议定义的帧格式:1)IP数据报以一个END(0xc0)的特殊字符开始和结束。这主要是为了防噪声干扰。END有用数据END……END有用数据END……开头END的作用:结束前面的噪声结尾END的作用:结束当前的报文第2章链路层2.4SLIP:串行线路IP2)如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。(说明:0xdb这个特殊字符被称作SLIP的ESC字符,但是它的值与ASCII码的ESC字符(0x1b)不同。)第2章链路层2.4SLIP:串行线路IP3)如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。图2-2中的例子就是含有一个END字符和一个ESC字符的IP报文。在这个例子中,在串行线路上传输的总字节数是原IP报文长度再加4个字节。(en字符2个字节+ESC字符2个字节)第2章链路层2.4SLIP:串行线路IP第2章链路层2.4SLIP:串行线路IPSLIP是一种简单的帧封装方法,但有一些缺陷:1)每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。2)数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。第2章链路层2.4SLIP:串行线路IP3)SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现。这样,上层协议提供某种形式的CRC就显得很重要。第2章链路层2.5压缩的SLIP由于串行线路的速率通常较低(19200b/s或更低),而且通信经常是交互式的(如Telnet和Rlogin,二者都使用TCP),因此在SLIP线路上有许多小的TCP分组进行交换。为了传送1个字节的数据需要20个字节的IP首部和20个字节的TCP首部,总数超过40个字节,于是人们提出一个被称作CSLIP(即压缩SLIP)的新协议,它在RFC1144中被详细描述。第2章链路层2.5压缩的SLIPCSLIP一般能把TCP和IP头部共40个字节压缩到3或5个字节。它能在CSLIP的每一端维持多达16个TCP连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。而大多数的SLIP产品都支持CSLIP。SLIP现状在计算机中,SLIP已经广泛的被点到点协议(PPP)所取代,因为PPP有许多更好的特点,并且不需要在连接建立前进行IP地址的配置。但在微控制器中,由于SLIP有非常小的包装头,所以它仍是首选的封装IP包的方式。第2章链路层第2章链路层2.6PPP:点对点协议PPP,点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:1)在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式,(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。2)建立、配置及测试数据链路的链路控制协议(LCP:LinkControlProtocol)。它允许通信双方进行协商,以确定不同的选项。第2章链路层2.6PPP:点对点协议3)针对不同网络层协议的网络控制协议(N