课程笔记(2)

 

IPV4协议应用

 

一、IP数据报格式:

(注:每个ip数据包都包含有一个头部和一个正文部分,其中头部又包含一个20字节的定长部分和一个可选的变长部分.数据包头部的传输采用big-endian字节序.

1、头部20字节分别记录有版本(version) (占用4bit位)取值为:IPv4: 4, IPv6: 6

2 IHL(头部长度,以字为单位,至少为5,最大为15,即可限制头部长度为60字节,因此可选项最多为40字节)(4bit),

3、服务类型(type of service)一共6bit,从左到右依次为一个3位的precedence,4个标志D,T,RC(延迟,吞吐量,可靠性,最小费用) 和一位保留位。接 下来是2个字节的总长度,最大长度为65535字节.该字段通常不使用。

 4、包的总长度: 16位,最长为:65535, 实际上决定于MTU(最大传输单元),对以太网为1500字节。

5TTL,存活周期,是一个限制分组生存期的计数器.计数时间为秒,一共占8,所以最大生存期为255(秒/点)通常为64。当他递减到0,路由器给源主机发送一个警告分组,原分组被丢弃.这样可以避免数据报长时间存在网络中.

6、标志(Identification)的用途 是让目标主机确定一个新的数据段属于哪个数据包,同一个数据报的分段有相同的标志值.接下来是一个空的bit,  后面是21位域,DF表示不分段, MF表示更多的分段,除最后一个分段外其他所有分段都要设这一位.因为接收方可以知道一个数据报的所由分段都已经到达了. 然后是13位的分段偏移,所以每个数据报最多有8192个分段.

7、协议:8位,占8位,协议字段指出此数据报携带的数据是使用何种协议(上层协议),以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。协议可包括TCPUDPTELNET等。
1=ICMP,2=IGMP,3=TCP,17=UDP...


8
、首部校验和:16位,首部检验和字段是根据I P首部计算的检验和码。它不对首部后面的数据进行计算。I C M PI G M PU D PT C P在它们各自的首部中均含有同时覆盖首部和数据检验和码。为了计算一份数据报的I P检验和,首先把检验和字段置为0。然后,对首部中每个16 bit 进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当收到一份I P数据报后,同样对首部中每个16 bit 进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该 为全1。如果结果不是全1(即检验和错误),那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
9
、源IP地址:32位,发送IP的主机地址。
10
、目的IP地址:32位,数据发往的IP主机

下面,我们再自己根据上面的IP数据报格式,定义一个IP数据结构:

typedef struct ip_hdr
{
    unsigned char ip_verlen;          // 8bit 4
版本 + 4首部长度
    unsigned char ip_tos;               // 8bit
服务类型
    unsigned short ip_totallength;   // 16bit
总长度(字节数)
   
    unsigned short ip_id;                 // 16bit
标识
    unsigned short ip_fragoffset;     // 16bit 3bit
标志 + 13bit片偏移,
    
    unsigned char ip_ttl;                  // 8bit
生存时间(TTL)
    unsigned char ip_protocol;       // 8bit
上层协议
    unsigned short ip_checksum;     // 16bit
首部检验和
    
    unsigned int   ip_srcaddr;          // 32bit
IP地址
    
    unsigned int   ip_destaddr;        // 32bit
目的IP地址
} IPV4_HDR, *PIPV4_HDR, FAR * LPIPV4_HDR


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值