1 引入原因
数据链路层传输问题:由于交换机路由器的数据链路层表是【MAC地址,转发硬件接口】,所以无法传入跨路由器或者交换机的数据,所以还需要继续向上抽象——网络层;
2 IP数据报
- 版本号:4位,IPv4或IPv6;
-
首部长度:4位,单位是“32位”,就是我这个IP数据报的首部是多少个32位,最大(2^4-1)×32位=15
4
8位=60字节; - 服务类型:过程字段、延迟字段、流量字段、可靠性字段等等,不关心;
- 总长度:IP数据报的总长度,最大长度为65535字节,由于数据链路层最长1500个字节,所以如果一个IP数据包超长了,就需要对其进行分片;
- 标识:每一个IP封包都有一个16位的唯一识别码,超长分片组合的时候用;
- 标志位:能否分片,标识分片相关;
- 片偏移:分片后重组时候需要按照顺序来拼接;
- 生存时间(Time To Live,TTL):生存时间字段设置了数据报可以经过的最多路由器数,表示数据包在网络上生存多久。每经过路由器就减一,为0就丢弃;避免无限传输;
- 协议:表明数据是按照什么协议编码的,TCP、UDP、ICMP、IGMP、OSPF、IP(可以封装IP数据报);
- 首部校验和:校验首部是否出错;
- 源IP地址:32位;
- 目的地址:32位;
- 选项(Options)+填充(Padding):这两个选项较少使用,只有某些特殊的封包需要特定的控制才会利用到。共32位。这些选项通常包括:安全和处理限制、记录路径、时间戳、宽松的源;
- 数据:按照协议字段定义的数据内容;
3 ARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。沟通IP层和数据链路层。
路由器ARP缓存表需要维护一张地址表【IP地址,MAC地址】;
当路由器转发IP数据查表发现没有MAC地址时,向直连的网络设备广播“某某的IP地址是多少?”匹配的设备回复数据报,携带自己的IP地址和MAC地址。
4 子网划分
4.1 私有IP
- A: 10.0.0.0~10.255.255.255 即10.0.0.0/8
- B:172.16.0.0~172.31.255.255即172.16.0.0/12
- C:192.168.0.0~192.168.255.255 即192.168.0.0/16
私有IP数据包不会转发到公网上去;
4.2 划分
- 一般使用会将IP地址分为网络号+主机号,用子网掩码来处理;
- 主机号全0,表示当前网络段,不可以分配特定主机;
- 主机号全1,表示广播,不可以分配特定主机;
- 全0的网络号表示特殊网络;
- 127.0.0.1 通常被用作本地回环地址,测试本地网络;
5 NAT
NAT(Network Address Translation,网络地址转换),多个主机通过一个公有IP访问公网资源;
多个私有地址访问互联网资源时,安装有NAT服务的路由器会自动转换自己的源地址为公网的,当接收到数据包时,自己又重新封装成私有的进行转发到私有网络;
6 ICMP
ICMP(Internet Control Message Protocol)Internet控制报文协议。
ICMP协议可以报告错误信息或者异常情况;ICMP报文是封装在IP数据报的数据部分;
- Ping应用:测试IP连通性;
- traceroute 应用:数据包走的路径;
7 路由表相关
7.1 路由表
计算机和路由器需要维护一个路由表:【目的IP地址,下一跳IP地址】;
7.2 内部网关协议RIP协议
每一个节点使用两个向量D和S,D描述当前节点到别的节点的距离,S描述当前节点到别的节点的下一个节点;RIP协议就是每一个节点都维护这样的一个向量,就得到了路由表;
7.3 内部网关协议OSPF协议
OSPF(Open Shortest Path First开放式最短路径优先);核心是使用迪杰斯特拉算法求最短路径;
7.4 外部网关协议BGP协议
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。互联网规模太大了,如果还是使用内部网关协议,那么数据量和计算量将会是巨大的。BGP不要求找到最好的一条路由,能找到比较好的一条路由即可;
8 总结
一个路由器需要维护三个表:
- IP层,路由表【目的ip地址,下一条地址】:通过内外网关协议来实现;
- IP层,地址映射表【直连的IP地址,直连的MAC地址】:通过ARP协议来实现;
- 数据链路层,【MAC地址,转发物理端口】通过广播来实现;