IP协议

 

目录

一、IP协议来源

二、IP协议功能

三、IP地址分类

3.1、IP地址类别

3.2、特殊的IP地址

3.3、子网掩码

四、IP报文格式

六、IP分片偏移

6.1、分片原因

6.2、不同传输层协议的分片

七、IP报文重组

八、IP报文校验

【扩展资料】


一、IP协议来源

    Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。

    Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。

    我们都已经知道,Internet是由无数台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。

 

二、IP协议功能

    1、寻址和路由。(根据对方IP地址,寻找最佳路径传输信息)

    2、传递服务

        a、不可靠(IP协议只是尽自己最大努力去传输数据包),可靠性由上层协议提供(TCP协议)。

        b、无连接(事先不建立会话),不维护任何关于后续数据报的信息。

    3、数据包的分片和重组

 

三、IP地址分类

3.1IP地址类别

 

各类别地址的网段范围根据网络地址取值范围确定。

(1) A类地址,一个A类地址是由一个字节的网络地址三个字节的主机地址组成,网络地址的最高位必须是“0

    保留地址:127.0.0.0~127.255.255.255,用做循环测试。

    私有地址:10.0.0.0~10.255.255.255。

 

(2) B类地址,一个B类地址是由两个字节的网络地址和两个字节的主机地址组成,网络地址的最高位必须是“10

    保留地址:169.254.0.0~169.254.255.255。如果IP地址是自动获取IP地址,而在网络上又没有找到可用的DHCP服务器,这时将会从169.254.0.1到169.254.255.254中临时获得一个IP地址。

    私有地址:172.16.0.0~172.31.255.255。

 

(3) C类地址,一个C类地址是由三个字节的网络地址和一个字节的主机地址组成,网络地址的最高位必须是“110

    私有地址:192.168.0.0~192.168.255.255。

 

(4) D类地址,不区分网络地址和主机地址,D类地址是一种组播地址,D类地址的第一个字节以1110开始。目前D类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

 

(5) E类地址,不区分网络地址和主机地址,E类地址是保留地址用于以后使用。E类地址的第一个字节以1111开始。

 

 

3.2、特殊的IP地址

3.2.10.0.0.0

    严格来说,0.0.0.0不是一个真正意义上的IP地址。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指本机的路由表里没有特定条目指明如何到达。对本机来说,它就像一个“收容所”,对于不认识的“三无人员”,一律送进去。如果在网络设置中设置了缺省网关,windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。

 

3.2.2、广播地址255.255.255.255

    限制广播地址。对本机来说,这个地址是本网段内(同一广播域)所有主机。如果翻译成人类语言,类似这样:“这个房间里所有人都注意了!”。这个地址不能被路由器转发。

 

3.2.3、回环地址127.0.0.1

    本机地址,主要用于测试。windows中这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发送到网络接口的。除非出错,否则传输介质上永远不可能出现目的地址为127.0.0.1的数据包。

 

3.2.4165.254.X.X

    如果主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,windows会为你分配这样一个地址。

 

3.2.5、组播地址

    即D类地址,从240.0.0.0~239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果主机开启了IRDP(Internet路由发现协议,使用组播功能)功能,则主机路由表中应该有这样一条路由。

 

3.2.6、私有地址

A类地址的私有地址:10.0.0.0~10.255.255.255

B类地址的私有地址:172.16.0.0~172.31.255.255

C类地址的私有地址:192.168.0.0~192.168.255.255

 

    这些地址不会被Internet分配,在Internet上也不会被路由,虽然不能直接和Internet连接,但通过技术手段仍旧可以和Internet通讯(NAT:Network Address Translation)。

    当私有网络内的主机要与位于公网上的主机进行通讯时必须经过地址转换,将其私有地址转换为合法公网地址才能对外访问。

 

    设局域网内部网络的地址是10.0.0.0网段,而对外的正式IP地址是202.196.3.23 。内部的主机10.1.1.48以www方式访问网外的服务器202.18.245.251。主机10.1.1.48发出一个数据报文,选择一个源端口6084,目的端口为80。

 

    在通过代理服务器后,该报文的源地址和端口可能改为202.196.3.23:32814,目的地址与端口不做改变。在代理服务器中维护着一张地址端口对应表。当外部网络的WWW服务器返回结果时,代理服务器会将结果数据报文中的目的IP地址及端口转化为10.1.1.48:6084。这样,内部主机10.1.1.48就可以访问外部的服务器了。

 

 

3.3、子网掩码

    子网掩码(Subnet Mask)又叫网络掩码,是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,哪些位标识的是主机。子网掩码不能单独存在,必须结合IP地址一起使用。将某个IP地址划分成网络地址和主机地址两部分。

