zoukankan      html  css  js  c++  java
  • TCP/IP之链路层协议

    TCP/IP协议族概述

    我们常说的 「TCP/IP」 是指一个协议族系列,并不是指一个「TCP」和一个「IP」两种协议。一般把「TCP/IP」协议族作为一个「分层系统」,比较常用的是「四层」体系和「七层」体系。这里我们只讨论简单清晰的「四层」体系。

    1.  链路层主要是涉及到物理传输媒介的传输细节。
    2. 网络层处理「分组」在网络中活动。主要包括IP协议(internet protocol),ICMP协议(internet control message protocol),IGMP协议(internet group management protocol)。
    3. 运输层主要是为两台主机提供端到端的通信。主要包括TCP和UDP。TCP比UDP提供更可靠的传输机制。
    4. 应用层负责处理特定的应用程序细节。如http是处理基于web的超文本传输协议。e-mail是处理邮件相应应用的协议。

    「用户数据」从「应用层」到「传输层」再到「网络层」,「链路层」,要经过每一层的处理,封装,当数据到达别一个主机端是,从反方向解析之前封装的数据。

     

    链路层协议

    链路层有三个目的:

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

    TCP/IP支持多种不同的协议,取决于网络所用的硬件(这也说明链路层是关系到物理传输媒介),一般有:以太网,令牌环网,光纤分布数据接口,RS-232串行线路等。

    以太网和IEEE802封装

    以太网协议在RFC894里定义,IEEE802协议在RFC1042里定义。它们都要求每台Internet主机都与一个10Mb/s的以太网电缆相连。

    「IEEE802」和「以太网」协议格式差不多:先是6字节的「目的地址」,及硬件物理地址(MAC地址)。后面是源(本机)物理地址。到于6字节物理地址和4字节的IP地址的映射关系,则是ARP和RARP协议的内容。CRC是冗余检验数据。两个协议不同的是中间部分(虚线内的部分):IEEE802有「长度」字段,指的是「数据」的长度(字节);以太网和IEEE802里的「类型」有一样的定义值,参考RFC1340

    SLIP:串线线路IP

    SLIP(serial Line IP)它是一种在串行线路上对IP数据报进行封装的简单形式。在RFC1055中说明。SLIP适用于家庭中有RS-232串行端口和高速调制解调器接入Internet。

    SLIP协议比较简单,因为它只是简单的封装了IP数据报,在每个数据帧的的开头和结尾都加上一个结束标志字节:「c0」,如果遇到了IP数据报中有「c0」,就要进行转义,这里定义的转义字节是:「db」,所以「dbc0」代表「c0」,[dbdd]代表「db」。这里听起来比较难理解的话,可以类开高级开发语言中转义字符「\」,「\n」代表换行,「\\」代表「\」。

    PPP:点对点协议

    PPP协议是对SLIP协议的加强版。

     

     PPP相比SLIP多了「协议」类型这个字段:

    • 0021 : 基本IP数据报封装
    • C021: 建立,配置及测试数据链路控制协议(LCP:link control protocol)
    • 8021: 针对不同的网络层协议的网络控制协议(NCP:network control protocol)

     环回接口(Loopback Interface)

     大家都熟知「127.0.10.1」或者「localhost」,也知道它们主要是同一台主机上两个应用进行TCP/IP通信的IP地址或主机名。这就是「环回接口」的相关概念。

    NOTE

    1. 一个传给环回接口的IP数据报不能出现在任何网络上
    2. 传给广播地址或多播地址的数据报复制一分给环回接口,然后才送到以太网上。这是因为广播和多播传送本身就包括主机本身
    3. 任何传给该主机IP地址的数据均送到环回接口

    最大传输单元MTU

     链路层传输中,每次单元传输都有一个长度限制,正如前面看到的以太网,IEEE802。这就是MTU(maximum transmission unit),最大传输单元。

    上机总结

    PS:本系列文章是学习《TCP/IP详解》这本书做的笔记,基本上是把书里面的要点记下来。虽然基本上是照着书里的字段和图示记录。但是每个章节基本上也是花了很多时间看了很多遍,还要对着书里的一些参考附录学习,如很多的RFC文档引用。像这篇文章就花了我大概八个小时的时间学习去理解。

  • 相关阅读:
    最近面试有感,不要耍小聪明,面试官都是开了上帝视角的
    Mac OS X上编写 ASP.NET vNext 系列中断和再开声明
    Mac OS X 上编写 ASP.NET vNext (二) IDE配置
    Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建
    Redhat Linux /etc/profile 与 /etc/bashrc 的区别
    IIS7 Application Pool Integrate Mode 和 Classic Mode 的区别
    Linux 学习笔记(一) 入门
    SQL Server 常用分页SQL
    winform 如何控制输入法
    winform 记录全局异常捕获
  • 原文地址:https://www.cnblogs.com/jcli/p/2874091.html
Copyright © 2011-2022 走看看