网络协议IP

发布时间:2020-07-27 03:13:51 作者:飛飛飛jjs
来源:网络 阅读:335

                IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。IP的责任就是把数据从源传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协议来说很普通的服务。

                    ip数据包的格式

    

网络协议IP

IP协议是TCP/IP体系中两个主要的协议之一,而IP地址位于IP数据报的首部,在网络层及以上使用的是IP地址,因此在数据链路层是看不见数据报的IP地址,另外首部的前一部分是固定长度,共20字节。在TCP/IP的标准中,各种数据格式常以32位为单位来描述,通过分析IP数据报的格式就能够知道IP协议都具有哪些功能    

                    分析捕捉到的数据包:

网络协议IP

网络协议IP

            从捕捉的数据包看出是ipv4的版本,首部长度为20字节,次长度为固定长度,total length :60 全部长度为字节  Differentiated services Field: 0xoo 指明服务类型;flags  标志  Fragment offset :0 片偏移量为零。time to live :64 生存时间,又叫跳数。header checksum :oxee19 校验和,可验证数据包是否出错,source:172.28.15.1 原地址的ip Destination:172.28.15.55为目的地址ip

            IP使用四个关键技术提供服务:服务类型,生存时间,选项和报头校验码。服务类型指希望得到的服务质量。服务类型是一个参数集,这些参数是Internet能够提供服务的代表。这种服务类型由网关使用,用于在特定的网络,或是用于下下一个要经过的网络,或是下一个要对这个数据报进行路由的网关上选择实际的传送参数。生存时间是数据报可以生存的时间上限。它由发送者设置,由经过路由的地方处理。如果未到达时生存时间为零,抛弃此数据报。对于控制函数来说选项是重要的,但对于通常的通信来说它没有存在的必要。选项包括时间戳,安全和特殊路由。报头校验码保证数据的正确传输。如果校验出错,抛弃整个数据报

        IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。

                    接下来即是校验和的计算:

          IP首部校验和的计算方法

            1.把校验和字段清零。

          2.然后对每16位(2字节)进行二进制反码求和,反码求和的意思是先对每16位求和,再将得到的和转为反码。

            下面以网络上的例子讲述:

                                

        接收方进行校验时,也是对每16位进行二进制反码求和。接收方计算校验和时的首部与发送方计算校验和时的首部相比,多了一个发送方计算出来的校验和。因此,如果首部在传输过程中没有发生差错,那么接收方计算的结果应该为全一,因为接收方计算除校验和以外的部分得到值是校验和的反码,再加多出来的校验和当然是全一了。

          最后对上述过程举个例子:先将校验和字段置零;

                              IP头:

                              45 00    00 31

                              89 F5    00 00

                              6E 06    00 00(校验字段)

                              DE B7   45 5D       ->    222.183.69.93

                              C0 A8   00 DC     ->    192.168.0.220

                              计算:  

                      4500 + 0031 +89F5 + 0000 + 6e06+ 0000 + DEB7 + 455D + C0A8 + 00DC =3 22C4

                      0003 + 22C4 = 22C7

                      ~22C7 = DD38      ->即为应填充的校验和

        

                     当接受到IP数据包时,要检查IP头是否正确,则对IP头进行检验,方法同上:

             计算:

                 4500 + 0031 +89F5 + 0000 + 6E06+ DD38 + DEB7 + 455D + C0A8 + 00DC =3 FFFC

                 0003 + FFFC = FFFF

             得到的结果是全一,正确

(作业)

        求校验和的算法及程序:

                    算法:

                    SHORT checksum(USHORT* buffer, int size){
    unsigned long cksum = 0;
    while(size>1)
    {
        cksum += *buffer++;
        size -= sizeof(USHORT);
    }
    if(size)
    {
        cksum += *(UCHAR*)buffer;
    }
    cksum = (cksum>>16) + (cksum&0xffff); 
    cksum += (cksum>>16); 
    return (USHORT)(~cksum);
}

          程序:







推荐阅读:
  1. 网络协议
  2. 网络协议概述

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ip services 网络连接

上一篇:【MongoDB学习笔记27】MongoDB的TTL索引

下一篇:探究Ubuntu如何存储用户登录密码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》