网络协议(一)通讯协议

1、网络分层

image.png
对 TCP 协议来讲,三次握手也好,重试也好,只要想发出去包,就要有 IP 层和 MAC 层,否则是发不出去的。服务器

所谓的二层设备、三层设备,都是这些设备上跑的程序不一样而已。一个 HTTP 协议的包通过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。什么叫二层设备呀,就是只把 MAC 头摘下来,看看究竟是丢弃、转发,仍是本身留着。那什么叫三层设备呢?就是把 MAC 头摘下来以后,再把 IP 头摘下来,看看究竟是丢弃、转发,仍是本身留着。网络

始终牢记一个原则:只要是在网络上跑的包,都是完整的。能够有下层没上层,绝对不可能有上层没下层。oop

2、ifconfig详解

查看IP的两种方法:ip addrifconfigspa

IPV4 地址分类:
image.png设计

image.png

无类型域间选路(CIDR)

上面的分法不合理,太浪费,因而有了一个折中的方式叫做无类型域间选路,简称CIDR。这种方式打破了原来设计的几类地址的作法,将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号。 能够看到,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。后面 24 的意思是,32 位中,前 24位是网络号,后 8 位是主机号。3d

伴随着 CIDR 存在的,一个是广播地址,10.100.122.255。若是发送这个地址,全部10.100.122 网络里面的机器均可以收到。另外一个是子网掩码,255.255.255.0。code

公有 IP 地址和私有 IP 地址

在平常的工做中,几乎不用划分 A 类、B 类或者 C 类,因此时间长了,不少人就忘记了这个分类,而只记得 CIDR。可是有一点仍是要注意的,就是公有 IP 地址和私有 IP 地址。
image.png
平时咱们看到的数据中内心,办公室、家里或学校的 IP 地址,通常都是私有 IP 地址段。由于这些地址容许组织内部的 IT 人员本身管理、本身分配,并且能够重复。所以,你学校的某个私有 IP 地址段和我学校的能够是同样的。blog

公有 IP 地址有个组织统一分配,须要购买。接口

表格中的 192.168.0.x 是最经常使用的私有 IP 地址。你家里有 Wi-Fi,对应就会有一个 IP 地址。通常你家里地上网设备不会超过 256 个,因此 /24 基本就够了。队列

整个网络里面的第一个地址 192.168.0.1,每每就是你这个私有网络的出口地址。 例如,你家里的电脑链接 Wi-Fi,Wi-Fi 路由器的地址就是 192.168.0.1,而 192.168.0.255 就是广播地址。一旦发送这个地址,整个 192.168.0 网络里面的全部机器都能收到。

D 类是组播地址。使用这一类地址,属于某个组的机器都能收到。这有点相似在公司里面你们都加入了一个邮件组。发送邮件,加入这个组的都能收到。组播地址在 VXLAN 协议会用到。

image.png
在 IP 地址的后面有个 scope,对于 eth0 这张网卡来说,是 global,说明这张网卡是能够对外的,能够接收来自各个地方的包。对于 lo 来说,是 host,说明这张网卡仅仅能够供本机相互通讯。lo 全称是loopback,又称环回接口,每每会被分配到 127.0.0.1 这个地址。这个地址用于本机通讯,通过内核处理后直接返回,不会在任何网络中出现。

MAC地址

在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。

MAC 地址的通讯范围比较小,局限在一个子网里面。例如,从 192.168.0.2/24 访问 192.168.0.3/24 是能够用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到192.168.1.2/24,MAC 地址就不行了,须要 IP 地址起做用了,IP地址区分不一样的子网。

网络设备的状态标识

<BROADCAST,MULTICAST,UP,LOWER_UP> 这个叫做net_device flags,网络设备的状态标识。
UP 表示网卡处于启动的状态;BROADCAST 表示这个网卡有广播地址,能够发送广播包;MULTICAST 表示网卡能够发送多播包;LOWER_UP 表示 L1 是启动的,也即网线插着呢。MTU1500 是指什么意思呢?是哪一层的概念呢?最大传输单元 MTU 为 1500,这是以太网的默认值。

MTU 是二层 MAC 层的概念。MAC 层有 MAC的头,以太网规定连 MAC 头带正文合起来,不容许超过 1500 个字节。正文里面有 IP 的头、TCP 的头、HTTP 的头。若是放不下,就须要分片来传输。

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 头里面的一个字段, 表明了当前的包是高优先级的,仍是低优先级的。

