• TCP/IP ---封装与分用


    封装

    当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作
    一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部
    信息),该过程如图1 - 7所示。T C P传给I P的数据单元称作T C P报文段或简称为T C P段(T C P
    s e g m e n t)。I P传给网络接口层的数据单元称作I P数据报(IP datagram)。通过以太网传输的比特
    流称作帧(Fr a m e )。

    由于T C P、U D P、I C M P和I G M P都要向I P传送数据,因此I P必须在
    生成的I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为
    8 b i t的数值,称作协议域。1表示为I C M P协议, 2表示为I G M P协议, 6表示为T C P协议, 1 7表
    示为U D P协议。

    类似地,许多应用程序都可以使用T C P或U D P来传送数据。运输层协议在生成报文首部
    时要存入一个应用程序的标识符。T C P和U D P都用一个1 6 b i t的端口号来表示不同的应用程序。
    T C P和U D P把源端口号和目的端口号分别存入报文首部中。

    网络接口分别要发送和接收I P、A R P和R A R P数据,因此也必须在以太网的帧首部中加入
    某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16 bit的帧
    类型域。

    分用

    当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各
    层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的
    上层协议。这个过程称作分用( D e m u l t i p l e x i n g),图1 - 8显示了该过程是如何发生的。

    为协议I C M P和I G M P定位一直是一件很棘手的事情。在图1 - 4中,把它们与I P放在
    同一层上,那是因为事实上它们是I P的附属协议。但是在这里,我们又把它们放在I P层
    的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。

    对于A R P和R A R P,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程
    序的上方,这是因为它们和I P数据报一样,都有各自的以太网数据帧类型。但在图2 - 4
    中,我们又把A R P作为以太网设备驱动程序的一部分,放在I P层的下面,其原因在逻
    辑上是合理的。
    这些分层协议盒并不都是完美的。

  • 相关阅读:
    一起谈.NET技术,C#特性Attribute的实际应用之:代码统计分析 狼人:
    uploadify+C#实例
    GoldenGate DDL双向复制
    [置顶] Cocos2dx 深入解析系列:以XML文件方式保存用户数据
    打包软件里面安装完打开网页
    [置顶] NYOJ38 布线问题
    IDC:PC 今年第一季度出货量继续下滑趋势,比起去年同期跌了13.9%
    设计模式之组合模式java实现
    Linux C下实现线程池
    [置顶] Unix 网络编程系列05
  • 原文地址:https://www.cnblogs.com/saryli/p/5287830.html
Copyright © 2020-2023  润新知