发布新日志

  • 数据链路层学习笔记

    2012-09-10 19:17:52

    数据链路层

     MAC地址是为了识别数据链路层上的节点而设置的。它的地址长度为48位。一个计算机网卡的MAC地址在世界上是唯一的。

    IEEE802.3MAC地址的格式:

    1位:单播地址为(0/多播地址为(1)。

    2位:全局地址为(0/本地地址为(1)。

    324位:IEEE管理的、各个制造商互不相重的地址。

    2548位:制造商管理的、各个产品互不相重的地址。

    制造商标识符作用:当计算机网络由多个制造商的产品构成时候,对于寻找发生故障的原因是非常有用的。正式名称是组织唯一标识符(OUIOrganizationally Unique Identifier)。

     

    从共享传输介质的观点看,计算机网络可以分为共享传输介质型和非共享传输介质型。

    竞争(contention)方式是指对于数据的发生权,是通过竞争方式而得到的方式。

    CSMACarrier Sense Multiple Access):载波侦听多路访问方式。控制方式是:1)确认任何人都没有发送数据;2)发送数据。

    CSMA/CDCarrier Sense Multiple Access with Collision Detection):带冲突检测到载波侦听多路访问方式。控制方式是:1)确认任何人都没有发送数据;2)发送数据,3)一边发送数据;4)一边进行电压监视,处理机制是,a在数据发送结束之前,如果电压都在规定的范围内,则判断为数据发送正常;b在数据发送过程中,如果电压不在规定的范围内,则判断为数据发送发生了冲突;c如果发生冲突, 则停止发送,并等待使用随机数产生的时间间隔后,再重新尝试发送数据。

    令牌传递(token passing)方式,将称为令牌(token)的包在线路中循环传递,用这个令牌来控制数据的发生权,只有拥有令牌的工作站才能发送数据。因此这种方式不会发生冲突,每个工作站都能够平等地获得发送数据的权利。为了提高系统的性能,人们想出了early-tokenappend-token等,它们都是能够同时循环发送多个令牌的方式。

     

    UTPUnshielded Twisted Pair Cable    非屏蔽双绞线

    STPShielded Twisted Pair Calble      屏蔽双绞线

    MMFMulti Mode Fiber             多模态光纤

    SMFSingle Mode Fiber             单模态光纤

    Fiber channel                        光纤信道

     

    Ethernet中表示传输速度的值为:1k=10001M=1000k1G=1000M

    Octet,一个octet8位,与字节几乎具有相同的意义。位(bit):二进制数表示的最小单位。字节(byte):通常八位为一个字节。八位位组(octet):八位为一个八位位组。

     

    数据链路层协议包括EthernetFDDIATMPPP,其中Ethernet最普及,它的控制方法简单,驱动程序容易编写,价格低。早期的EthernetDIX Ethernet)帧格式跟IEEE802.3委员会制定的Ethernet的帧格式是不同的。

    Ethernet帧的格式:

    接收端的MAC地址(6 octect|发送端的MAC地址(6 octet|协议类型(2 octet|数据(461500 octect|FCS4 octet

     

    IEEE802.3 Ethernet帧的格式:

    接收端的MAC地址(6 octect|发送端的MAC地址(6 octet|帧长(2 octet|LLC3 octect|SNAP5 octet|数据(381492 octect|FCS4 octet

     

    数据链路层在仔细划分的话,还可以分为两层:介质访问控制层(MACMedia Access Control)和逻辑链路控制层(LLCLogical Link Control)。

      主要的Ethernet类型域的分配

    协议类型号(十六进制)

    协议

    000_05DC

    IEEE802.3长度域(01500

     

     

    0800

    Internet IPIpv4

    0806

    地址解析协议(ARPAddress Resolution Protocol

    8035

    反向地址解析协议(RARPReverse Address Resolution Protocol

     

     

     

     

    86DD

    IP Version 6

    8863

    PPPoE discovery stagePPPoE发现阶段)

    8864

    PPPoE session stagePPPoE会话阶段)

     

     

     

    交换机的发送方式

    存储(store)和转发(forward)、截断转发(cut-through)方式。存储和转发方式是在检查完FCS之后再转发数据。优点:不转发由于碰撞而遭到破坏的帧以及由于噪声而引起的错误帧。截断转发省在存储完整帧之前就开始转发,优点是延时短缺点是会转发错误的帧。

     

    循环检查技术:生成树(spanning tree)的方法,和源路由寻找(source routing)的方法。生成树是由IEEE802.1D所定义的。在110秒的时间间隔内,在各个网桥之间交换称为网桥协议的数据单位(BPDUBridge Portocol Data Unit)包。并且,使用它能够确定正在使用的通信链路和没有使用的通信链路,从而进行删除循环的控制。具体地讲,可以首先构造具有一个网桥的根(root)和一个树(tree)的结构,然后对它进行处理。源路由选择是IBM公司开发令牌计算机网络时所使用的方法。在该方法中,发送数据的计算机确定经由什么样的路由器来发送帧,并将其写到帧的路由信息域(RIFRouting Information Field)中。

     

    虚拟的局域网(VLANVirtual LAN

    如果使用具有VLAN技术的网桥(或者交换机),则即使不改变配线的布局,也能够变更计算机网络的结构。

    VLAN上的Ethernet帧的格式

    接收端的MAC地址(6 octect|发送端的MAC地址(6 octet|VLAN标志(4 octet|协议类型(2 octet|数据(461500 octect|FCS4 octet 查看(979) 评论(0) 收藏 分享 管理

  • TCP/IP综合基础学习笔记一

    2012-08-28 10:04:54

    7 应用层 6 表示层 5 会话层 (换一种分法,合称“应用层”),代表协议:HTTP, SMTP, TELNET, FTP, SNMP, MIME, HTML, MIB。
    4 传输层,代表协议:TCP, UDP。
    3 网络层,代表协议:ARP, IP, ICMP。
    2 数据链路层 1 物理层,代表介质:Ethernet,FDDI, ATM,Token Ring……(双绞线、光纤、同轴电缆)。
    OSI参考模型分7层 (open System Inter-connection, 开放系统互连),

    在各个分层在,需要在欲发送到数据之中附加一个信息,这称为报头,在这个报头中,包含着该层所需要的信息。具体地讲,把记录发送者自己的地址和接收者地址的部分,以及记录数据传输协议有关的信息统称为报头(header)。
    包报头的分层化处理:  Ethernet报头|IP报头|TCP报头|数据
    TCP报头信息:用于识别发送端主机和接收端主机的端口号、表示该包的数据是第几个字节的数据的序列号、保证数据不被破坏的检查和等。
    IP报头信息:包含有接收端的IP地址、发送端的IP地址,以及IP报头后面的数据是TCP还是UDP协议等各种信息。
    Ethernet报头信息:包含有接收端的MAC地址和发送端的MAC地址,以及Ethernet报头后面表示数据协议的信息和Ethernet类型信息。

    通过数据链路层的包的格式:
    【接收端MAC地址|发送端MAC地址|Ethernet类型】Ethernet报头(数据链路层)|【发送端IP地址|接收端IP地址|协议类型】IP报头(网络层)|【发送端端口号|接收端端口号】TCP/UDP报头(传输层)|【数据】应用层的报头和数据(会话层、表示层、应用层)|【FCS】Ethernet结束符(数据链路层)

    包的接收处理过程。
    网络接口的处理:首先检查Ethernet报头的接收端MAC地址是否与自己的地址相符,地址相符则接收该帧,反之拒绝。接着检查Ethernet协议,根据协议向对应的子程序传递数据,如无法处理协议,就不丢弃该数据。
    IP模块的处理:首先检查包的接收地址是否是自己主机的IP地址,是自己的主机地址就接收,反之则丢弃;然后检查协议类型,向对应协议的子程序传递数据,不能处理的协议则丢弃数据。(路由器,检查包接收地址,从路由控制表中查出下一个要发送端主机或者路由器,然后进行转发处理)
    TCP模块的处理:首先计算检查和,确认数据是否损坏,接着确认所接收到的数据是否按照顺序到达,以及检查端口号,根据端口号将正在进行的通信与一个特定的应用程序联系起来。如果接收到的数据准确无误,则向发送端主机返回一个确认数据到达的“确认应答”,在没有获得发送端主机返回的确认前,反复发送该“确认应答”。
    应用程序的处理:对接收到的数据进行分析和处理,如果数据都正确处理,则向发送端的应用层返回一个正常的信息,反之,返回一个错误信息。

    包、帧、数据报、段、消息这5个术语解释:共同点,这5个术语都是用来表示数据的单位。差异点,包是一个无论什么地方都可以使用的通用术语。帧用于表示数据链路层的包。数据报是一个用于IP协议或者UDP协议等网络层以上的包的单位,在具有这样的数据结构的协议中使用该术语。段是一个用于表示基于流动TCP协议中所包含的数据。消息是一个用于表示应用协议的数据单位。

    把两个计算机之间传输数据的物理速度称之为传输速度,虽然说速度,但是由于介质中传输信号的速度是一定的,所以物理链路层的传输速度是没有快慢的区别。传输速度又可称为带宽(band width)。

    实际上,在主机之间发送和接收数据的速度称为吞吐量(throughput)。吞吐量意味着实际的传输速度,它不仅与数据链路的带宽有关,而且还与CPU的处理能力,计算机网络的拥挤程度和包中数据所占的比例有关(不包括报头,只计算数据)等有关。

    传输速度、带宽和吞吐量,三者单位都用bit/s(bit per second)来表示。

    通信方式的种类:连接型和无连接型,单播通信、多播通信和广播通信,线路交换和包交换。

    中继器:对0和1进行识别并加以整形。集线器就是多口的中继器。
    网桥:对数据链路层的帧进行识别后,重新组成新帧再加以发送。删除发生错误的帧。(有学习和过滤功能,可以控制交通流量,以达到最佳状态。)交换机就是多口的网桥。
    路由器:把不同的计算机网络连接起来,并对包进行中继的设备。
    网关:指在OSI参考模型的传输层到应用层之间,对数据进行中继的设备。(传输层以上的发送处理以及协议的变换。如Internet的电子邮件和移动电话的电子邮件相互通信,代理服务器。)

  • (转)浏览器发送URL的编码特性

    2009-10-29 22:34:54

    尽管有很多规范URL的标准,例如RFC 3987,但实际应用中却非常混乱。本文主要介绍浏览器发送URL到服务器的一些特性,作为开发和应用的参考。

    通常浏览器会用两种编码方式发送URL到服务器,分别是UTF-8和ANSI(当前系统语言设置,在Windows系统中可以理解为当前代码页)。接下来分别介绍几种常用浏览器发送URL的编码特性。

    一、直接在地址栏输入URL的情况

    中文Windows环境下,假如直接在浏览器的地址栏输入URL:

    http://www.charset.cn/中国.html?kw=中国

    1. IE浏览器特性

      PATH部分 参数部分
      UTF-8模式(默认) %E4%B8%AD%E5%9B%BD.html kw=中国
        UTF-8编码、urlencode GBK编码、无urlencode
      ANSI模式 中国.html kw=中国
        GBK编码、无urlencode GBK编码、无urlencode
    2. 中文Windows环境下,IE中默认发送的URL的PATH部分是UTF-8编码,参数部分是GBK编码。IE的设置选项中有一项是“总是以 UTF-8 发送URL”可以改变发送URL的编码为ANSI。

    3. FireFox浏览器特性

      PATH部分 参数部分
      UTF-8模式 %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD
        UTF-8编码、urlencode UTF-8编码、urlencode
      ANSI模式(默认) %D6%D0%B9%FA.html kw=%D6%D0%B9%FA
        GBK编码、urlencode GBK编码、urlencode
    4. 中文Windows环境下FireFox中默认发送的URL的PATH和参数都是GBK编码,在FireFox地址栏输入“about:config”,找到选项“network.standard-url.encode-utf8”,即可改变发送URL的编码方式。

    5. Opera浏览器特性

      PATH部分 参数部分
      UTF-8模式(默认) %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD
        UTF-8编码、urlencode UTF-8编码、urlencode

    二、来自网页中的链接

    在不同的浏览器中打开不同编码的网页中的链接,特性也不相同。在不改变浏览器默认选项情况下访问不同编码的网页中以下链接:

    http://www.charset.cn/中国.html?kw=中国

    1. IE浏览器特性

      PATH部分 参数部分
      UTF-8网页 %E4%B8%AD%E5%9B%BD.html kw=中国
        UTF-8编码、urlencode UTF-8编码、无urlencode
      GBK网页 %E4%B8%AD%E5%9B%BD.html kw=中国
        UTF-8编码、urlencode GBK编码、无urlencode
    2. FireFox浏览器特性

      PATH部分 参数部分
      UTF-8网页 %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD
        UTF-8编码、urlencode UTF-8编码、urlencode
      GBK网页 %D6%D0%B9%FA.html kw=%D6%D0%B9%FA
        GBK编码、urlencode GBK编码、urlencode

    如果改变IE默认选项为ANSI模式或者将FireFox改为UTF-8模式的访问结果可以自己测试。

    几点说明:

    1. 对于开发人员而言,一定要考虑到不同环境下URL编码的不同,才能实现系统更好的兼容性。兼容性好的系统必须要能够识别来自客户端URL的编码,才能正确处理。
      例如在Opera浏览器地址栏直接输入“http://www.baidu.com/s?wd=我们”,就会发现不能正确访问。
    2. 不同的WEB服务器对各种编码的URL处理也不相同,尽量不要使用中文字符作文件名。
    3. 如果写入网页中的链接包括中文字符,最好使用urlencode处理,才能和当前网页编码无关。否则有可能不能正确访问。
    4. 很多情况下浏览器的地址栏看到URL并不等同于发送到服务器的URL。要正确查看浏览器发送的到服务器URL,最好借助一些工具分析HTTP的请求头。

  • 移动硬盘上的控制芯片介绍

    2009-07-18 19:44:44

    移动硬盘上的控制芯片决定着移动硬盘的传输性能和稳定性。
    高端芯片:赛普拉斯、NEC、旺玖;
    低端芯片:安国、扬智、创惟;
  • 转:几个重要的基础课程

    2009-05-06 16:50:22

      如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目,这些书应该都还可以在书店买到。说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。

     

        大学英语-不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来,而现在的许多 出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。

     

        计算机体系结构和汇编语言-关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书《80x86汇编语言程序设计教程》(清 华大学出版社,黑色封面,杨季文著)。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。

     

        计算机操作系统原理-我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。无论如何,操作系统原理 是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众。只是觉得在看完了这些书 后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。

     

        数据结构和算法-这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。很多人喜欢买C++ 版的,但我觉得没有必要。C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览 一下 C++的版的书是最好的。

     

        软件工程-这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华)。不 要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。

     

        Windows 程序设计-《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。我知道的许多名校甚至都已经 用它作为教材进行授课。可见其重要。

Open Toolbar