A类地址默认子网掩码:255.0.0.0

B类地址默认子网掩码:255.255.0.0

C类地址默认子网掩码:255255255.0

 

 

四、IP报文格式

 

版本号:4个bit,用来标识IP版本号。这个4位字段的值设置为二进制的0100表示IPV4,设置为0110表示IPV6。

首部长度:4个bit,标识包括选项在内的IP头部字段长度。

服务类型:8个bit。服务类型字段被划分成两个子字段。3bit的优先级字段和4bit的TOS字段,最后一位为0。4bit的TOS分别代表:最小时延,最大吞吐量,最高可靠性,最小花费。4bit中只能将其中一个bit位置1。如果4个bit均为0,则代表一般服务。

总长度:16个bit,接收者用IP数据报总长度减去IP报头长度就可以确定数据包数据有效负荷大小。IP数据报最长可达65535字节。

标识:16个bit。唯一的标识主机发送的每一份数据包。接收方根据分片中的标识字段是否相同来判断这些分片是否是同一个数据报的分片,从而进行分片的重组。通常没发送一份报文它的值就加1。

标志:3个bit,用于标识数据报是否分片。第1位没有使用,第2位是不分段位(DF)。当DF位置1时,表示路由器不能对数据包进行分段处理。如果数据包由于不能分段而未能转发,那么路由器将丢弃该数据包并向源发送ICMP不可达。第3位是分段位(MF),当路由器对数据包进行分段时,除了最后一个分段的MF位置0,其它的分段的MF位均置1,以便接收者直到收到MF位为0的分片为止。

片偏移:13个bit,在接收方进行数据报重组时用来标识分片的顺序。用于指明分段起始点相对于报头起始点的偏移量。由于分段到达时可能乱序,所以片偏移字段可以使接收者按照正确的顺序重组数据包。当数据包长度超过它索要取得那个数据链路的MTU时,路由器要将它分片。数据包中的数据被切分成小片,每一片被封装在独立的数据包中。接收端使用标识符,分段偏移以及标记域的MF位来进行重组。

生存时间:8个bit,TTL域防止丢失的数据包无休止的传播。该域包含一个8位整数,此数由产生数据包主机设定。TTL值设置了数据报可以经过的最多的路由器数。TTL的初始值由源主机设置(通常为32或64),每经过一个处理它的路由器,TTL减1.如果一台路由器将TTL减为0,它将丢弃该数据包并发送一个ICMP超时消息给数据包源地址。

协议:8个bit,用来标识是哪个协议向IP传送数据。ICMP为1,IGMP为2,TCP为6,UDP为17,GRE为47,ESP为50。

首部校验和:根据IP首部计算的校验和码。

选项:是数据报中的一个可变长的可选信息。选项字段以32bit为界,不足时插入值为0的填充字节。保证IP首部始终是32bit的整数倍。

 

 

六、IP分片偏移

6.1、分片原因

    以太网的MTU是1500。如果IP层有数据要传,而且数据包的长度超过了MTU(最大传输单元, Maximum Transmission Unit),那么IP层就要对数据包进行分片(Fragmentation)操作,使每一片长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网MTU1500字节,一般TCP首部20字节UDP首部8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

 

6.2、不同传输层协议的分片

TCP协议

    对于TCP协议来说尽量避免分片,因为当在IP层(TCPTCP/IP的第三层传输层,对应OSI的传输层。IPTCP/IP的网络层/互联层,对应OSI的网络层)进行了分片后。如果其中某分片数据丢失,则需对整个数据报重传。因为IP层没有超时重传机制,当来自TCP报文段的某片丢失后,TCP在超时后重发整个TCP报文段,该报文段对应于一份IP数据报,没有办法只重传数据报中的一个数据报片。

 

    TCP协议可以避免分片,TCP在建立连接时会进行3次握手,而在这3次握手中,客户端和服务端通常会协商一个值,那就是MSS(最长报文大小),用来表示本段所能接受的最大长度报文段。MSS=MTU-TCP首部大小-IP首部大小。MTU值通过查询链路层得知。

 

    当两端确认好MSS后进行通信,TCP层往IP层传输数据时,如果TCP层缓冲的大小大于MSS,则TCP层会将其中的数据分组进行传输,这样就避免了在IP层进行分片。

 

