目录
一、IP协议
二、地址管理
IP地址
概念
作用
格式
网段划分
三、路由选择
网络层要做的事情主要是两个方面:
- 地址管理:制定一系列的规则,通过地址,描述出网络上一个设备的位置。
- 路由选择:网络环境比较复杂,从一个节点到另一个节点之间存在很多不同的路径,这就需要通过这种方式,筛选、规划出更合适的路径进行数据传输。
一、IP协议
协议格式如下:
- 4位版本号:指定IP协议的版本,对于IPv4来说就是4,二进制表示是0100;对于IPv6来说就是6,二进制表示是0110。
- 4位头部长度:这个字段指示IP数据报头部的长度。以4字节为单位表示,4位二进制表示最大的数为15,因此IP头部最大长度是60字节(4*15);而最小长度为20字节(不加选项部分),其中选项部分为40字节。
- 8位服务类型:能够让IP协议切换形态。3位优先权字段(已经弃用),4位TOS字段和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telent这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
- 16位总长度:该字段表示IP数据报整体占多少个字节。
- 16位标识:唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
- 3位标志字段:第一位保留,第二位表示是否允许拆包,第三位表示是否是最后一个包。第二位置为1,表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。
- 13位分片偏移:描述了当前每个小的数据包(分片的相对位置)。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值*8得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
- 8位生存时间:数据报达到目的地的最大报文跳数,描述了这个IP数据报在网络上还能继续存活多久。一般是64.每次经过一个路由,TTL=1,一直减到0还没达到就丢弃了。这个字段主要是用来防止出现路由循环。
- 8位协议:表示上层协议的类型。
- 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。
- 32位源地址和32位目标地址:表示发送端IP和接收端IP。
- 选项字段:不定长,位于头部,最多40字节。
二、地址管理
IP地址
概念
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址,每个网络设备,在加入网络时都会分配一个IP地址,以便他们在网络进行通信。
作用
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
格式
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6。
IP协议有两个版本,IPv4和IPv6。
IPv4数量为2^32,大约43亿左右,而TCP/IP协议规定,每个主机都需要有一个IP地址。对于全世界计算机来说,这个数量是不够的,所有后来推出了IPv6(长度为128位,是IPv4的4倍),但目前IPv4还广泛使用,且可以使用其他技术来解决IP地址不足的问题,所以IPv6也就没有普及。
以前IPv4是远远够用了,但信息技术的发展,计算机的普及,IPv4是远远不够全世界的人分配的,所以,解决IPv4地址不够用的问题,有三种方案:
1.动态分配IP
这个方案是把IP地址临时的分配给网络中需要使用IP地址的设备,可是治标不治本,提高了IP地址的利用率,并没有增加IP地址的数目。(虽然这是一个过渡的方案,这个方案目前仍然是广泛存在的)。
2.NAT技术(网络地址转换)
NAT技术实际上工作在网络层。NAT的主要作用是司改IP数据包的源地址或目标地址,以便让更多个内部网络设备通过一个公共的IP地址与外部网络网络通信(本质上是让一个IP代表一批设备)。
补充:
首先,IP地址分为两大类
1)内网IP(局域网IP)
如果一个IP地址,是以10.*或者172.16.*-172.31.*或者192.168.*,那么该IP地址就是内网IP;
在同一个局域网内部,内网IP之间不能够重复;
在不同的局域网中,内网IP之间可以重复。
2)外网IP(广域网)
除了上面的内网IP,剩下的都是外网IP了,外网IP是不能够重复的。
而在这种情况下,通常都是一个小区/一个学校/一个公司,构成一个大的局域网,这个局域网中可能够成千上万的设备,这样的一个局域网,就共用这一个外网IP即可。
NAT具体工作机制:
上面这种是简单的情况下,如果局域网内有多个主机同时访问同一网站的服.务器,此时当服务器返回响应的时候,经过路由器,应该交给哪个主机呢? 回答:用端口号区分。
端口号可以用来区分同一个主机的不同进程,也可以区分不同主机的不同进程。当服务器返回响应的时候,在同一主机一样的情况下,通过替换后的映射,目的端口是10001的这个就需要把IP:123.139.168.15转换为192.168.0.100,同理目的端口为8888的IP就能转换为对应的IP。
那如果不同主机IP下,他们的端口号都相同怎么办呢?
如果端口号都相同的情况下,路由器的NAT机制需要把源端口都替换掉,同时记录替换前与替换后的映射关系,以便返回响应能够正确找到目标IP。
当前的网络环境就是以NAT+动态分配的方式来解决IP地址不够用的问题的,当然,也正是因为这个机制,局域网内部设备能够主动访问外网设备,外网设备无法主动访问局域网内部设备。
3.使用IPv6(根本上解决)
IPv6使用16个字节即128位来表示IP地址,IPv6从根本上解决了IPv4不够用的问题,IPv6的数目为2^128,这是一个天文数字,远远要比IPv4要大得多的。
但是实际上IPv6的普及程度其实是比较低的,其最大的问题是与IPv4不兼容,想要能够支持IPv6就得换设备。而在我国,IPv6的普及也是相当高的了,一般来说,IPv6手动设置才能开启的。
网段划分
网段划分是指在网络中将一个大范围的IP地址空间分割成多个较小的部分,以便更好地管理和分配网络资源。
把一个IP地址分成两部分:网络号(标识了一个局域网)+主机号(标识了一个局域网的设备)
比如下面的例子:
由图中可以看出,同一个局域网中的网络设备,网络号必须相同,主机号必须不同;而对比这两个相邻的局域网,网络号是不能相同的。
当然一个IP地址,哪个部分是网络号,哪个部分是主机号那是不确定的,一般都是通过子网掩码来确定网络号的,具体内容不再详细赘述,简单介绍。
三、路由选择
路由选择就是描述了IP协议(IP数据报)转发的过程。
对于以上经过的设备:
- 主机:配有IP地址,但是不进行路由控制的设备。
- 路由器:既配有IP地址,又能进行路由控制。
- 节点:主机和路由器的统称。
对于网络数据传输,不是想象中的那样,数据直接从源主机到达目的主机,而是类似在地图中从A到B的过程:A->1->2->3->B。
一个网络层的数据报,每次到达一个路由器,也会进行问路的过程,每个路由器内部会有一个路由表,根据数据报中的目的IP,查路由表,如果查到了,就直接按照路由表给定的方向(网络转发接口)继续转发,直到到达目的主机。