IP协议

基本概念
主机:配有IP地址,也要进⾏路由控制的设备;
路由器:即配有IP地址,⼜能进⾏路由控制;
节点:主机和路由器的统称

协议头格式

固定部分(20字节)

字段名位数含义
版本(Version)4位IP协议版本,IPv4为 4
首部长度(IHL, Internet Header Length)4位表示IP首部的长度,单位为4字节。最小值为5(即20字节),最大值为15(即60字节)。
区分服务(DS, Differentiated Services)8位用于服务质量(QoS),如优先级、延迟、吞吐量等。也叫TOS(Type of Service)。
总长度(Total Length)16位整个IP数据报的总长度(首部 + 数据),单位为字节。最大为65535字节。

分片相关字段(用于IP分片)

字段名位数含义
标识(Identification)16位每个数据报的唯一标识符,用于分片重组。同一原始数据报的所有分片标识相同。
标志(Flags)3位控制是否允许分片。各位含义如下:
– 第1位:保留(必须为0)
– 第2位:DF(Don’t Fragment,禁止分片)
– 第3位:MF(More Fragments,后面还有分片)
片偏移(Fragment Offset)13位表示当前分片在原始数据报中的位置,单位为8字节。用于重组分片。

生存与校验字段

字段名位数含义
生存时间(TTL, Time to Live)8位数据报在网络中最多可经过的路由器跳数,每经过一个路由器减1,为0时丢弃,防止循环。
协议(Protocol)8位指示上层协议类型,如:
– 1:ICMP
– 6:TCP
– 17:UDP
首部检验和(Header Checksum)16位仅对IP首部进行差错检测,不包括数据部分。每经过一个路由器都要重新计算。

 地址字段

字段名位数含义
源地址(Source Address)32位发送方的IP地址。
目的地址(Destination Address)32位接收方的IP地址。

可变部分(可选字段)

字段名位数含义
选项(Options)可变可选字段,用于扩展功能,如记录路由、时间戳、安全选项等。很少使用。
填充(Padding)可变用于确保首部长度为32位的整数倍(即4字节对齐)。

 数据部分

字段名含义
数据(Data)上层协议的数据(如TCP、UDP、ICMP等)。

⽹段划分

IP地址分为两个部分,⽹络号和主机号

⽹络号:保证相互连接的两个⽹段具有不同的标识;
主机号:同⼀⽹段内,主机之间具有相同的⽹络号,但是必须有不同的主机号


1.不同的⼦⽹其实就是把⽹络号相同的主机放到⼀起.
2.如果在⼦⽹中新增⼀台主机,则这台主机的⽹络号和这个⼦⽹的⽹络号⼀致,但是主机号必须不能和⼦⽹中的其他主机重复

过去曾经提出⼀种划分⽹络号和主机号的⽅案,把所有IP地址分为五类

A类0.0.0.0到127.255.255.255
B类128.0.0.0到191.255.255.255
C类192.0.0.0到223.255.255.255
D类224.0.0.0到239.255.255.255
E类240.0.0.0到247.255.255.255

随着Internet的⻜速发展,这种划分⽅案的局限性很快显现出来,⼤多数组织都申请B类⽹络地址,导致B类地址很快就分配完了,⽽A类却浪费了⼤量地址

例如,申请了⼀个B类地址,理论上⼀个⼦⽹内能允许6万5千多个主机.A类地址的⼦⽹内的主机数更多
然⽽实际⽹络架设中,不会存在⼀个⼦⽹内有这么多的情况.因此⼤量的IP地址都被浪费掉了

针对这种情况提出了新的划分⽅案,称为CIDR(ClasslessInterdomainRouting)
引⼊⼀个额外的⼦⽹掩码(subnetmask)来区分⽹络号和主机号;
⼦⽹掩码也是⼀个32位的正整数.通常⽤⼀串”0″来结尾;
将IP地址和⼦⽹掩码进⾏”按位与”操作,得到的结果就是⽹络号;
⽹络号和主机号的划分与这个IP地址是A类、B类还是C类⽆关

ip地址为192.168.10.215

子网掩码为 11111111 11111111 11111111 00000000

进行逻辑与,所以网络号就变成了192.128.10.0

广播地址为192.168.10.0,网络号为192.128.10.0

所以子网地址范围(可用主机地址)为:192.168.10.1 ~ 192.168.10.254,一共2^8-2个

IP地址的数量限制

我们知道,IP地址(IPv4)是⼀个4字节32位的正整数.那么⼀共只有2的32次⽅个IP地址,⼤概是43亿左右.⽽TCP/IP协议规定,每个主机都需要有⼀个IP地址.这意味着,⼀共只有43亿台主机能接⼊⽹络么?
实际上,由于⼀些特殊的IP地址的存在,数量远不⾜43亿;另外IP地址并⾮是按照主机台数来配置的,⽽是每⼀个⽹卡都需要配置⼀个或多个IP地址.
CIDR在⼀定程度上缓解了IP地址不够⽤的问题(提⾼了利⽤率,减少了浪费,但是IP地址的绝对上限并没有增加),仍然不是很够⽤.这时候有三种⽅式来解决

1.动态分配IP地址:只给接⼊⽹络的设备分配IP地址.因此同⼀个MAC地址的设备,每次接⼊互联⽹中,得到的IP地址不⼀定是相同的;
2.NAT技术
3.IPv6:IPv6并不是IPv4的简单升级版.这是互不相⼲的两个协议,彼此并不兼容;IPv6⽤16字节128位来表⽰⼀个IP地址;但是⽬前IPv6还没有普及

私有IP地址和公⽹IP地址

如果⼀个组织内部组建局域⽹,IP地址只⽤于局域⽹内的通信,⽽不直接连到Internet上,理论上使⽤任意的IP地址都可以,但是RFC1918规定了⽤于组建局域⽹的私有IP地址

10.*,前8位是⽹络号,共16,777,216个地址

172.16.到172.31.,前12位是⽹络号,共1,048,576个地址

192.168.*,前16位是⽹络号,共65,536个地址
包含在这个范围中的,都成为私有IP,其余的则称为全局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(NetworkAddressTranslation,⽹络地址转换).
  • 如果希望我们⾃⼰实现的服务器程序,能够在公⽹上被访问到,就需要把程序部署在⼀台具有外⽹IP的服务器上.这样的服务器可以在阿⾥云/腾讯云上进⾏购买

路由

在复杂的⽹络结构中,找出⼀条通往终点的路线

IP数据包的传输过程也和问路⼀样.
1.当IP数据包,到达路由器时,路由器会先查看⽬的IP;
2.路由器决定这个数据包是能直接发送给⽬标主机,还是需要发送给下⼀个路由器;
3.依次反复,⼀直到达⽬标IP地址

路由表可以使⽤route命令查看

如果⽬的IP命中了路由表,就直接转发即可;

路由表中的最后⼀⾏,主要由下⼀跳地址和发送接⼝两部分组成,当⽬的地址与路由表中其它⾏都不匹配时,就按缺省路由条⽬规定的接⼝发送到下⼀跳地址。

今天的更新就到这里,如有错误欢迎评论区指出!!!