目录
(1)距离矢量路由算法(distance vector routing)
一、为什么要学习网络协议
协议的三要素:语法、语义、顺序
1、为什么要学习网络协议
只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。
【以网上下单为例】
在浏览器里输入一个电商网址,浏览器会通过DNS或更为精确的HTTPDNS查找具体IP。
找到目标地址后,浏览器就开始打包它的请求。对于普通的浏览请求,往往使用HTTP协议,但对于购物的请求,往往需要进行加密传输,因而会使用HTTPS协议。
DNS、HTTP、HTTPS所在的层我们称为应用层,经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过socket编程来实现。下一层是传输层。传输层有两层协议,一种是无连接的协议UDP,一种是面向连接的TCP(面向连接就是,TCP会保证这个包能够到达目的地,如果不能,就一直发送,直到能)。对于支付来讲,往往使用TCP协议。
TCP协议里有两个端口,一个是浏览器监听的端口,一个是电商的服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程。
传输层封装完成后,浏览器会将包交给操作系统的网络层。网络层的协议是IP协议。在IP协议里会有源IP地址,即浏览器所在机器的IP地址和目标IP地址。
操作系统启动的时候,会被DHCP协议配置IP地址,以及默认网关的IP地址192.168.1.1,拿到目标IP地址后,操作系统通过ARP协议找到默认网关的MAC地址,于是,将IP包交给下一层,也就是MAC层,网卡再将包发出去,使其到达网关。
网关和网关之间沟通的协议成为路由协议,常用的有OSPF和BGP。
得益于网关之间的沟通,网络包可以从一个网关拿到下一个网关的MAC地址,直到找到目标服务器。
目标服务器取下MAC头,发给操作系统的网络层,发现IP也对上了,就取下IP头。IP头里会写上一层封装的是TCP协议,然后将其交给传输层,即TCP层。
在这一层,对于收到的包,都有一个回复的包说明收到了(仅仅是TCP层的一个说明,不是下单请求的结果)。
如果过了一段时间,发送端未收到回复,发送端的TCP层就会重新发送这个包(重新发送指TCP端的重试,并非浏览器将下单这个动作重新请求一遍,除非是TCP出了问题,如连接断了)。
网络包平安到达TCP层之后,TCP头中有目标端口号,通过端口号,可以找到电商网站的进程正在监视的端口号。
电商网址的进程得到HTTP请求的内容,会通过RPC调用(远程过程调用)来告诉相关的进程应该做什么事。
相关进程都处理好后,就回复一个HTTPS的包,告知下单成果,这个包最终进入发送端浏览器,显示支付成功。
2、要学习的网络协议
应用层:DHCP HTTP HTTPS RTMP P2P DNS GTP RPC
传输层:UDP TCP
网络层:ICMP IP OSPF BGP IPSec GRE
链路层:ARP VLAN STP
物理层:网络跳线
二、ip addr
IP地址是一个网卡在网络世界的通讯地址
MAC地址是一个网卡的物理地址,它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可用不用担心冲突。MAC地址的通信范围局限在一个子网里面。
IP地址在设计时低估了未来网络的发展,32位地址远远不够使用(于是有了IPv6(128位))
本就不够用的32位IP地址还被分成5类,其中B类地址能包含的最大主机数量有6w+,一般企业基本达不到这个规模,闲置地址造浪费,而C类地址能包含的最大主机数量又太少,只有254个。于是产生了一个折中的法子叫作无类型域间选路。
无类型域间选路(CIDR):将32位IP地址一分为二,前面是网络号,后面是主机号。如:10.100.122.2/24,表示32位中,前24位是网络号,后8位是主机号。
CIDR可以用来判断一个IP地址是不是本地地址。
伴随着CIDR存在的一个是广播地址,10.100.122.255,如果发送这个地址,所有10.100.122网络里面的机器都可以收到。另一个是子网掩码,255.255.255.0。
将子网掩码和IP地址进行AND计算,可以得到网络号。
D类是组播地址,使用这一类地址,组内成员机器都可以接受到信息
linux中 执行 ip addr得到的返回信息:
scope:对于 eth0 这张网卡来讲, global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。
lo :全称是loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
< BROADCAST,MULTICAST,UP,LOWER_UP > :是net_device flags,网络设备的状态标识。
UP 表示网卡处于启动的状态;
BROADCAST 表示这个网卡有广播地址,可以发送广播包;
MULTICAST 表示网卡可以发送多播包;
LOWER_UP 表示 L1 是启动的,也即网线插着呢。
MTU1500 :指最大传输单元 MTU 为 1500,是以太网的默认值。
MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。
qdisc :queueing discipline 排队规则。内核如果需要通过某个网络接口发送数据包,就需要按照为这个接口配置的qdics把数据包加入队列。最简单的 qdisc 是 prifo ,它不对数据包做任何处理,数据包采用先入先出的方式通过队列。prifo_first 的队列包括三个波段(band),数据包按照服务类型(Type of Service,TOS)被分配到不同波段,三个波段优先级不同,波段内部先进先出。
三、DHCP与PXE
1、DHCP
DHCP(Dynamic Host Configuration Protocol):动态主机配置协议。
工作方式:
当一台机器新加入一个配置了DHCP Sever网络的时候,首先会进行 DHCP Discover,即使用IP地址0.0.0.0发送一个广播包,目的IP地址为255.255.255.255。广播包封装了UDP,UDP封装了BOOTP。DHCP是BOO