IP协议续
1.路由选择
在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择
举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地
路由的过程,其实就是样子问路的过程
1.当IP数据包到达路由器的时候,会查看目的IP
2.路由器决定这个数据包是能直接发送给目标主机还是需要发送给下一个服务器(查询路由表)
3.依次反复,知道到达目的IP地址
如何判定数据包应该发到哪里??
这就依赖路由器存储了一个路由表结构,能找到路线就直接发送,否则按照默认发送
IP地址
IP地址分为网络号和主机号
教材上经常说分为ABCDE五类地址,实际上现在已经取消了这种叫法了
因为这种方案的局限性太大了,A类和B类这样的地址能存放的主机数太多了,实际上根本不可能有这么大的局域网,这么多的主机,这样就浪费了很多IP地址
于是人们提出了新的划分方案,称之为 CLDR
1.引入一个子网掩码来区分网络号和主机号
2.子网掩码也是一个32位的正整数 通常用 0 结尾
3.将IP地址和子网掩码进行按位与得到的就是网络号
4.网络号和主机号的划分和ABC类地址无关
例:子网掩码 255.255.255.0 8位子网掩码
网络号 140.205.20.0
这里能表示的地址范围就是 140.202.20.0 - 140.202.25.255
;
特殊IP地址
127.0.0.1 常用的测试IP地址,表示本机 (本机环回测试)
其实127.*都可以表示本机IP
每个网段的1 和 255 的地址是不可用的
1代表该网段
255代表广播地址(一对多)
数据链路层
1.以太网数据帧格式
以太网数据帧的数据格式很简单
这里数据链路层也搞了一套地址体系
MAC地址 一个主机只能有一个MAC地址,相当于身份证号,出厂即有
MAC地址和IP地址的区别:
MAC地址侧重于局部的转发(相邻设备)
IP地址侧重于全局的转发
举个例子
我现在想从这个路线走
南京 -> 西安 -> 四川
南京 - > 西安
源IP 南京 目的IP 四川
源mac 南京 目的 mac 西安
西安 -> 四川
源IP 南京 目的 IP 四川
源mac 西安 目的mac 四川
1.目的地址 需要发送到的MAC地址
2.源地址 发送的源地址
3.类型 分为几种类型
类型 0800 + 数据报(16-1500字节) 可能是syn这样的特殊报文也可能是正常 的业务数据
类型0806 ARP 请求/应答 + PAD
类型8035 RARP请求/应答 + PAD
ARP协议和RARP协议是两个横跨数据链路层和网络层的协议
主要进行IP和MAC地址之间的转换
RARP则是转换回IP地址,类似于hash表的结构(转发表不是路由表)
转发表:一个设备和哪些设备是连接的
4.CRC 校验和,和之前的一样,是为了检验数据传输途中有没有发生比特翻转
注:这里载荷的部分有一个特殊的要求:最短是46字节最长是1500字节
原因:受限于物理设备
46字节是因为ARP是46字节
1500字节的上限就取决于以太网的网口,网线等硬件设备 也称之为 MTU
所以IP数据包的拆包往往是因为这个MTU的限制导致的,而不是64KB的上限导致的
以太网是如此,但是还有其他的传输协议,所以MTU并不是固定1500的
DNS(域名解析系统)
通过IP地址来描述网络设备的位置
这里域名就是一个更好记的网址 ,用其来代表IP地址,方便记忆
很久以前是引入的hosts文件,类似于哈希表,每次访问域名就会获取查询
随着互联网发展的越来越快,维护hosts表就很麻烦了,此时就有大佬搭建了一个(DNS服务器),查询到的结果就是域名对应的IP
由于全世界都得上网,对于根域名服务器来说压力太大了,此时我们就在各国搞一个镜像,分别为每个国家的顶级DNS服务器,然后再进行分级管理,每次用户访问就就近访问即可.