学习笔记:网络协议之IP协议

2020-12-03  本文已影响0人  大力papa

本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处

IP地址,又称网际协议地址,由32位组成。IP地址是IP协议提供的一种统一的地址格式,为网络世界中的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

IP报文头

IP报文头

查看IP

日常我们查看IP地址的方式有:ip addr(需要iproute2) 或者 ifconfig(需要net-tools)

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:4e:65:ff:fe brd ff:ff:ff:ff:ff:ff
    inet 172.16.176.152/20 brd 172.16.191.255 scope global dynamic eth0
       valid_lft 306370030sec preferred_lft 306370030sec

上面的172.16.176.152/20就是我们的IPv4地址。
ip地址后面的有个scope是global,表示eth0这张网卡是对外的。IP地址上面有一行是link/ether 00:16:3e:15:ff:fe brd ff:ff:ff:ff:ff:ff,这个是mac地址,就是网卡的物理地址,由6个byte组成。
上面还有一个lo(loopback),又称为回环接口,一般就是分配到127.0.0.1这个地址。这个地址一般用于本地,不会出现在网络中而是直接经过内核处理然后返回。

网卡名称旁边有一行<BROADCAST,MULTICAST,UP,LOWER_UP>的是网络设备的状态标识(net_device flags)

mtu是最大传输单元。mtu 1500表示ip packet不能超过1500byte。包括mac头不超过1518byte(其中mac头14字节,尾4字节)

qdisc这个是排队规则,这里排队规则采用的是pfifo_fast。排队规则的作用是内核通过网络发送数据的时候,按照这个接口配置的排队规则将数据包push到队列中。pfifo_fast采用先进先出的方式,但是pfifo_fast这种规则的队列包含三个band,这里面的原理暂时不太了解,后面有空再深入学习。

CIDR(无类型域间选路)

IP地址172.16.176.152/20,这个地址用的就是CIDR表示法。IP地址由<网络号><主机号>组合而成。172.16.176.152/20表示前20位表示网络号,后12位表示主机号。

子网掩码

另外我们可以通过子网掩码跟ip地址做按位与运算得到网络号。而子网掩码的二进制值就是网络位都为1,主机号都为0。
那么我的子网掩码就是255.255.240.0,跟ip地址做按位与运算得到网络号为172.16.176.0

广播地址

广播地址一般是网络号不变,主机号的二进制位都为1。得出广播地址为172.16.191.255

机器是如何通过IP通信

机器1需要与机器2通信,首先会先判断两个IP地址是否在同一个网段中,如果是同一个网段,机器1直接发送ARP请求获取MAC地址。如果不是,Linux的逻辑判断如果是一个跨网段的通信,它会获取网关的MAC地址,然后将包发过去。
这里只是非常简单描述IP层的联系,网络通信底层逻辑是极其复杂的。

持续更新...

上一篇 下一篇

猜你喜欢

热点阅读