小白学网络之二_TCP/IP协议之链路层协议

               没有想到转变会如此之快,其实机会就是在变化中得到的,也许这就是最好的结局,如果那样,到时候真的可能有些麻烦,目前的自己还是不应该很急,急于创业,因为,自己应该审视自己,虽然自己有一定的技术,但技术换一个环境,也许就不能变成价值,或者一文不值,但自己还是不应该去贬低技术,还是应该积累,目前,感觉自己最大的问题是,需要有点东西,拿出来展示,所以下个阶段,主要的重点是放在不停的实践,琢磨上,应该举一反三。后续还有个计划,算法导论后面几章要继续,进行,重点是放在图的算法上面。


               今天还是从下往上看TCP/IP,数据链路层。
     
               在TCP/IP协议族中,链路层主要有三个目的:1,为IP模块发送和接收IP数据报。2,为ARP模块发送ARP请求和接收ARP应答。3,为RARP发送RARP请求和接收RARP应答。在这里,我们主要介绍以太网链路层协议,两个串行接口链路层协议(SLIP和PPP).


               以太网:
      
               以太网这个术语一般是指数字设备公司,英特尔公司和Xerox公司在1982年联合发布的一个标准。它是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入。它的速率是10Mb/s,地址是48bit.


                在TCP/IP世界中,以太网IP数据报的封装时在RFC894[Horing 1984]中定义的,IEEE 802网络的IP数据报封装是在RFC 1042[Postel and Rey
nolds 1988]中定义的。主机需求RFC要求每台Internet主机都与一个10Mb/s的以太网电缆相连接:


               1,必须能够发送和接收采用RFC894(以太网)封装格式的分组。
      
               2,应该能够接收与RFC894相混合的RFC1042(IEEE 802)封装格式的分组。
      
               3,也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC894分组。


              最常用的封装格式是RFC 894定义的格式。图2-1显示了两种不同形式的封装格式。

              

      
              两种帧格式都是采用48bit(6字节)的目的地址和源地址(802.3允许使用16bit的地址,但是一般是48bit地址)。这就是我们在本书中所称的硬件地址。ARP和RARP协议对32bit的IP地址和48bit的硬件地址进行了映射。


              接下来的2个字节在两种帧格式中互不相同。在802标准定义的帧格式中,长度字段是指它后续数据的字节长度。但不包括CRC检验码。以太网的类型字段
定义了后续数据的类型。在802标准定义的帧格式中。类型字段则由后续的子网接入协议(Sub-network Access Protocol:SNAP)的首部给出。幸运的是,802定义
有效长度值与以太网的有效类型值无一相同。这样就可以对两种帧格式进行区分。


             在以太网帧格式中,类型字段之后就是数据。而在802帧格式中,跟随在后面的是3字节的802.2 LLC和5字节的802.2 SNAP。目的服务访问点。(DestinationService Access Point,DSAP)和源服务访问点(Source Service Access Point,SSAP)的值都设为0xaa.Ctrl字段的值设为3.随后的3个字节org code都设置为0.再接下来的2个字节类型字段和以太网帧格式一样(其他类型字段值可以参见RFC 1340[Reynolds and Postel 1992]).


             CRS字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验序列)。
       
             802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38个字节,而对于以太网,则要求最少要有46个字节。为了保证这一点
必须在不足的空间插入填充字节。


              SLIP:串行线路IP.
       
              SLIP的全称是Serial Line IP.它是一种在串行线路上对IP数据报进行封装的简单形式,在RFC1055中有详细描述。SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet.


               下面的规则描述了SLIP协议定义的帧格式:
       

               1,IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符。


               2,如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc取代它。0xdb这个特殊字符也被称作SLIP的ESC字符,但是它的值与ASCII的ESC字符(0x1b)不同。


               3,如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。

               

       
               SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:
       
               1,每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
       
               2,数据帧中没有类型字段(类似于以太网中的类型字段).如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
       
               3,SLIP没有在数据帧中加入检验和。
       
               压缩的SLIP:CSLIP。
       
               由于串行线路的速率通常较低,而且通讯经常是交互的,因此在SLIP线路上有许多小的TCP分组进行交换。CSLIP一般能把上面的40个字节压缩到3或5个字节。它能在CSLIP
