美文网首页
3.IP协议

3.IP协议

作者: iamc | 来源:发表于2016-12-23 14:54 被阅读38次
  • 介绍
    IP协议是TCP/IP的网络层协议,下层是数据链路层,上层是传输层,IP协议有两个特点:
    1.不可靠
    不可靠(u n r e l i a b l e)的意思是它不能保证 I P数据报能成功地到达目的地。
    I P仅提供最好的传输服务。

如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误处理算法:丢弃该数据报,然后发送 I C M P消息报给信源端。

任何要求的可靠性必须由上层来提供(如T C P)。

2.无连接
是 I P并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, I P数据报可以不按发送顺序接收。
如果一信源向相同的信宿发送两个连续的数据报(先是 A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此 B可能在A到达之前先到达。


  • IP数据报
IP数据报

IP数据报由IP数据报首部+选项+数据组成。如果不包含选项,那么头部长20字节。其中,数据是传输层的数据报,长度不定。

IP数据报首部中,0是高地址,31是地址,传输顺序按照07,815,1623,2431进行传输。这种数据的高位放在存储的高地址,数据的地位放在低地址的方式叫做大端存储。因为TCP/IP也正式采用大端存储方式,所以这种存放数据的方式也叫网络字节序,所以,为了保证数据是以网络字节序的方式进行传输,socket有接口有专门的函数对IP数据报进行转换。

和大端存储相反,小端存储将数据的高位存放在内存的低地址,数据的地位存放在数据的高地址。<<汇编语言 王爽>>

4位版本:目前是0010,也就是4,这个版本的IP协议称为IPv4,IP长度是32

4位首部长度:指的是IP首部+选项一共多少个字节(TCP/IP详解-卷一 中说的是“首部长度指的是首部占 32 bit字的数目,这翻译真不怎样”),从上面的IP数据报图中我们可以看出,如果没有选项,首部长度就是5,普通IP数据报是没有选项的,所以就是5。

8位服务类型(TOS): 8位服务类型包括:
一个3 bit的优先权子字段(现在已被忽略)
4 bit的TOS子字段
1 bit未用位字段,但必须置0

服务类型字段TOS的推荐值

4 bit的TO S分别代表:
TOS表示该数据报所使用的服务类型,分别有最小时延、最大吞吐量、最高可靠性和最小费用这四个类型,只能选择一种服务类型,标志位为1就是选择,为0就是不选择。如果所有4 bit均为0,那么就意味着是一般服务。例如:

一般服务: 0000
最小时延:1000 ,Telnet和Rlogin推荐使用
最大吞吐量:0100
最高可靠性:0010
最小费用:0001

途中最后一列的16进制值正式tcpdump所打印的。

现在大多数的T C P / I P实现都不支持TO S特性,但是自4.3BSD Reno以后的新版系统都对它
进行了设置。另外,新的路由协议如 O S P F和I S - I S都能根据这些字段的值进行路由决策。

16位总长度:
总长度字段是指整个 I P数据报的长度,以字节为单位。利用首部长度字段和总长度字段,
就可以知道 I P数据报中数据内容的起始位置和长度。
由于该字段长 1 6比特,所以 I P数据报最
长可达 6 5 5 3 5字节(回忆图 2 - 5,超级通道的 M T U为6 5 5 3 5。它的意思其实不是一个真正的
M T U—它使用了最长的I P数据报)。当数据报被分片时,该字段的值也随着变化,这一点将
在11 . 5节中进一步描述。

尽管可以传送一个长达 6 5 5 3 5字节的I P数据报,但是大多数的链路层都会对它进行分片。而且,主机也要求不能接收超过 5 7 6字节的数据报。
总长度字段是 I P首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为 4 6字节(见图 2 - 1),但是I P数据可能会更短。如果没有总长度字段,那么I P层就不知道4 6字节中有多少是I P数据报的内容。(IP层会收到数据贞吗?)

目标/源IP地址:不同于数据链路的MAC地址,IPv4的地址是32位的

16位标识字段:标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1

3位标志:

13位片偏移:
8位生存时间:T T L(t i m e - t o - l i v e)生存时间字段设置了数据报可以经过的最多路由器数。T T L的初始值由源主机设置(通常为 3 2或6 4),一旦经过一个处理它的路由器,它的值就减去 1。当该字段的值为 0时,数据报就被丢弃,并发送 I C M P报文通知源主机。讨论Tr a c e r o u t e程序时将再回来讨论该字段

8位协议:根据它可以识别是哪个协议向 I P传送数据。

16位首部检验和:
首部检验和字段是根据I P首部计算的检验和,不包括后面的【数据】部分。I C M P、I G M P、U D P和T C P协议中,它们各自的首部中都有检验和字段,他们的检验和值不只是首部,还包括数据的检验和


  • IP路由选择

如果目的主机与源主机直接相连(如点对点链路)那么I P数据报就直接送到目的主机上。

如果目标主机和源主机都在同一个局域网(以太网或令牌环网),那么I P数据报就会送给路由器,然后由路由器以单播的形式直接发到目标主机上。

否则,主机把数据报发往网关,由网关来转发该数据报到下一站路由器。

计算机IP协议的工作原理

IP接受的数据包可以从本机的TCP、UDP、ICMP、IGMP而来,也可以从网络接口(也就是数据链路层)接受数据报。

IP层有一个路由表,当IP层收到一份数据报的时候,IP层回去对比路由表:
1.当数据包来自数据链路层的时候,IP层会去检查目的IP是不是当前计算机的某个IP地址(一个计算机可以有多个IP地址,一般的情况下,loopback是127.0.0.1,其他的网卡都有对应的IP地址,可以用ifconfig查看当前计算机的网卡和对应的IP):

1)如果目的IP是当前计算机或者是广播IP,就会将数据报交给IP数据报的“协议”字段中所指的协议模块,可能是ARP,RARP,IP。

