zoukankan      html  css  js  c++  java
  • 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言

    链路层的三个目的

    • (1)为IP模块发送和接收IP数据报。
    • (2)为ARP模块发送ARP请求和接收ARP应答。地址解析协议:ARP。
    • (3)为RARP模块发送RARP请求和接收RARP应答。逆地址解析协议:RARP。
      本章介绍了以太网协议,SLIP协议,PPP协议(现在常用),以及loopback等协议。

    2.2.1 以太网和IEEE802封装

    以太网

    以太网是指数字设备公司和英特尔公司和Xerox公司在1982年联合发布的一个标准。采用CSMA/CD的媒体接入方法。

    IEEE(电子电气工程师协会)802标准集

    • (1)802.3:针对整个CSMA/CD网络。
    • (2)802.4:针对令牌总线网络。
    • (3)802.5:针对令牌环网络。
      上述三者的共同特性由802.2标准定义。那就是802网络共有的逻辑链路控制(LLC):logic link control
      但是802.2和802.3定义了一个与以太网不同的帧格式。

    IP数据报的封装

    在TCP/IP世界中,以太网IP数据报的封装是在RFC894定义的。
    IEEE 802网络的IP数据报封装是在RFC1042中定义的。

    主机需求RFC 要求每台Internet主机都与10Mb/s的以太网电缆相连接

    • (1)必须能发送和接收RFC894(以太网)封装格式的分组(Rocket)。
    • (2)应该能接收与RFC894混合的RFC1042(IEEE802)封装格式的分组。
    • (3)也许能够发送采用RFC1042格式封装的分组,如果主机能同时发送两种类型的分组数据,那么发送的分组必须是能够设置的,并且默认条件下必须是RFC894分组
      可见,RFC1042(IEEE802)处于一个配角的角色。

    2.2.2 RFC894与RFC1042定义的两种帧格式

    具体详见教材P16-17。
    这里提交了CRC字段:CRC字段用于帧内后续字节差错的循环冗余校验(检验和)。

    2.4 SLIP:串行线路上对IP数据报进行封装的简单形式

    规则:

    • (1)IP数据报以一个称作END(0xc0)的特殊字符开始和结束。
    • (2)如果IP报文内有某个字符为END,那么就要连续传输两个字节0xdb(SLIP的ESC字符,但与ASCLL码的ESC字符不同(0x1b))和0xdc来取代它。
    • (3)如果IP报文内某个字符为ESC,那么就需要连续传输两个字节0xdb和0xdd来取代它。
      总之一句话,就是IP数据报的开头结尾均为END字符,IP报文内如果出现END或者ESC需要使用转义字符。

    缺陷:

    • (1)每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
    • (2)数据帧中没有类型字段,如果一条串行线路使用了SLIP协议,就没有办法同时使用其他协议。
    • (3)SLIP没有在数据帧中加上检验和。如果数据报文发生错误,则只能通过上层协议来发现(或者使用新型调制解调器,可以检测并纠正错误报文)。这样上层协议提供的CRC就非常重要了。

    PPP协议使用了三个额外的字节(大部分情况下)解决了这些问题。

    2.6 PPP点对点协议

    PPP也类似SLIP处理IP数据报的方式,每一帧都以标志字符0x7e开始和结束。在数据报文内容中如果遇到了0x7e需要进行转义。
    PPP增加了三个额外的字节,1个字节留给协议字段,另外两个字节留给了CRC字段使用。这三个字节解决了SLIP协议中的缺陷。

    PPP协议的优点

    • (1)PPP支持在单根串行线路上运行多种协议,不只是IP协议。
    • (2)每一帧都有循环冗余校验。
    • (3)通信双方可以进行IP地址的动态协商。
    • (4)对TCP,IP报文首部进行压缩。
    • (5)Link Control Protocol 链路控制协议可以对多个数据链路选项进行设置。。
      关于第四点:减少每一帧的字节数可以降低应用程序的交互时延

    2.7 环回接口 loopback

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

    Linux Terminal

    键入 ifconfig -a:

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

    可以用netstat来打印出MTU的结果,键入netstat -in

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

    参考链接:TCP/IP详解学习笔记(2)-数据链路层

    2016/7/20

  • 相关阅读:
    Hadoop入门
    Redis缓存分布式高可用架构原理
    ES分布式搜索引擎架构原理
    Java锁,多线程与高并发,JUC并发包
    图算法--拓扑序列
    数据结构--数组模拟队列
    数据结构--数组模拟栈
    数据结构--数组模拟双链表
    数据结构--数组模拟单链表
    基础算法--双指针
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5688700.html
Copyright © 2011-2022 走看看