的每一端维持多达16个TCP连接。


                PPP:点对点协议。
       
                PPP,点对点协议修改了SLIP协议中的所有缺陷。
       
                1,在串行链路上封装IP数据报的方法。PPP既支持数据位8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
                2,建立,配置及测试数据链路的链路控制协议(LCP,Link Control Protocol).它允许通信两方进行协商,以确定不同的选项。
                3,针对不同网络层协议的网络控制协议(NCP,Network Control Protocol)体系。当前RFC定义的网络层有IP,OSI网络层,DECnet以及AppleTalk。例如,IP NCP允许双方商定
是否对报文首部进行压缩,类似于CSLIP。


                RFC1548 描述了报文封装的方法和链路控制协议。RFC1332描述了针对IP的网络控制协议。
       
                PPP数据帧的格式看上去很像ISO的HDLC(高层数据链路控制)标准。
       
                每一帧都是以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。

                 


                接下来是协议字段,类似于以太网中类型字段的功能。当它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为0x8021时,
表示信息字段是网络控制数据。


                CRC字段是一个循环冗余检验码,以检测数据帧中的错误。
       
                由于标志字符的值为0x7e,因此当该字符出现在信息字段时,PPP需要对它进行转义。在同步链路中,该过程是通过一种称作比特填充的硬件技术来完成的。
在异步链路中,特殊字符0x7d用作转义字符。当它出现在PPP数据帧中时,那么紧接着的字符的第6个比特要取其补码,具体实现过程如下。


                1,当遇到字符0x7e时,需连续传送两个字符:0x7d和0x5e,以实现标志字符的转义。
       
                2,当遇到转义字符0x7d时,需连续传送两个字符;0x7d和0x5d,以实现转义字符的转义。
       
                3,默认情况下,如果字符的值小于0x20(比如,一个ASCII控制字符),一般都要进行转义。例如,遇到字符0x01时需连续传送0x7d和0x21两个字符。(这时,第6个比特取补码候变
为1,而前面两种情况均把它变为0).


                 总的来说:PPP比SLIP具有下面这些优点:
       
                1,PPP支持在单根串行线路上运行多种协议,不只是IP协议。     
                2,每一帧都有循环冗余检验。
                3,通信双方可以进行IP地址的动态协商(使用IP网络控制协议);
                4,与CSLIP类似,对TCP和IP报文首部进行压缩。

                5,链路控制协议可以对数据链路选项进行设置。


                为这些优点付出的代价是每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。
       

                 环回接口:


                 大多数的产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。根据惯例,
大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost,一个传给环回接口的IP数据报不能在任何网络上出现。
                  

                  图中需要指出的关键点是:
       
                  1,传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。
                  2,传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送定义。
                  3, 任何传给该主机IP地址的数据均送到环回接口。
       
                  最大传输单元MTU.
       
                  正如前面说到的那样,以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492.链路层这个特性称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。
       
                  路径MTU:
       
                  当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信要通过多个网络,重要的两台通信主机路径中的最小MTU。它被称为路径MTU.
       
                  串行线路吞吐量计算:
       
                  如果线路速率是9600b/s,而一个字节有8bit,加上一个起始比特何一个停止比特,那么线路的速率就是960B/s.以这个速率传输一个1024字节的分组需要1066ms.如果SLIP链接运行一个交互式应用程序,
同时还运行另一个应用程序如FTP发送或接收1024字节的数据,那么一般来说就要必须等待一半的时间(533ms)才能把交互式应用程序的分组数据发送出去。


                  把SLIP的MTU缩短到256就意味着链路传输一帧最长需要266ms,它的一半是133ms,情况好一些,但仍然不完美。我们选择它的原因是为大块数据提供了良好的线路利用率。(如大文件传输)。假设CSLIP的
报文首部时5个字节,数据帧总长为262个字节,256字节的数据使线路的利用率为98.1%,帧头占了1.9%,这样的利用率是不错的。如果把MTU降到256以下,那么将降低传输大块数据的最大吞吐量。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值