IP协议
提供一种能力,从A主机将数据跨网络送至B主机的能力。
主机:配有IP地址,但是不进行路由控制的设备。
路由器:即配有IP地址,只能进行路由控制。
节点:主机和路由器的统称。
IP地址:网络号+主机号
IP报文在路由时,以IP协议所在的目标地址路由。
IP协议段格式:
IP协议解释:
- 4位版本号:指IP协议的版本,对于IPV4来说,就是4(IPV6占128个bit位)。
- 4位首部长度:IP头部的长度是多少个32bit,也就是length*4的字节数,4bit表示最大的数字是15,因此IP头部的最大长度是60字节。
- 8位服务类型: 3位优先权字段(已经弃用),4位TOS字段(最小延时、最大吞吐量,最高可靠性,最小成本,这四者相互冲突,对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要),一位保留字段(必须置为0)。
- 16位总长度:IP数据报整体占多少个字节。
- 16位标识(id):唯一的表示主机发送的报文。如果IP报文在数据链路层被分片了,那么每一片的这个id都是相同的。
- 3位标志字段:第一位保留,第二位置为1,表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文,第三位表示“更多分片”,如果分片了的话,最后一个分片置为1,其他为0。类似一个结束标记。
- 13位分片偏移:分片相对于原始IP报文开始处的偏移。实际偏移的字节数是这个值*8得到的。除最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文不连续)。
- 8位生存时间(TTL):数据报到达目的地的最大报文跳数,一般是64.每经过一个路由,TTL-=1,一直减到0还没到达,丢弃;这个字段主要是防止路由循环。
- 8位协议:上层协议类型。
- 16位首部校验和:使用CRC进行校验,来鉴别头部是否损坏。
- 32位源IP地址和目的IP地址:表示发送端和接收端。
分片组装:(一般不建议分片,若出现分片数据丢失,则需要上层重传数据。)
- 保证将所有的分片先放在一起(16位标识)
- 根据13位片偏移,计算偏移量,实现拼接
- 根据更多分片标志位,查看是否是最后一个分片。
网段划分
- 网络号:保证相互连接的两个网段具有不同的标识
- 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
如何管理子网中的IP?
有一种技术叫做DHCP,能够自动给子网内增加的主机节点分配IP地址,避免了手动管理IP的不便
一般的路由器都带有DHCP功能,因此路由器也可以看成一个DHCP服务器
CIDR
划分网络号和主机号。
- 引入一个额外的子网掩码来区分网络号和主机号;
- 子网掩码是一个32位的正整数。前半部分全“1”后半部分全“0”;
- 将IP地址和子网掩码进行“按位与”操作,得到的就是网络号;
划分子网的例子:
IP地址 | 140.252.20.68 | 8C FC 14 44 |
子网掩码 | 255.255..255.240 | FF FF FF F0 |
网络号 | 140.252.20.64 | 8C FC 14 40 |
子网掩码地址范围 | 140.252.20.64-140.252.20.79 |
特殊的IP地址
- 主机地址全为0,成了网络号,代表局域网。
- 主机地址全为1,成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包。
- 127.*的IP地址用于本机环回测试,通常是127.0.0.1
解决IP地址不够用问题
- 动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的。
- NAT技术:用路由器的WAN口IP替换源IP地址
- IPV6
私有IP地址和公网地址
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的地址都可以,但是RFC1918规定了组建局域网的私有IP地址。
私有IP不能出现在公网上,只在局域网中出现。
私有IP有可能会重复(解决内存地址不够用问题),公网IP不会重复。
- 10.*,前8位是网络号,共16,777,216个地址。
- 172.16.到172.31.,前12位是网络号,共1048,576个地址
- 192.168.*,前16位是网络号,共65,536个地址,包含在这个范围中的,都成为私有IP,其他则成为公网IP。
一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)。
路由器LAN口连接的主机,都从属于当前这个路由器的子网中。
不同的路由器,子网IP都是一样的(通常都是192.168.1.1)。子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了。
每一个家用路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会有很多级,最外层的运营商路由器,WAN口IP就是一个公网IP了。
子网中的主机要与外网通信时,路由器将IP首部中的IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包的IP地址成为一个公网IP,这种技术成为NAT技术(网络地址转换)。
路由
在复杂的网络结构,找出一条通往终点(目的IP的目的网络)的路线。
举一个例子:你刚考上大学,要来所考上的大学报到,怎么到这个大学报道呢?“问路”解决。一种情况是:你问一个大爷他说不知道你要去的地方在哪,但是他知道旁边的大妈知道;还有一种情况是,大爷知道,但是你无法直接到那个地方,必须先到哪,再到哪,最后才能到目的地;最后一种情况是那个大爷就是你所要去的地方的门卫(你已经到达目的地)。
路由的过程,就是这样一跳一跳“问路”的过程。
所谓“一跳”就是数据链路层中的一个区间。具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。
路由选择的三种结果:
- 路由表不知道你要去哪里,但是路由表会将你扔向下一个路由器(默认路由器)。
- 路由表经过查找,你要去的目标网络路由表知道该怎么走,扔到下一跳。
- 到达目标网络,找寻目标主机。
查看硬件地址和MTU
ifconfig命令可以查看ip地址,mac地址,MTU