主机和路由器 都会运行网络层协议。发送主机会将传输层的数据段封装到数据报中,接受铸就向传输层交付数据段。
网络层的核心功能是路由和转发。
转发就是将分组从路由器的输入端口转移到合适的输出端口。
路由就是确定分组从源到目的经过的路径。
网络层另外一个核心功能是连接建立。 数据分组在传输前两端主机需要首先建立虚拟逻辑连接。网络层的连接是2个主机之间,传输层的连接是两个应用之间。
网络层的服务分为连接服务和无连接服务。
1. 虚电路
2.数据报
在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口。
IP数据包格式
版本号如果是ipv4 就是4, 如果是ipv6 就是6
首部长度占4位,一位代表4字节,也就是说ip首部长度最大是15 * 4 60字节。 最少是5(如上图,选项字段为空) 是 5 * 4 = 20字节
一字节是一行
服务类型 指示期望获得什么服务,一般情况下不使用
总长度代表ip分组的总字节数(首部+数据),最大是65535 B, 最小是 20B(首部最短)
生存时间ttl, 在网络中可以通过的路由器数。路由器转发一次分组,ttl-1,如果ttl = 0, 路由器丢弃该分组
协议是指ip分组封装的是哪个协议的数据包(6 为tcp, 17为udp) 实现复用,分解。
首部校验和实现对ip分组首部差错的检测。逐跳计算,逐跳校验。
2个地址,分别标识发送分组的源(主机或路由器)和接受分组的目的(主机或路由器)的ip地址
选项字段占长度可变,范围在1-40b之间。携带安全,时间戳和路由记录等内容。填充字段长度可变,目的是补齐整个首部,符合32位对其,保证首部长度是4字节的倍数。
ip 分片
然后我们回看ip头的第二行。
标识id,ip协议利用一个计数器,每产生ip分组计数器加一,该ip 分组的标识。
片偏移字段占13位,一个ip分组分片封装原ip分组数据的相对偏移量。片偏移字段以8字节为单位。
IP子网
netID 代表一个子网,下午有3个子网
ip地址分类
D类地址
D类地址用于组播(multicasting),因此,D类地址又称为组播地址。D类地址的范围为224.0.0.0~239.255.255.255,每个地址对应一个组,发往某一组播地址的数据将被该组中的所有成员接收。D类地址不能分配给主机。D类地址的第一个字节的取值范围为224~239。
有些D类地址已经分配用于特殊用途:
224.0.0.0 是保留地址、224.0.0.1 是指本子网中的所有系统、224.0.0.2 是指本子网中的所有路由器、224.0.0.9 是指运行RIPv2路由协议的路由器、224.0.0.11是指移动IP中的移动代理。
另外,还有一些D类地址留给了网络会议:
224.0.1.11 用于IETF-1-AUDIO、224.0.1.12 用于IETF-1-VIDEO
E类地址
E类地址为保留地址,可以用于实验目的。E类地址的范围:240.0.0.0 ~ 255.255.255.254,E类地址的第一个字节的取值范围为240~255。
00000000.00000000.00000000.00000000 表示本网络上的本机
127.xxx.xxx.xxx 表示环回地址,环回地址(Loopback Address)是用于网络软件测试以及本机进程之间通信的特殊地址。
某网络号+全“1”的主机号 表示对该网络的所有主机进行广播
某网络号+全“0”的主机号 表示网络地址
全“0”网络号+某主机号 表示本网络的某主机
11111111.11111111.11111111.11111111 表示在局域网中广播
在现在的网络中,IP地址分为公网IP地址和私有IP地址。公网IP是在Internet使用的IP地址,而私有IP地址则是在局域网中使用的IP地址。
私有IP地址是一段保留的IP地址。只使用在局域网中,无法在Internet上使用。
上面把ip 地址分为4类,可以看到非常不灵活,因为有时候你用到的ip地址 不是正好一类ip地址的全集。就会有浪费,这个时候,就需要无类域间路由
有了这个技术后,就可以在路由器的转发表里做路由聚合。
路由选择的时候,也是用最长前缀匹配的。
划分子网的意义:1.减少广播域;2.有效利用和规划IP;3.考虑网络安全因素,方便管理。
如何进行子网划分:1.确定需要划分的子网数及各子网中主机数量;2.确定可使用IP地址范围;3.根据子网/主机数量划分IP地址,计算掩码。
定长子网划分:子网所划分的所有子网的子网掩码都是相同的。即所有子网主机数量相同。
变长子网划分:根据不同网段中的主机个数使用不同长度的子网掩码。即各子网的主机数量可互不相同。
如何准确地描述一个子网:网段首地址+子网掩码可以准确描述一个子网。
为什么要进行路由聚集:缩减路由表,提高路由转发效率
如何进行路由聚集:连续子网路由可以整合为一个超网路由
什么情况下可以进行路由聚集:不同子网的出口相同时,可以进行聚集。
DHCP
下面要解决的是如何获得ip地址?
第一种方式是hard code 写死,也称静态配置。
第二种就是根据动态主机配置协议-dhcp,去服务器动态获取:(ip地址,子网掩码,默认网关地址,dns服务器名称与ip地址)
即插即用,允许地址重用,在用地址的续租,支持移动用户加入网络
因为新进来的主机没有自己的ip,所以和dhcp服务器通讯都需要用局域网广播,就是向4个255发消息。上层是udp
NAT协议
我们之前讲过私有网络端,这些网址是不能直连公网的ip的。这个时候可以用一个公网ip加端口号来映射。这个就是nat协议。
NAT发生的动机:
1.ipv4地址耗尽,这种做法可以用更少的ip地址让更多的局域网机器去连接公网。
2.本地网络设备ip变更,无需通告外界网络
3.变更isp时,无需修改内部网络设备ip地址。
nat的主要争议:
- 路由器应该只处理第3层的功能
- 违背端到端的通信原则, 应用开发者必须考虑到nat的存在。
- 地址短缺问题应该由ipv6来解决
nat 穿透问题:
ICMP协议
icmp应用举例
trace route
路由算法
路由算法确定去往目的网络的最佳路径。
整个网络可以抽象成一个图。
每段链路的费用可以总是1,伙食着带宽的倒数,拥塞程度等。
关键问题 就是找最短路径了
链路状态路由算法
距离向量路由算法
层次路由
将任意规模网络抽象为一个图计算过于理想化。
考虑六亿目的结点的网络,路由表几乎无法存储。路由计算过程的信息交换量巨大,会淹没链路。
所以我们希望,每个网络的管理可能都期望自主控制其网内的路由