zoukankan      html  css  js  c++  java
  • 初始IP协议

    一、引言

    发送一段TCP数据大致需要经过:用户封装 –> TCP封装 –> IP封装 –>帧封装

     

    Note:用户封装没啥好说的,都是客户自己决定的,在一些简单的应用情况下,这个步骤可以省去。

    本篇重点讲述IP封装。

    二、IP协议解析

    一般的IP首部长度为20个字节,除非含有选项字段

     

    第一行字段如下:

    版本(4bit):目前版本协议好是4,所以IP有时也称为IPv4

    首部长度(4bit):记录首部占用一个整型(32bit)的个数。所以,一般IP头(没有选项)

    的这个字段指是5

    服务类型(8bit):包括一个3bit的优先权字字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。

    总长度(16bit):总长度字段是指整个IP数据报的长度,以字节为单位。

    第二行字段如下:

    标识(16bit):对于发送端发送的每份IP数据报来说,其标识字都包含一个唯一的值。该值

    在数据报分片时被复制到每个片中。

    标志(3BIT):    标志字段用其中的一个比特来标识“更多的片”。除了最后一片外,其他每个

    组成数据报的片都要把该比特置1。

    标志字段中有一个比特作“不分片”位。如果这一个比特置1,IP将不对数据报

    进行分片。

    片偏移(13Bit):片移字段指的是该片偏移原始数据报开始除的位置。

    第三行字段如下:

    生存时间(8bit):生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的

    生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个路由器,指就减一。当该值为0时,数据报就被丢弃,并且发送ICMP报文通知源主机。

    协议(8bit):协议字段用来表示具体的封装协议。1:ICMP  2:IGMP  6:TCP   17:UDP

    首部校验和(16bit):首部校验和字段是根据IP首部计算的检验和码。

    第四行字段如下:

    源IP地址(32bit):32bit IP源地址

    第五行字段如下:

    目的IP地址(32bit):32bit IP目的地址

    第六行字段如下:(任选)

    最后一个字段是任选项,是数据报中的一个可变长的信息。目前这些选项定义如下:

             安全和处理限制

    记录路径

    时间戳

    宽松的源站选路

    严格的源站选路

  • 相关阅读:
    OPENGL学习笔记整理(一)
    OPENGL学习笔记整理(二):纹理知多少?
    OPENGL学习笔记整理(三):缓冲区对象
    细节决定成败(基础知识收集)
    OPENGL学习笔记整理(四):几何图元渲染
    目标规划,利用业余时间。欢迎大家指导。
    微型通用程序框架
    COM在注册表中的相关键值及其意义
    C#编写基于.Net IOCP的高性能服务器(转)
    Java获取XML节点总结之读取XML文档节点
  • 原文地址:https://www.cnblogs.com/mfc1207/p/9034820.html
Copyright © 2011-2022 走看看