182. 趣谈网络协议

第三讲 ifconfig:最熟悉又陌生的命令行

看IP地址

  • ipconfig

  • ip addr

IP地址分类

==记住私有IP地址范围==, 平时我们看到的数据中心里,办公室、家里或学校的IP地址,一般都是私有IP地址段.

无类型域间选路(CIDR)

建议使用二进制理解更加方便

  • 格式: <IP>/<n>, 数字n代表: IP地址的前n位为网络号, 后 32-n 位为主机号

  • 广播地址: 将网络号化为二级制, 然后后面都设置为1

  • 子网掩码: 二进制下, n个1, 后面32-n个都是0, 然后转为10进制就可以了

    将子网掩码和IP地址按位计算AND,就可得到网络号.

  • 例子: 10.100.122.2/24

    • 网络号: 10.10.122.0

    • 主机号: 2

    • 广播地址: 10.10.122.255

    • 子网掩码: 255.255.255.0

而整个网络里面的第一个地址 网络号+00..01,往往就是你这个私有网络的出口地址; 网络号+11..1就是广播地址.

MAC地址

在linux终端执行ip addr, 得到如下信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 88:ae:dd:52:69:32 brd ff:ff:ff:ff:ff:ff
3: wlx986ee8241375: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 98:6e:e8:24:13:75 brd ff:ff:ff:ff:ff:ff
inet 10.11.3.36/23 brd 10.11.3.255 scope global dynamic noprefixroute wlx986ee8241375
valid_lft 85941sec preferred_lft 85941sec
inet6 fe80::71ff:7e49:78d6:ab17/64 scope link noprefixroute
valid_lft forever preferred_lft forever

说明:

  • link/ether: MAC地址

    • 是一个网卡的物理地址,用十六进制,6个byte表示。
    • MAC地址的作用范围是子网内, 即具有相同网络号的主机间通信
  • scope

    • global: 说明这张网卡(wlx986ee8241375)是可以对外的,可以接收来自各个地方的包

    • host: 说明这张网卡(lo)仅仅可以供本机相互通信

      lo全称是loopback,又称环回接口,往往会被分配到127.0.0.1这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。

  • net_device flags: 网络设备的状态标识, 如这里的<NO-CARRIER,BROADCAST,MULTICAST,UP>

  • mtu <1500>: 最大传输单元为1500, 这是以太网的默认值. MTU是二层MAC层的概念

  • qdisc: queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。

    最简单的qdiscpfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。

第四讲 DHCP与PXE:IP是怎么来的,又是怎么没的?

配置IP地址

  • 使用 net-tools

    1
    2
    $ sudo ifconfig eth1 10.0.0.1/24
    $ sudo ifconfig eth1 up
  • 使用 iproute2

    1
    2
    $ sudo ip addr add 10.0.0.1/24 dev eth1
    $ sudo ip link set up eth1

第八讲 世界那么大, 我想出网关:欧洲十国游与玄奘西行

查看自己的出口IP地址