1.网络层可能的两种服务
- 虚电路服务
- 数据报服务
- TCP/IP采用此服务
2.网络层四个协议
- 网际协议IP (internet protocol)
- ARP(address resolution protocol): 将ip地址解析成mac地址
- ICMP(internet control message protocol): 超时时用
- IGMP(internet group mannagemet protocol):
3.IP
层次结构:IP地址划分为网络地址和主机地址
A类地址:8+24
B:16+16
C:24+8
D:多播地址
E:
在识别划分时,直接看前8位,0开头-A(0-126),1开头B(128-191),11开头C(192-223),前1~3个位是类别位,只不过A类认为前8位是网络地址,B类认为前16位是网络地址。
几个特殊的地址:
- 127.0.0.1 本地环回地址,localhost
- 169.254.0.0 自动分配获取地址失败后,会配此地址
- 保留的地址:
- 10.0.0.0 多学校、企业
- 172.16.0.0-172.31.0.0
- 192.168.0.0-192.168.255.0
公网地址,任何一台机器都能之间去连,私网地址就不行。
4.子网掩码
掩码和地址与运算。
比如a地址连b地址,掩码与运算后发现网络地址相同,a数据包就直接解析b的mac地址,发给b数据,就不会经过路由器网关;
所以子网掩码写错了,可能连接出问题;
可以写作192.168.201.167/29,29就是子网掩码长度;
5.子网划分
- 主机地址不能全0(0),全1(255,广播地址)。
- 使用子网掩码,划分开网络部分和主机部分;
- 如192.168.0.1是C类地址,掩码255.255.255.128,则128就是子网划分1000 0000
- 交换机划分网段,比如划分两个网段,0-128 129-255,则起始地址1-126 129-254, 其中127,255是广播地址,起始地址不能全0
- 路由器作为网段的网关,一般默认使用第一个地址;
- 分成两个网段,子网掩码后移一位;再二分再移;
- 变长子网划分
- 比如192.168.201.169/30 可以做路由网关地址,192.168.201.168/30不行;
- 超网
- 点对点网络:…252,
上图两个交换机器,在不同网络地址,0.2和1.2,掩码255.255.255.0就会得出它们不在一个网络地址,数据都要走路由器网关192.168.0.1,实际上可以不走的。
这是可以修改掩码为255.255.254.0
6.IP地址与MAC地址
ip通信要ip地址+mac地址
- ip地址决定了数据包起始点;
- mac地址决定了数据包中间传输的节点选择;
- 传输中数据包不变,物理层地址变(路由器就物理层的);
- mac地址能控制本网段的连接设备,ip地址能控制不同网段的连接;
arp -a : 查看arp缓存存的ip地址到硬件mac地址的映射信息
7.arp协议
负责把ip地址解析成mac地址?
方式是广播
网络层协议走到链路层终究还是要使用硬件地址,每个主机都有一个arp高速缓存,存有本局域网各主机和路由器的ip地址到硬件地址的映射表。
arp欺骗:
广播获取目标ip的mac地址时,被别的节点A冒认,数据都经过A,被截获;
- RARP 逆向arp
知道mac地址,解析ip地址
- IP数据包
- ip数据报,首部的前一部分是固定长度,20字节
- 首部固定部分后面一些字段时可选的
- 固定20字节,也就是共160个位
- 版本,ipv4还是v6
- 区分服务,打上标记,表明数据包的紧急性,但是路由器上必须有配置优先处理才行QoS
- 总长度,可见它是16比特,故数据包最大长度为65535,MTU最大传输单元
- 标识,记录数据包的个数编号
- 标志,表明数据包是否分片,当包超过MTU后,路由器会分包传送
- 片偏移,记录此分包在打包的偏移量(除以8后的值,一片8个字节)
- 生存时间,TTL,原值128,每过一个路由器,就减1,如图说明经过了76个路由器(不,经过12个,因为ttl是64)ping www.baidu.com -i x,依次递增x可以跟踪都经过了哪些路由器,但是如果路由器出现请求超时,说明此路由器不允许ping,可以ping路过,但是不能ping它。
- 协议,表明数据使用什么协议,方便ip层解析,(可能是icmp,igmp,TCP,UDP等)
- 校验和,什么求和、反码啥的,对首部的整体反映
- 源地址、目标地址
- 可变长度,0~40个字节
- IP转发分组和静态路由
- 数据路由:路由器在不同网段转发数据包
- 网络畅通:数据能去能回
- 沿途路由器要知道到destination下一步怎么走,给哪个接口
- 回来时,路由器要知道到source address的下一步怎么走
- 路由器直连的网段可以直接知道,但是隔着的就需要做记录表,又叫路由表,手动添加配置路由表的叫静态路由,
- route print:win显示计算机路由表
- 手动添加路由表:route add 0.0.0.0 mask 0.0.0.0 19.7.86.1
- 一个网卡,只能有一个默认路由,但是可以手动添加静态路由,告诉它怎么走
- 负载均衡:路由表实现
- ICMP协议
报告网络有没有故障
分差错报告报文和询问报文。
差错报文:终点不可达,源点抑制,时间超过,参数问题,改变路由,
比如ping一个网址,发一个ip数据包,他接受到,把数据字段(可能就是一些随便字符)去了,然后再添加icmp的前8字节返回
pathping www.baidu.com 可以跟踪数据包,每一个路由节点都会返回一个包,有点类似多次ping ad -i x。
有*表示可能此路由不让ping它,不返回包。
pathping能查丢包情况,反映网络畅通情况。
11.动态路由
RIP:最早的动态路由协议,此协议下,路由30秒周期性广播 ,最大跳数16,以跳数记录连通性(与带宽无关)
多条路径自动选择好的路径?
静态路由在网络变化,的把静态路由都改一遍,麻烦。
- 网关就是默认路由
- 添加路由表:route add; netstat -r;
- 打印路由表:route print
- ICMP协议,探测路由情况用,如ping
- ping,pathping
- OSPF
open shortest path first开放最短路径协议
- 动态路由协议
- 度量值:带宽
- 支持多区域
- 触发式更新
- 三个表:
- 邻居表(hello包,每隔10s发一次)
- 链路状态表
- 计算路由表(计算出来的,类似迪杰斯特拉算法)
- 三个表:
能区域划分
其他特点:
- 不用udp,而是ip数据报传送
- 如果有多组同代价路径,可以通信量分配给这几条路,负载平衡;
- …
13.BGP
rip和ospf都是自治区域内的协议