【JavaEE初阶】网络原理(5)
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录
路由选择
数据链路层=>以太网
MTU
mac地址和IP地址的区别
空间范围不同
应用范围不同
ARP协议/ARP数据包
DNS(域名解析系统)
路由选择
每个路由器,无法知道整个网络结构的全貌,只能知道其中一小部分(每个路由器只知道他附近的设备是这样的情况)
路由器内部维护的重要数据->路由表,路由表类似hash一样,key相当于IP地址(网络号),value就是对应的网络接口,IP数据包到达路由器,就要进行查询路由表操作,IP数据包中的目的IP,查一查这个目的IP在路由表中是否存在,如果查到了,自然按照路由表指向的方向继续转发即可,否则,路由表,会有一个"默认表项->下一跳(指向了更高层级的路由器,认识的设备更广)",这个路由器也可能查不到,但也有下一跳...
数据链路层=>以太网
日常开发中,主要是应用层,传输层和应用层密切交互,传输层用到的也不少,网络层以及再往下,日常开发就很少涉及(除非开发交换机,运营商的工作人员)
"目的地址,源地址和类型" 共同构成了mac地址/物理地址,
- 其中"类型"描述了载荷是什么样的数据; 类型为0806和8035时 不传输任何业务数据,而是给转发功能提供辅助措施
- CRC是帧尾=>校验和
- 数据链路层数据帧 的最大载荷长度是1500字节,相当于1.5kb
MTU
最⼤值1500称为以太⽹的最⼤传输单元(MTU),不同的⽹络类型有不同的MTU,MTU和硬件直接相关,不同的硬件设备对应到了不同的数据链路层协议,对应了不同的MTU.
此处的MTU的限制,就会对上层协议(IP协议)产生直接影响, IP协议能拆包组包,实际上IP协议更多的应对MTU的限制,当一个IP数据包达到1500以上的时候,就会自动拆包了
mac地址和IP地址的区别
空间范围不同
mac地址使用6个字节表示,IP地址4个字节,空间范围比IP地址大了6w多倍,mac地址当前仍然可以给每个设备,都分配一个唯一的mac地址值
一般的网卡,在出厂时,mac地址就被分配好了(写死了,不能修改),所以mac地址可以作为设备的身份标识
应用范围不同
- mac地址使用在数据链路层,用来实现两个相邻设备之间的数据转发(微观)
- IP地址使用在网络层,立足于整个转发的流程,进行路径规划(宏观)
理论上,一套地址就能完成宏观和微观层次上的所有工作,实际上两个都留下了(历史遗留问题,IP和mac是两伙人同一段时间各自独立提出的,综合考虑,两者负责不同功能)
以太网的数据帧 里的mac地址,随着转发的过程,时刻发生改变(每经过一个交换机/路由器都会产生变化)
举个例子,从 西安=>吉林省白城市安广镇
ARP协议/ARP数据包
ARP协议可以视为是让当前设备,获取到周围设备IP地址和mac地址之间的映射关系
IP协议路由转发的过程都是拿着IP地址进行 查路由表=>得到的"网络接口"(抽象概念,更具体的传输给哪个mac地址的设备),这个环节就涉及到IP->mac
当前设备接入网络时,就会往广播地址发送ARP报文,收到ARP请求的设备就会返回ARP响应,响应中就会告知自己的IP和mac
DNS(域名解析系统)
DNS 即可以认为是 应用层协议,也可以认为是一套系统
域名代表了IP地址,存在对应关系,一般一个域名对应一个或者多个IP,也可能多个域名对应一个IP
虽然把IP地址写作点分十进制,但是仍然对人类不友好,所以进一步使用单词字符串来表示IP地址
把域名转换成IP地址这样一套系统,就称为DNS
早期的DNS非常简单,通过一个文件(hosts)来实现
由于现在网站太多了,域名有很多,IP地址也有很多,靠文件来维护,不现实,不方便,为了解决上述问题,搭建了DNS服务器,把hosts文件放到DNS服务器里,当某个电脑需要进行域名解析,访问DNS服务器即可,
全世界每时每刻有大量设备都在访问DNS服务器 ,为了顶住这么大的访问量,多建设一些DNS服务器即可,多出来的DNS服务器称为"镜像服务器",全世界 有数不清的镜像服务器,往往是一些运营商/互联网公司维护,每个人上网时都会就近访问DNS服务器
针对数据变更,提前约定以某个服务器(根服务器)的数据为基准,一旦有变更,就修改这个基准服务器,其他服务器从基准服务器同步数据