3、DHCP与PXE

如何配置 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

你可能会问了,本身配置这个自由度太大了吧,我是否是配置什么均可以?若是配置一个和谁都不搭边的地址呢?例如,旁边的机器都是 192.168.1.x,我非得配置一个16.158.23.6,会出现什么现象呢?

不会出现任何现象,就是包发不出去了。

源 IP 地址 16.158.23.6,目标 IP 地址 192.168.1.6,可是包发不出去,这是由于 MAC 层还没填。
本身的 MAC 地址本身知道。但对于目标MAC地址,Linux 首先会判断,要去的这个地址和我是一个网段的吗,或者和个人一个网卡是同一网段的吗?只有是一个网段的,它才会发送 ARP 请求,获取 MAC 地址。 若是这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关。

若是配置了网关的话,Linux 会获取网关的 MAC 地址,而后将包发出去。对于192.168.1.6 这台机器来说,虽然目标 IP 是它,可是 MAC 地址不是它的,因此它的网卡是不会把包收进去的。

若是没有配置网关呢?那包就发不出去了。

若是将网关配置为 192.168.1.6 呢?Linux 不会让你配置成功的,由于网关要和当前的网络至少一个网卡是同一个网段的,怎么可能 16.158.23.6 的网关是 192.168.1.6呢?

动态主机配置协议(DHCP)

有了这个协议,只须要配置一段共享的 IP 地址。每一台新接入的机器都经过 DHCP 协议,来这个共享的 IP 地址里申请,而后自动配置好就能够了。等用完了,还回去,这样其余的机器也能用。

当一台机器新加入一个网络的时候,确定一脸懵,啥状况都不知道,只知道本身的 MAC 地址。怎么办?先吼一句,我来啦,有人吗?这时候的沟通基本靠“吼”。这一步,咱们称为DHCP Discover。新来的机器使用 IP 地址 0.0.0.0 发送了一个广播包,目的 IP 地址为 255.255.255.255。广播包封装了 UDP,UDP 封装了 BOOTP。其实 DHCP 是 BOOTP 的加强版,可是若是你去抓包的话,极可能看到的名称仍是 BOOTP 协议。下图是 DHCP Discover:
image.png

这个时候,咱们能够体会 MAC 地址惟一的重要性了。当一台机器带着本身的 MAC 地址加入一个网络的时候,MAC 是它惟一的身份,若是连这个都重复了,就没办法配置了。只有 MAC 惟一,IP 管理员才能知道这是一个新人,须要租给它一个 IP 地址,这个过程咱们称为DHCP Offer。下图是DHCP Offer:
image.png
DHCP Server 仍然使用广播地址做为目的地址,由于,此时请求分配 IP 的新人尚未本身的 IP。除此以外,服务器还发送了子网掩码、网关和 IP 地址租用期等信息。

若是有多个 DHCP Server,这台新机器会收到多个 IP 地址,它会选择其中一个 DHCP Offer,通常是最早到达的那个,而且会向网络发送一个 DHCP Request 广播数据包,包中包含客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器地址等,并告诉全部 DHCP Server 它将接受哪一台服务器提供的 IP 地址,告诉其余 DHCP 服务器请求撤销它们提供的 IP 地址,以便提供给下一个 IP 租用请求者。
image.png
此时,因为尚未获得 DHCP Server 的最后确认,客户端仍然使用 0.0.0.0 为源 IP 地址、255.255.255.255 为目标地址进行广播。在 BOOTP 里面,接受某个 DHCP Server 的分配的 IP。当 DHCP Server 接收到客户机的 DHCP request 以后,会广播返回给客户机一个 DHCP ACK 消息包,代表已经接受客户机的选择,并将这一 IP 地址的合法租用信息和其余的配置信息都放入该广播包,发给客户机。
image.png

IP 地址的收回和续租

客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP Server 发送 DHCPrequest 消息包。客户机接收到该服务器回应的 DHCP ACK 消息包,会根据包中所提供的新的租期以及其余已经更新的 TCP/IP 参数,更新本身的配置。这样,IP 租用更新就完成了。

预启动执行环境(PXE)

相关文章
相关标签/搜索