OSI模型 |
协议 |
数据包叫法 |
常见设备 |
5层模型 |
应用层 |
HTTP,DHCP,FTP |
报文 |
常见PC机,工作站,终端等 |
应用层 |
表示层 |
|
|||
会话层 |
|
|||
传输层 |
TCP/UDP |
传输协议分组,分组 |
网关 |
传输层 |
网络层 |
IP协议,ICMP协议,IGMP协议 |
IP包,IP数据报 |
路由器,三层交换机 |
网络层 |
数据链路层 |
以太网协议,ARP协议 |
帧,数据帧 |
交换机,网桥 |
数据链路层 |
物理层 |
802.3 |
比特流 |
网口,网线,集线器 |
物理层 |
通常我们说的IP协议指的是IPv4协议,通常我们说的IP地址默认也是指IPv4地址。但是各种资料和书籍上都说IPv6将会用于未来。但是由于IPv4已经大规模使用了,替换掉也不是一天两天的事,所以IPv4 和IPv6都各了解一些。做个简单介绍。
其各个字段的含义如下:
版本号:协议版本号,IPv4为4,IPv6则为6(当然IPv6的头部不完全是这样,但是4个比特含义一致)
首部长度:首部长度指的是首部占32 bit字的数目,包括任何选项。因此IPv4首部最长为60个字节
服务类型:服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TO S分别代表:最小时延、最大吞吐量、最高可靠性和最小费用
数据报长度:以字节为单位的整个IP数据报的长度(包括首部)。
标识、标志、片偏移:标识用来唯一确定主机发送的每一个IP数据报。标志和片偏移用来支持IP分片,当然它们必须和标识一起使用。IPv6则不允许在路由器分片,在IPv6中,分片和重组必须在源和目的进行
生存时间:数据报可以经过的路由器数,这使得IP数据报早晚会在网络中消失,即要么被消失,要么由于生存时间达到而“死亡”
协议:标识IP层承载的上一层协议类型,比如UDP/TCP/SCTP。
首部校验和:首部检验和字段是根据I P首部计算的检验和码。IPv6首部中不再包含首部校验和。
源、目的地址:源的IP地址和目的的IP地址
选项:最后一个字段是任选项,是数据报中的一个可变长的可选信息。主要包括:
安全和处理限制
记录路径(让每个路由器都记下它的I P地址)
时间戳(让每个路由器都记下它的I P地址和时间)
宽松的源站选路(为数据报指定一系列必须经过的I P地址)
严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)。
版本。长度为4位,对于IPv6,该字段必须为6。
类别。长度为8位,指明为该包提供了某种“区分服务”。该字段的定义独立于IPv6,目前尚未在任何RFC中定义。该字段的默认值是全0。
流标签。长度为20位,用于标识属于同一业务流的包。一个节点可以同时作为多个业务流的发送源。流标签和源节点地址唯一标识了一个业务流。
净荷长度。长度为16位,其中包括包净荷的字节长度,即IPv6头后的包中包含的字节数。这意味着在计算净荷长度时包含了IPv6扩展头的长度。
下一个头。这个字段指出了IPv6头后所跟的头字段中的协议类型。与IPv6协议字段类似,下一个头字段可以用来指出高层是TCP还是UDP,但它也可以用来指明IPv6扩展头的存在。
跳极限。长度为8位。每当一个节点对包进行一次转发之后,这个字段就会被减1。如果该字段达到0,这个包就将被丢弃。
源地址。长度为128位,指出了IPv6包的发送方地址。
目的地址。长度为128位,指出了IPv6包的接收方地址。这个地址可以是一个单播、多播或任意点播地址。如果使用了选路扩展头(其中定义了一个包必须经过的特殊路由),其目的地址可以是其中某一个中间节点的地址而不必是最终地址。
1.包头长度不存在了因为IPv6的头是固定长度。
2.服务类型字段变成了流类别。
3.数据报长度变成了净荷长度。IPv6的净荷长度中包含了扩展头,而IPv4数据报长度字段中则指明包含包头在内的整个数据报的长度。因而在IPv4中,路由器需要将数据报长度减去包头长度来计算包的净荷长度,而在IPv6中则无须这种计算。
4.数据报ID,标识和标志三个字段被删除了,因为它们在IPv4中用于数据报分片,但是IPv6中分片通过分片扩展头来实现而且必须在源设备完成。
5.生存字段变成了跳极限,使用方式类似
6.协议字段变成了下一个头。v4中协议字段用来指示高层的协议类别,但是这里的下一个头可以用来指示扩展头或者高层协议头。
7.头部校验和被删除,因为由于如TCP和UDP等高层协议均计算头的校验和, IPv4头校验显得有些多余,因此这个字段在IPv6中已消失。对于那些真的需要对内容进行身份验证的应用, IPv6中提供了身份验证头。
8.源目地址被扩展到了128比特。
概括:长度32位,表示用4个十进制点分制,x.x.x.x,每个x取值0-255
IPv4地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。
IPv4地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
因特网中,每台主机或路由器的接口都有一个IP地址。但是每个接口的IP地址不能随意选择,每个接口的IP地址的组成部分需要由其连接的子网来决定。
概括:长度128位,表示用8个十六进制冒号分制,x:x:x:x:x:x:x:x,每个x取值0x0000-0xffff
介绍:一个x通常叫做一个块。一共8个块
IPv6地址的简写方法:
1.一个块(块对应例子中的x)中的前面的0可以不用写。1111:2222:3333:0044:0055:0066:0077:0088简写为1111:2222:3333:44:55:66:77:88
2.全0的块可以省略,用::代替。如0:0:0:0:0:0:0:1省略为::1,20:0:0:0:0:0:0:1省略为20::1
为避免出现歧义,::只能用一次
IPv4本地环回地址 127.0.0.0/8 通常只用127.0.0.1
IPv6本地环回地址 ::1/128
分类寻址->子网寻址->CIDR(无类别寻址)和聚合
最初的设计是将IP地址分成了ABCDE5类,这介绍的太多了就不啰嗦了。即A类~E类。其中A、B、C3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址。
网络类别 |
最大网络数 |
第一个可用的网络号 |
最后一个可用的网络号 |
每个网络中的最大主机数 |
A |
126(2^7-2) |
1 |
126 |
16777214 |
B |
16384(2^14) |
128.0 |
191.255 |
65534 |
C |
2097152(2^21) |
192.0.0 |
223.255.255 |
254 |
分类寻址引出问题:
一个IP地址块分配给一个站,该站内需要再细分,则无法实现,必须要再申请一个IP地址块。解决方法就是引入子网寻址。
分配给每个站的一个IP地址块,可以由该站的管理员将它划分为多个子网,各个子网互相独立。各个子网间的联系通过路由。所以引出子网掩码的概念,用子网掩码和IP地址相与,得到网络段。在站外的路由器看到的还是ABCDE五类的IP地址寻址。还是可以根据之前的路由规则来路由。
分类寻址和子网寻址仍未解决的问题:
某个站用B类地址太多了造成浪费,用C类地址又不够使用。解决方法是改变原来的路由表示路由规则。采用CIDR无分类间路由。
在这种编址方案中IP地址被分为网络部分和主机部分两部分,并且具有形式a.b.c.d/x,其中x指示了第一部分中的比特数。前x比特被称为该地址的前缀。该组织内部的设备得IP都将具有该前缀,因而对于外部的路由器,它只需要一条指向该前缀的路由即可。当数据报进入该组织内部网络后,内部的路由器将根据32-x比特的信息转发数据报。
CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”
聚合:
聚合技术是为了解决路由器的路由表项太多的问题
如:192.168.2.5/24对应转发端口2。192.168.3.5/24也对应转发端口2
那么路由表项就是192.168.0.0/16对应转发