UDP协议

    对于UDP而言,由于UDP是不需要保证可靠性的,没有超时和重传机制,这使得UDP很容易导致IP分片。

    UDP协议分片会根据IP报文字段中的标识字段、标志字段、片偏移字段来解决。   

 

    对于每份IP数据报来说,其16位标识字段都包含一个唯一值。在数据报被分片时,这个值同时被复制到每个片中。用来识别分片的数据是否为同一个数据报文。

    在IP首部中,有一个3位的标志字段,其中第1位是R作为保留字段未用。第2位时DF用来表示一个数据报是否允许在IP层被分片,DF=0时允许分片。第3位是MF,为0时表示最后一个分片。

    如果将其中分段标志DF置1,表示不允许IP层对数据报进行分片。此时路由器接收到后会丢弃该数据报并发送一个ICMP差错报文。

    IP首部的13位片偏移字段表示IP分片在整个数据流中的位置,第一个数据报分片的偏移量置0,后续偏移量大小根据网络的MTU大小设置,且必须为8的整数倍

 

分片过程:

    被分片后的各个IP数据报可能经过不同的路径到达目标主机。分片后的IP数据报和原来没有分片的IP数据报结构是相同的,即也是由IP数据报头和IP数据区两部分组成:

    分片后的IP数据报,数据区是原IP数据报数据区的一个连续部分(多读几次,有点绕口)。头部是原IP数据报头部的复制,但与原来未分片的IP数据报头部有点不同:标志和片偏移。

 

    对于上图中偏移量的计算:分片1的偏移为0。分片2的偏移为600。分片3的偏移是1200。由于实际在IP地址中,偏移是以8个字节为单位计算,因此IP数据报中分片1的偏移是0。分片2的偏移是75。分片3的偏移是150。

 

 

七、IP报文重组

    IP报文分片后需要进行重组,且只能在目标主机进行重组。分片重组时,采用了一组重组定时器,片重组的控制主要通过数据首部中标识、标志、偏移字段进行重组。

    重组策略:

        1、第一个分片偏移值为0。

        2、将第一个分片携带的数据长度除以8,结果就是第二个分片偏移值。

        3、将第一个和第二个分片携带数据总长度除以8,结果就是第三个分片偏移值。

        4、继续以上过程,直到之后分片的MF标志位为0。根据标识字段确定分片来源于哪个IP数据报。

 

八、IP报文校验

8.1IP报文校验和计算方式

    1、为了计算一份数据报的IP校验和,首先需要把校验和字段置1。

    2、对首部中每隔16bit进行二进制反码求和(整个首部看成是一串16bit的字组成)。

 路由器收到IP报文,转发后需要对TTL减去1,这样的话IP报文校验和数值也要进行相应改变。

 

8.2IP报文不对数据校验原因

    上层传输层是端到端的协议,进行端到端的校验比进行点到点的校验开销小。

 

8.3IP报文对IP首部校验原因

    IP首部属于IP层协议的内容,上层协议无法处理。IP首部的部分字段在点到点的传递过程中是不断变化的,只能在每个中间点重新形成校验数据,在相邻点完成校验。

 

 

数据报抓包解释:

45 00 00 4b:4表示IPV4版本;5表示首部长度为5个32bit字长,即20字节。00 4b表示IP数据总长度为75字节,其中IP数据部分为:75-20=55字节。

49 5f 00 00:49 5f 表示标识符,00 00 表示3bit标志及13bit偏移量。

80 11 99 24:80表示TTL值是128,11表示协议号为17的UDP协议。99 24表示16bit的头部校验和值。

C0 a8 00 04:表示32bit的源IP地址为192.168.0.4。

0e 74 88 fe:表示32bit的目的IP地址为14.116.136.254。

 

校验和计算:

首先把校验和字段置0

45 00 00 4b

49 5f 00 00

80 11 00 00    <---- 校验和置0

C0 a8 00 04

0e 74 88 fe

 

其次,对整个首部中每个16bit进行二进制反码求和(等价于二进制求和再取反),具体操作可打开windows附带计算器,切换到16进制运算。

然后再2 + 66D9 = 66DB。

最后66DB + 9924 = FFFF。因此判断ip首部在传输过程中没有发生任何差错。

 


【问题&答案】

Q:为什么有了IP地址,还要用MAC地址?

A:

1、IP地址一般情况下容易修改和变动,具有随意性,不能在网络中固定标识一台设备。

2、MAC地址一般情况下出厂时由厂家烧录到网卡中,不容易修改,在局域网中容易定位设备。

3、从拓扑结构和分层上分析,IP地址属于网络层,主要功能在广域网范围内路由寻址,选择最佳路由。而MAC选址在网络接口层要形成适合于网络媒体上传输的数据帧。

 

注意:标识一个设备的三种方式:1、域名访问(应用层)。2、设备IP地址访问(网络层)。3、设备MAC地址访问(局域网中唯一标识该设备,实际不用其访问,在网络接口层具有固定特性,不易发生紊乱)。

 

 

【扩展资料】

1、TCP协议

2、网络参考模型(OSI七层模型、TCP/IP四层和五层模型)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻欢子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值