计算机网络(二)网络层IP层
1 引入原因
2 IP数据报
-
版本号:4位,IPv4或IPv6; 首部长度:4位,单位是“32位”,就是我这个IP数据报的首部是多少个32位,最大(2^4-1)×32位=1548位=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地址】;
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
4.2 划分
-
一般使用会将IP地址分为网络号+主机号,用子网掩码来处理; 主机号全0,表示当前网络段,不可以分配特定主机; 主机号全1,表示广播,不可以分配特定主机; 全0的网络号表示特殊网络; 127.0.0.1 通常被用作本地回环地址,测试本地网络;
5 NAT
NAT(Network Address Translation,网络地址转换),多个主机通过一个公有IP访问公网资源;
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 总结
一个路由器需要维护三个表:
上一篇:
Java架构师技术进阶路线图
下一篇:
简述TCP/IP三次握手和四次挥手流程