- 介绍
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数据报首部+选项+数据组成。如果不包含选项,那么头部长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
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地址
网友评论