趣谈网络协议:第一模块 通信协议综述

第一讲 为什么要学习网络协议?

1. 协议三要素

  • 语法
    • 一段内容要符合一定的规则和格式
  • 词法
    • 一段内容要代表某种意义
  • 顺序

2. 多种协议

  • http -> tcp -> ip -> arp
  • 路由协议
    • OSFP和BGP

第二讲 网络分层的真实含义是什么?

1. 四个问题

  • TCP协议进行三次握手的时候,IP层和MAC层在干什么
    • 所有不能表示出层层封装含义的比喻,都是不恰当的
    • TCP每发送一个消息,IP和MAC层的机制都要运行一遍
  • 包经过A-B-C-D的路由,在经过B和C时,从A发出的包中,B的地址放在什么地方?如果放在IP协议中的目标地址,那么到达中转路由时,如何知道目的地?
  • HTTP包经不经过二层设备?
    • 经过
  • 打开一个电商网站都需要经历那些过程?

2. 多层设备

  • 二层设备
    • 只处理MAC
  • 三层设备
    • 处理IP

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

1. 查看电脑IP

  • windows
    • ipconfig
  • linux
    • ifconfig
    • ip addr
    • 没有命令的主机可以安装net-tools和iproute2
root@test:~## ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
    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: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff
    inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fec7:7975/64 scope link 
       valid_lft forever preferred_lft forever

2. IP地址类型

网络分类.jpg
类别 IP地址范围 最大主机数 私有IP地址范围
A 0.0.0.0-127.255.255.255 16777214 10.0.0.0-10.255.255.255
B 128.0.0.0-191.255.255.255 65534 172.16.0.0-172.31.255.255
C 192.0.0.0-223.255.255.255 254 192.168.0.0-192.168.255.255

3. CIDR(Classless Inter-Domain Routing,无类型域间路由)

  • 示例 10.100.122.2/24
    • 其中24表示32位中前24位为网络号
    • 10.100.122.255是广播地址,所有10.100.122网络中的主机都可以收到
    • 255.255.255.0是子网掩码,转换成2进制,前24位都是1,后8位是0,将它与IP地址做AND操作,得到10.100.122.0,就是该IP的网络号
    • 10.100.122.1 一般为出口地址

4. MAC地址

  • 通过ip addr命令
    • link/ether 00:0c:29:61:4d:d5 brd ff:ff:ff:ff:ff:ff
  • MAC唯一性

5. 网络设备的状态标识 net_device flags

    • UP: 网卡处于启动状态
    • BROADCAST: 网卡有广播地址,可以发送广播包
    • MULTICAST: 网卡可以发送多播包
    • LOWER_UP: L1是启动的,即网线插着
  • mtu 1500
    • 最大传输单元为1500,以太网的默认值
    • MAC层概念
  • qdisc pfifo_fast
    • qdisc: queueing discipline, 排队规则
    • 最简单的qdisc是pfifo,即先进先出
    • pfifo_fast稍复杂一点,包含三个波段(band),在每个波段内先进先出
      • 三个band的优先级也不同,band 0最高,band 2 最低
    • 数据包按照服务类型(Type Of Service, TOS)被分到三个波段中, TOS是IP头中的一个字段

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

1. 设置ip

使用net-tools
    $ sudo ifconfig eth1 10.0.0.1/24
    $ sudo ifconfig eth1 up

使用iproute2
    $ sudo ip addr add 10.0.0.1/24 dev eth1
    $ sudo ip link set up eth1

2. 包的发送逻辑

  1. 首先判断目标IP地址和源IP地址是不是一个网段
    • 如果是同一个网段,使用ARP协议找到目标地址的MAC地址
  2. 如果不是一个网段,就把包发给网关

3. DHCP(Dynamic Host Configuration Protocol, 动态主机配置协议)

  • 应用层协议,基于UDP,客户端端口68,服务器端口67
  1. DHCP Discover
  • 网络分类.jpg
  • 源地址:0.0.0.0

  • 目的地址:255.255.255.255

  • 广播包封装了UDP,UDP封装了BOOTP(Bootstrap Protocol, 引导程序协议)

  1. DHCP Offer
  • 是单播包,MAC地址为DHCP Discover中的客户机的MAC地址

  • Offer报文.jpg
  • 选择第一个到达的DHCP Offer

  • 发送DHCP Request广播包

    • Request报文.jpg
    • 告知接受的DHCP Server,并通知其他server撤销ip的分配

  • 由于没有得到server的最终确认,仍然使用0.0.0.0

  1. DHCP ACK
  • 单播包

  • ACK报文.jpg
  • DHCP Server在收到DHCP Request的时候,会广播一个DHCP ACK消息包,与客户机达成协议

  1. DHCP 流程图
  • DHCP流程.jpg
  1. IP的收回与续租
  • 租期过去50%时,向提供IP的DHCP Server发送DHCP request消息包
  • DHCP Server收到请求后发送DHCP ACK包
  • 客户机根据ACK包更新TCP/IP参数
  1. 预启动执行环境(Pre-boot Execution Environment, PXE)
  • 分为客户端和服务器端
    • 由于客户端没有操作系统,只能先放在BIOS里
  • DHCP Server样例配置
    • next-server:指向PXE服务器地址
    ddns-update-style interim;
    ignore client-updates;
    allow booting;
    allow bootp;
    subnet 192.168.1.0 netmask 255.255.255.0
    {
        option routers 192.168.1.1;
        option subnet-mask 255.255.255.0;
        option time-offset -18000;
        default-lease-time 21600;
        max-lease-time 43200;
        range dynamic-bootp 192.168.1.240 192.168.1.250;
        filename "pxelinux.0";
        next-server 192.168.1.180;
    }
    
  • PXE客户端启动后,发送DHCP请求,不仅能分配IP,还能得到PXE服务器地址
  1. PXE工作过程
  • 启动PXE客户端,通过DHCP协议从DHCP Server获取IP地址、PXE服务器地址和启动文件pxelinux.0
  • 通过TFTP协议向PXE服务器请求下载启动文件
    • PXE服务器上往往还有TFTP服务器
  • 客户端接收到启动文件后,开始执行,该文件指示客户端,向TFTP服务器请求计算机的配置信息pxelinux.cfg。
  • TFTP服务器给PXE客户端发送一个配置文件,说明内核在哪里,initramfs在哪里,PXE客户端一次请求这些文件。
  • 启动Linux内核


    PXE 过程

你可能感兴趣的:(趣谈网络协议:第一模块 通信协议综述)