IP协议

未匹配的标注

网络层

主机到主机(ip包的传输)

IP包主要字段

源ip地址

目标ip地址

IPV4地址(网络号+主机号)

给每一台主机,或者路由器的每一个接口分配一个地址,32bit表示,4个字节,一个IPV4地址包含了网络号和主机号。同一个网络号里面的主机之间交互,称为内网访问。

有三种编址方法
1.分类编址
A类地址  8位网络号|24位主机
B类地址  16位网络号|16位主机
C类地址  24位网络号|8位主机
...
2.划分子网的IPv4地址

通过子网掩码来计算网络号+主机号

比如ip地址:10.100.122.2
子网掩码:255.255.255.0  // 通过位运算and就可以发现,最后8bit是没有被掩盖的,所以网络号就是前24位,主机号就是后8位。
已知ip,子网掩码,如何计算网络?

假设A主机ip地址是192.168.0.1,子网掩码是255.255.255.128.

假设B主机ip地址是192.168.0.128,子网掩码是255.255.255.128. A->B是否在同一个网络中?

192.168.0   0000 0001
255.255.255 1000 0000
---------------------
192.168.0.0  #与运算结果,所以A地址网络是192.168.0.0

192.168.0.  1000 0000
255.255.255 1000 0000
----------------------
192.168.0.1 #B地址的网络是192.168.0.1  和A地址不一样
3.无分类编址的IPv4地址
128.14.35.7/20  #通过/20标识前20bit是网络号,后面12bit为主机号

上面我们可以看到,我们可以根据主机的数量,来决定如何分配网络。比如4bit表示主机号,就可以分配2^4=16个主机,但是一般最小的主机号分给网关(路由器),最大的主机号是广播地址。

路由器——跨网络访问

每个接口都连接着一个网络,接口的地址就是那个网络的默认网关Gateway(网络的最小的主机号),当网络1的主机要和网络2的主机通信时,就需要通过路由来转发。

路由器收到ip数据报(包含源ip,目的ip),先用目的ip地址分别与路由表的每个地址掩码进行与运算,找到是否有符合的目的网络。如果有对应的网络,就转发过去。

虚拟专用网VPN

专用私有地址,路由器检测到目标地址是私有地址,不会进行转发,所以这些地址的ip数据报只能在内网传输。为了让他在公共网络传输,需要对IP包加一层公网ip头部。

实现VPN需要两个路由器,而且路由器的ip可以在因特网传播。

主机1(源内网ip1,目标内网ip2)—->路由器(对数据报添加一层,源地址使用路由器的ip,目标地址使用目标路由器的ip)—-互联网中传输——->目标路由器(解析到目标内网ip)->主机2.

NAT——私有ip地址访问公网ip

私有地址ip访问公网ip, 私有地址主机要通过NAT路由器访问公网ip. NAT路由器维护了一个公网IP地址表(每次有内网ip要访问外网时,会分配一个ip给他作为源地址)

linux路由表

一个主机可能同时存在于多个网络中,路由表就是保存当前主机的网络信息

[root@izwz97ww79qca7m2kxb6hqz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.18.88.253   0.0.0.0         UG    0      0        0 eth0
169.244.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.19.32.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0

当主机发送ip包出去时,使用哪个网卡来发送呢?

首先会将目标地址ip和路由表的子网掩码(Genmask)进行与运算,得到目标地址的网络,如果路由列表中哪个网卡的网络与之相同,就选择这个网卡发送(这就是内网发送,不通过路由器)

第一条目比较特殊,它目标地址和子网掩码都是 0.0.0.0,这表示默认网关,就是当前网络连接的路由器的地址172.21.176.1,如果其他所有条目都无法匹配,就会自动匹配这一行。并且后续就把包发给路由器,Gateway 即是路由器的 IP 地址(走向外网)。

linux虚拟网卡

有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.比如docker启动的时候

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~