网络协议IP

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

ip数据包的格式:

IP协议是TCP/IP体系中两个主要的协议之一,而IP地址位于IP数据报的首部,在网络层及以上使用的是IP地址,因此在数据链路层是看不见数据报的IP地址,另外首部的前一部分是固定长度,共20字节。在TCP/IP的标准中,各种数据格式常以32位为单位来描述,通过分析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);
}

程序:

时间: 2024-10-07 03:10:13

网络协议IP的相关文章

网络协议——IP

IPv4地址 网络中的任何一台设备都要通过网络接口卡(NIC)接入网络,如果该台设备想要被其他设备访问到,那么其网卡必须有一个唯一的地址.一台设备还可以有多个网卡并同时接入多个网络,相应地该设备就有多个地址,如果这个设备是主机的话,一般被称为multihomed主机.路由器一般有多个网卡并接入多个网络,所以路由器也有多个地址,但是一般不把路由器称为multihomed主机. IPv4使用一个32位二进制地址,所以理论上可供使用的IPv4地址一共由4 294 967 296个,即232.为了便于管

常见的网络协议有哪些?

原文链接地址:http://blog.sina.com.cn/s/blog_9cf7416701012pw4.html 在网络的各层中存在着许多协议, 它是定义通过网络进行通信的规则, 接收方的发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息, 以这种规则规定双方完成信息在计算机之间的传送过程. 下面就对网络协议规范作个概述: ARP(Address Resolution Protocol)地址解析协议 它是用于映射计算机的物理地址和临时指定的网络地址. 启动时它选择一个协议(网络层

TCP/IP网络协议

什么是协议?协议就是双方约定的规则.同理,在网络中,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议. 下面是我百度的定义: TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议)协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式.TCP/IP是INTERNET的基础协议,也

加域报错:“TCP/IP没有安装网络协议”

检查电脑后发现问题: 1.电脑不能自动获取IP地址 2.手动设置IP地址后加域报错 估计TCP/IP协议损坏,重新安装即可解决:以下为重装TCP/IP协议方法: 1.打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2 2.用记事本打开%winroot%\inf\nett

对TCP/IP网络协议的深入浅出归纳

前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网络协议有了初步的认识,在这里总结出来,可以梳理一下我对网络协议的理解,加深印象. 话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样.一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通.两台电脑之间进行通讯所共同遵守的规则,就是网络协议. 那么

TCP/IP网络协议基础知识集锦[转]

引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以存在OSI互联参考模型主要有以下几点好处: 1.用于解决不同厂商的设备互联问题:即兼容性考虑; 2.层次化结构独立性强;可扩展性强; 3.统一标准可以方便学习; TCP/IP模型 TCP/IP模型与OSI模型的相互关系如下图所示: 注释 1.应用层:与OSI的应用层.表示层.会话层相对应,主要作用是

《网络协议》IP 分片与 TCP 分段

最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位).数据链路层中的网络对数据帧的长度都有一个限制,不同网络的 MTU 值不同,常用的以太网为 1500 个字节. 若在 IP 层要传输的数据报大小比链路层的 MTU 还大,那么 IP 层就会对这个数据报进行分片.一个数据报会被分为若干片,每个分片的大小都小于或者等于链路层的 MTU 值. IP 数据报分片以后,只有到达目的地才进行重新组装(这里的重新组装是达

iOS网络协议----HTTP/TCP/IP浅析

一.TCP/IP协议 话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样.一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通.两台电脑之间进行通讯所共同遵守的规则,就是网络协议. 那么谁来制定这个网络协议? 国际标准化组织(ISO)定义了网络协议的基本框架,被称为OSI模型.要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息 给B电脑时是否需要B电脑进行反馈,A电脑传送给B电脑的数据的格式又是怎样的?内容太多太杂,

对TCP/IP网络协议的深入浅出归纳(转)

前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网络协议有了初步的认识,在这里总结出来,可以梳理一下我对网络协议的理解,加深印象. 话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样.一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通.两台电脑之间进行通讯所共同遵守的规则,就是网络协议. 那么