TCP/IP之IP
原创
©著作权归作者所有:来自51CTO博客作者gauyanm的原创作品,如需转载,请与作者联系,否则将追究法律责任
I P是T C P / I P协议族中最为核心的协议。所有的
T C P、U D P、I C M P及I G M P数据都以I P数据
报格式传输(见图)。
许多刚开始接触T C P / I P的人对I P提供不可靠、无连接的数据报传送服务感到很奇怪。
不可靠( u n r e l i a b l e)的意思是它不能保证I P数据报能成功地到达目的地。I P仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误处理算法:丢弃该数据报,然后发送I C M P消息报给信源端。任何要求的可靠性必须由上层来提供(如T C P)。
无连接( c o n n e c t i o n l e s s)这个术语的意思是I P并不维护任何关于后续数据报的状态信息。
每个数据报的处理是相互独立的。这也说明, I P数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。
接下来还是引用几张图来直观说明一下IP协议。
IP地址和MAC地址:
IP协议工作原理:
IP 数据报的格式:
一个IP 数据报由首部和数据两部分组,成首部的前一部分是固定长度,共 20 字节,是所有 IP 数报必须具有的.在首部的固定部分的后面是一些可选字段,其长度是可变的
1.版本——占 4 位,指IP协议的版本
目前的 IP 协议版本号为 4 (即 IPv4)
2.首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是60字节。
3.区分服务——占 8 位,用来获得更好的服务。
在旧标准中叫做服务类型,但实际上并未被使用过。
仅在使用区分服务(DiffServ)时,此字段才起作用。
4.总长度——占 16 位,指首部和数据之和的长度,
单位为字节,因此数据报的最大长度为 65535 字节。
总长度必须不超过最大传送单元 MTU。
MTU:网络规定的一个帧最多能够携带的数据量
IP数据报的长度只有小于或等于网络的MTU,才能在这个网络传输
与路由器连接的各个网络的MTU可能不同
5.标识---占16位
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
6.标志(flag)——占 3 位,目前只有后两位有意义
标志字段的最低位是 MF (More Fragment)
MF = 1 表示后面“还有分片”
MF = 0 表示最后一个分片
标志字段中间的一位是 DF (Don't Fragment)
只有当 DF = 0 时才允许分片
000 可以分片,但不用分片
或已是最后一片
001 可以分片,后面还有分片
010 不可分片
分片:IP数据报的尺寸大于将发往网络的MTU值时,路由器将IP数据报分成若干较小的部分的过程
每个分片由报头区和数据区两部分构成
每个分片经过独立的路由选择等处理过程,最终到达目的主机
分片控制:
1.标识
源主机赋予IP数据报的标识符
该域需要复制到新分片的报头中
目的主机利用此域和目的地址判断分片属于哪个数据报
2.标志
是否已经分片,是否是最后一个分片
3.片偏移
本片数据在初始IP数据报数据区的位置
偏移量以8B为单位
重组:
1.重组:在接收到所有分片的基础上,主机对分片进行重新组装的过程
2.目的主机进行重组
减少了中间路由器的计算量
路由器可以为每个分片独立选路
3.路由器不需要对分片进行重组,也不可能对分片进行重组
-------------------------------------------------------------------------
7.片偏移----(13 位) :较长的分组在分片后
某片在原分组中的相对位置。
片偏移以 8 个字节为偏移单位。
8.生存时间----(8 位)记为 TTL (Time To Live),这是为了
限制数据报在网络中的生存时间,其单位最初是秒,
但为了方便,现在都用“跳数”作为 TTL 的单位。
数据报每经过一个路由器,其 TTL 值就减 1。
9.协议------(8 位)字段指出此数据报携带的数据使用何种协议
以便目的主机的 IP 层将数据部分向上层正确交付
10.首部检验和----(16 位)字段只检验数据报的首部
不包括数据部分。
这里不采用 CRC 检验码而采用简单的计算方法。
IP 数据报首部的可变部分
• IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
• 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
• 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
• 实际上这些选项很少被使用。