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

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

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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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

  • <BROADCAST,MULTICAST,UP,LOWER_UP>
    • 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 过程
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容