IP层收到网络接口的数据包

2)如果目的地址不是当前网卡的某个IP或者广播地址,那么计算机就会:

2.1)如果计算机不是没设置成路由器,那么就丢弃数据包,并通过ICMP协议发送一个报错信息给源主机。
2.2)如果被设置成路由器,那么计算机就作为一个路由器对数据报进行转发。

普通的计算机是不会使用路由表的,对于普通的主机后来说,接到一个数据报后,所做的事情很简单,那就是看一下目的IP是否是当前某个网卡的IP,如果不是,就丢弃该数据包,然后使用ICMP协议发送一个报错信息给源IP主机。

而对于路由器(或者设置成路由器的主机)来说,如果数据报不是给他的,他还会将数据报转发到下一站路由器,或者转发到直接相连的网络IP地址(就是直接和当前路由器永宽带连接起来的多台计算机)。

路由表的字段:
1. 目标IP地址:
可以是一个完整的主机地址,主机地址的主机号是非0的
也可以是一个网络地址,如果主机号为0,就表示目标地址是一个网络地址
应该也可以是一个网络中的多台主机,或者网络中的一个网段
2.下一站(或下一跳)路由器( next-hop router)的I P地址,或者有直接连接的网络 I P地址:
下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。
下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。
3.标志:
一个标志指明目的 I P地址是网络地址还是主机地址
一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口(我们将在 9 . 2节中详细介绍这些标志)。
4.为数据报的传输指定一个网络接口:指定要用哪个网卡(网络)发送数据报。

下一站路由器

  • 子网寻址

简单的IP地址组成:

Paste_Image.png

支持子网的计算机的IP地址组成:


Paste_Image.png
  • 子网掩码

  • 特殊情况的IP地址

相关文章

网友评论

      本文标题:3.IP协议

      本文链接:https://www.haomeiwen.com/subject/sriimttx.html