zoukankan      html  css  js  c++  java
  • 2.数据链路层

    数据链路层的功能:

        为网络层提供服务,良好的服务接口;保证数据传输的有效、可靠;调节数据流,保证慢速的接收方不会被快速的发送方淹没。


    数据链路层的协议还是很多的,有我们最常用的以太网(就是平时我们用的网卡)协议,也有不太常见的令牌环,还有FDDI,当然,还有国内现在相当普及的PPP协议(就是adsl宽带),以及一个loopback协议。

    联系linux里面的ifconfig -a命令,这个命令通常会得到如下的结果

    [root@localhost ~]# ifconfig -a
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:2A:E4:4A  
              inet addr:192.168.74.138  Bcast:192.168.74.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe2a:e44a/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:11491 errors:0 dropped:0 overruns:0 frame:0
              TX packets:9690 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:6556189 (6.2 MiB)  TX bytes:1369156 (1.3 MiB)
              Interrupt:67 Base address:0x2024 

    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:1308 errors:0 dropped:0 overruns:0 frame:0
              TX packets:1308 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:1979157 (1.8 MiB)  TX bytes:1979157 (1.8 MiB)

    sit0      Link encap:IPv6-in-IPv4  
              NOARP  MTU:1480  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

    其中,eth0就是以太网接口,而lo则是loopback接口。这也说明这个主机在网络链路层上至少支持loopback协议和以太网协议。

    以太网(Ether-net)的定是指数字设备公司( Digital Equipment Corp.)、英特尔公司(Intel Corp.)和Xerox公司在1982年联合公布的一个标准,这个标准里面使用了一种称作CSMA/CD的接入方法。而IEEE802提供的标准集802.3(还有一部分定义到了802.2中)也提供了一个CSMA/CD的标准。这两个标准稍有不同,TCP/IP协议对这种情况的处理方式如下:

    • 以太网的IP数据报封装在RFC894中定义,而IEEE802网络的IP数据报封装在RFC1042中定义。
    • 一台主机一定要能发送和接收RFC894定义的数据报。
    • 一台主机可以接收RFC894和RFC1042的封装格式的混合数据报。
    • 一台主机也许能够发送RFC1042数据报。。如果主机能同时发送两种类型的分组数 据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC 894分组。

    可见,RFC1042在TCP/IP里面处于一个配角的地位。这两种不同的数据报格式请参考教材。

    ppp(点对点协议)是从SLIP的替代品。他们都提供了一种低速接入的解决方案。而每一种数据链路层协议,都有一个MTU(最大传输单元)定义,在这个定义下面,如果IP数据报过大,则要进行分片(fragmentation),使得每片都小于MTU,注意PPP的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

    eth0       1500   0    11491      0      0      0     9690      0      0      0 BMRU

    lo        16436   0     1308      0      0      0     1308      0      0      0 LRU

    就可以观察到eth0的MTU是1500。而lo(环回接口)的MTU则是16436。

    最后说说那个环回接口(loopback)。平时我们用127.0.0.1来尝试自己的机器服务器好使不好使。走的就是这个loopback接口。对于环回接口,有如下三点值得注意:

    • 传给环回地址(一般是127.0.0.1)的任何数据均作为I P输入。
    • 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是 因为广播传送和多播传送的定义包含主机本身。
    • 任何传给该主机IP地址的数据均送到环回接口。


    RX packets:2819 errors:0 dropped:0 overruns:0 frame:0
    TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:241609 (235.9 KiB) TX bytes:9596 (9.3 KiB)

    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:2713 errors:0 dropped:0 overruns:0 frame:0
    TX packets:2713 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:3516032 (3.3 MiB) TX bytes:3516032 (3.3 MiB)

     

     

     

  • 相关阅读:
    InChatter系统之服务器开发(一)
    InChatter系统开源聊天模块前奏曲
    System.Lazy<T>延迟加载
    系统的层级架构
    Android网络通信库Volley简介(转)
    switch case 忘记 break
    switch case 忘记 break
    C# Lock 解读
    JSON资料整理(转载)
    [Leetcode]253. 会议室 II(数组/堆)
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5064299.html
Copyright © 2011-2022 走看看