天天看点

通信协议综述

  • 1、协议的三要素
    • 语法,一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。
    • 语义,这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没意义。
    • 顺序,程序执行的先后顺序。
  • 2、只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。
  • 3、网络内部,使用本地地址的MAC进行通信。
  • 4、RPC,远程过程调用,RPC框架有很多种,有基于HTTP协议放在HTTP的保温里面的,有直接封装在TCP报文里面的。
  • 5、当网络包到达一个城关的时候,可以通过路由表得到下一个城关的 IP 地址,直接通过 IP 地址找就可以了,为什么还要通过本地的 MAC 地址呢?
    • ip是网络层使用的,mac是链路层使用的,IP包最终还是要通过物理链接和mac地址进行交互的。IP和MAC是通过ARP协议进行映射。
    • IP是负责三层通信通过查找路由表,层层传递,最终到达目的设备,Mac负责二层通信,设备上的ARP表是IP和Mac的对应关系,通过ARP表找到目的IP的Mac地址。
  • 6、复杂的程序都要分层,这是程序设计的要求。比如,复杂的电商还会份数据库层、缓存层、Compose层,Controller层和接入层,每一层专注做本层的事情。
  • 7、只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。
  • 8、对TCP协议来说,三次握手也好,重试也好,只要想发出去包,就要有IP层和MAC层,不然是发不出去的。
  • 9、一个 HTTP 协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。什么叫二层设备呀,就是只把 MAC 头摘下来,看看到底是丢弃、转发,还是自己留着。那什么叫三层设备呢?就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发,还是自己留着。
  • 10、网络协议就像是无天桥加送快递。
  • 11、在Windows上是ipconfig,在Linux上是ifconfig。
  • 12、在Linux上查看IP地址:ip addr,ifconfig
  • 13、IP地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码。
  • 14、ABC三类地址所能包含的主机的数量。
    通信协议综述
  • 15、无类型域间选路(CIDR),将子网掩码和IP地址按位计算AND,就可得到网络号。
  • 16、公有IP地址有个组织统一分配,你需要去买。
  • 17、在IP地址后面有个scope,对于eth0这张网卡来讲,是global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于lo来讲,是host,说明这张网卡仅仅可以供本机相互通信。lo全称是lookup,又称环回接口,往往会被分配到127.0.0.1这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
  • 18、在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。
  • 19、一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。
  • 20、MAC地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识。
  • 21、MAC 地址的通信范围比较小,局限在一个子网里面。例如,从 192.168.0.2/24 访问 192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC 地址就不行了,需要 IP 地址起作用了。
  • 22、net_device_flags,网络设备的状态标识。 <BROADCAST,MULTICAST,UP,LOWER_UP>,UP表示网卡处于启动的状态;BROADCAST表示这个网卡有广播地址,可以发送广播包;MULTICAST表示网卡可以发送多播包;LOWER_UO表示L1是启动的,也即网卡插着呢。MTU1500,最大传输单元MTU为1500,这是以太网的默认值。
  • 23、MTU是二层MAC层的概念。MAC层有MAC头,以太网规定连MAC头带正文合起来,不允许超过1500个字节。
  • 24、qdisc pfifo_fast 是什么意思呢?qdisc 全称是queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc(排队规则)把数据包加入队列。
    • 最简单的 qdisc 是 pfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。pfifo_fast 稍微复杂一些,它的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。
    • 三个波段(band)的优先级也不相同。band 0 的优先级最高,band 2 的最低。如果 band 0 里面有数据包,系统就不会处理 band 1 里面的数据包,band 1 和 band 2 之间也是一样。
    • 数据包是按照服务类型(Type of Service,TOS)被分配到三个波段(band)里面的。TOS 是 IP 头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。
  • 25、IP是地址,有定位功能;MAC是身份证,无定位功能;
  • 26、CIDR可以用来判断是不是本地人;
  • 27、IP分为公有的IP和私有的IP
  • 28、net-tools和iproute2
  • 29、如何配置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
  • 30、Linux首先会判断,要去的这个地址和我是一个网段吗,或者和我的一个网卡是一个网段的吗?只有是一个网段,它才会发送ARP请求,获取MAC地址。如果不是,Linux默认的逻辑是,如果这是一个跨网段的调用,它便不会直接把包发送到网路上,而是企图将包发送到网关。
  • 31、网关要和当前的网络至少一个网卡是同一个网段的。
  • 32、不同系统的配置文件格式不同,但是无非就是CIDR、子网掩码、广播地址和网关地址。
  • 33、动态主机配置协议(DHCP),自动配置的协议,英文:Dynamic Host Configuration Protocol.
  • 34、如果是数据中心里面的服务器,IP一旦配置好,基本不会变,这就相当于买房自己装修。DHCP的方式就相当于租房。你不用装修,都是帮你配置好的。你暂时用一下,用完退租就可以了。
  • 35、DHCP的工作方式:
    • 1 DHCP Discover:新来的机器使用 IP 地址 0.0.0.0 发送了一个广播包,目的 IP 地址为 255.255.255.255。广播包封装了 UDP,UDP 封装了 BOOTP。其实 DHCP 是 BOOTP 的增强版,但是如果你去抓包的话,很可能看到的名称还是 BOOTP 协议。
    • 格式:
      通信协议综述
    • 2、DHCP Offer:只有 MAC 唯一,IP 管理员才能知道这是一个新人,需要租给它一个 IP 地址,这个过程我们称为DHCP Offer。同时,DHCP Server 为此客户保留为它提供的 IP 地址,从而不会为其他 DHCP 客户分配此 IP 地址。除此之外,服务器还发送了子网掩码、网关和IP地址租用期等信息。
    • 格式:
      通信协议综述
    • 3、DHCP REquest:由于 DHCP Offer报文既可以是单播报文,也可以是广播报文,当AP端收到多台DHCP Server的响应时,只会挑选其中一个offer(通常是最先抵达的那个),然后向网络中发送一个 DHCP Request,广播报文,告诉所有的Offer,并重新发送DHCP,将指定接收哪一台服务器提供的IP地址。
    • 格式:
      通信协议综述
    • 4、DHCP ACK:当 DHCP Server 接收到客户机的 DHCP request 之后,会广播返回给客户机一个 DHCP ACK 消息包,表明已经接受客户机的选择,并将这一 IP 地址的合法租用信息和其他的配置信息都放入该广播包,发给客户机,欢迎它加入网络大家庭。
    • 格式:
      通信协议综述
  • 36、预启动执行环境(PXE)
    • 操作系统的启动:首先,启动 BIOS,读取硬盘的 MBR 启动扇区,将 GRUB 启动起来;然后将权力交给 GRUB,GRUB 加载内核、加载作为根文件系统的 initramfs 文件;然后将权力交给内核;最后内核启动,初始化整个操作系统。
    • 我们安装操作系统的过程,只能插在 BIOS 启动之后了。因为没安装系统之前,连启动扇区都没有。因而这个过程叫做预启动执行环境(Pre-boot Execution Environment),简称PXE。
    • PXE 协议分为客户端和服务器端,由于还没有操作系统,只能先把客户端放在 BIOS 里面。当计算机启动时,BIOS 把 PXE 客户端调入内存里面,就可以连接到服务端做一些操作了。
    • DHCP Server 除了分配 IP 地址以外,还可以做一些其他的事情。
      • DHCP Server 的一个样例配置:
        通信协议综述
      • 按照上面的原理,默认的 DHCP Server 是需要配置的,无非是我们配置 IP 的时候所需要的 IP 地址段、子网掩码、网关地址、租期等。如果想使用 PXE,则需要配置 next-server,指向 PXE 服务器的地址,另外要配置初始启动文件 filename。
    • PXE 客户端启动之后,发送 DHCP 请求之后,除了能得到一个 IP 地址,还可以知道 PXE 服务器在哪里,也可以知道如何从 PXE 服务器上下载某个文件,去初始化操作系统。
  • 37、PXE的工作过程
    • 首先,启动 PXE 客户端。第一步是通过 DHCP 协议告诉 DHCP Server,我刚来,一穷二白,啥都没有。DHCP Server 便租给它一个 IP 地址,同时也给它 PXE 服务器的地址、启动文件 pxelinux.0。
    • 其次,PXE 客户端知道要去 PXE 服务器下载这个文件后,就可以初始化机器。于是便开始下载,下载的时候使用的是 TFTP 协议。所以 PXE 服务器上,往往还需要有一个 TFTP 服务器。PXE 客户端向 TFTP 服务器请求下载这个文件,TFTP 服务器说好啊,于是就将这个文件传给它。
    • 然后,PXE 客户端收到这个文件后,就开始执行这个文件。这个文件会指示 PXE 客户端,向 TFTP 服务器请求计算机的配置信息 pxelinux.cfg。TFTP 服务器会给 PXE 客户端一个配置文件,里面会说内核在哪里、initramfs 在哪里。PXE 客户端会请求这些文件。
    • 最后,启动 Linux 内核。
    • 图示:
      通信协议综述

继续阅读