zoukankan      html  css  js  c++  java
  • [TCP/IP详解:学习笔记]链路层

    链路层

    从图1中可以看出,在TCP/IP协议簇中,链路层主要有三个目的:

    1. 为IP模块发送和接收IP数据报;
    2. 为ARP模块发送ARP请求和接收ARP应答;
    3. 为RARP发送RARP请求和接收RARP应答。

     

     

    图1 TCP/IP协议簇中不同层的协议

     

    以太网(RFC 894)是当今TCP/IP采用的主要局域网技术,它采用了CSMA/CD的媒体接入方法,即带冲突检测的载波侦听多路接入。IEEE 802(RFC 1042)委员会对其重新定义。两个不同封装的格式如图2所示,图中每个方框下面的数字表示他们的字节长度。两个帧格式都采用48bit(6字节)的目的地址和源地址。

    在以太网帧格式中,类型字段之后就是数据;而在802帧格式中,源地址之后紧跟着长度字节,再之后是3字节的802.2 LLC和802.2 SNAP。目的服务访问点(Destination Service Access Point)和源服务访问点(Source Service Access Point)的值都设置为0xAA。Ctrl字段的值设置为3,org code设置为0。再接下来的2个字节类型字段和以太网帧格式相同。

    CRC字段用于帧内后续字节差错的循环冗余检验(检验和)。802.3帧中数据部分至少为38字节,而以太网帧中数据部分最少为46字节。若数据部分不足最小要求,则剩余空间插入填充字节(pad)。

     

    图2 以太网和IEEE802封装格式

    SLIP(Serial Line IP),是一种在串行线路上对IP数据报进行封装的简单格式,在RFC 1055中有详细描述。SLIP适用于家庭中每台计算机都有RS-232串行端口(对当前计算机来说,这个串行端口已不是必须配置)和高速调制解调器接入Internet。SLIP报文的封装如图3所示。

     

    图3 SLIP报文的封装

     

           SLIP协议定义的报文:

    1. IP数据包以END(0xc0)的特殊字符结束。为了防止数据报到来之前的线路噪声被当做数据内容,在开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误报文。这样当当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而丢弃)。
    2. IP数据报内的END字符à 0xdb和0xdc。
    3. IP数据包内的ESC字符à 0xdb和0xdd。

    SLIP的缺陷:

    1. 每一端必须知道对方的IP地址。而且没有办法把本端的IP地址通知给另一端;
    2. 数据帧中没有类型字段。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。

    环回接口,以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回地址预留的,但是大多数主机默认127.0.0.1作为环回地址,并命名为localhost。

    图4是环回接口处理IP数据报的简单过程。

     

    图4 环回接口处理IP数据包的过程

     

           图中需指出的关键点:

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

    需注意,送给主机本省IP地址的IP数据报一般不出现在响应的网络上。

           以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节(802.3比以太网少了8字节,是因为将这8字节用于扩展的信息存储)。

      参考文献:

      《TCP/IP详解:卷1 协议》

  • 相关阅读:
    Elastic Search查询DSL的生成器
    清除Git仓库未托管的文件
    在Asp.net Core 中配置HTTPS支持
    VUE3的新构建工具Vite使用简介
    文档驱动 —— 表单组件(六):基于AntDV的Form表单的封装,目标还是不写代码
    文档驱动 —— 查询组件:使用 vue3.0 的新特性,重构代码
    文档驱动 —— 表单组件(五):基于Ant Design Vue 的表单控件的demo,再也不需要写代码了。
    文档驱动 —— 表单组件(四):基于Ant Design Vue封装一些表单域控件
    文档驱动 —— 表单组件(三):基于原生html的表单组件demo
    文档驱动 —— 表单组件(二):meta生成器,告别书写代码
  • 原文地址:https://www.cnblogs.com/life91/p/2999086.html
Copyright © 2011-2022 走看看