数据链路层与物理层

数据链路层和物理层最主要的协议是以太网协议

只要是通过网线上网设备,使用的就是以太网协议

网线------以太网协议

以太网数据帧格式

目的地址和源地址

这里的地址不是IP地址,而是MAC地址(物理地址)

MAC地址是六个字节的数据可以表示2^48个MAC地址

每个设备的MAC地址都是唯一的,无法修改的,这个是电脑的身份标识

IP地址和MAC地址的区别

IP是给网络层使用的,MAC地址是给数据链路层专门使用的

IP关注的是在整个网络传输的过程

MAC关注的是转发的细节,在两个相邻的设备之间转发

举例子

从西安去到安广

源IP和目的IP:西安,安广

源mac和目的mac:西安,北京 / 北京,长春/ 长春 ,白城 / 白城,安广

源mac和目的mac是会进行改变的,关注的是现在到下一步这个过程

类型

类型不同,载荷的数据格式就不一样

CRC

帧尾,和校验和是一样的

IP数据报

类型是16进制的数据

数据包最大的长度是1500个字节,1kb多一点点

IP数据包的拆包和组包更多是因为数据链路层的问题

ARP请求

并不是用来传输数据的,而是根据IP地址,获取到对应的MAC地址

在数据链路层,我们需要获得MAC地址,才能写以太网数据帧

路由器会通过广播地址,发送ARP数据报,每个设备会收取到一个ARP请求,返回一个ARP响应,这样就能获取到对方的IP地址和MAC地址,路由器就会记录存储下来

DNS

可以认为是一个应用层协议,也可以认为是一套系统

DNS域名解析系统

网络上的每个服务器都是有IP地址的,因为这样不利于人的阅读和记忆,所以我们就把IP包成域名,每个域名对应一个IP,DNS就负责记录这些关系。

举例

最初的DNS是通过用户本地的hosts文件进行映射的

在这里就会存储着域名和IP的对应关系,由于维护很复杂,所以后续就把hosts里面的数据提取出来,单独放到一个服务器上,这样的服务器就叫做DNS服务器

在用户访问一个网站的时候,首先会访问的就是DNS服务器,把域名对应的IP进行访问,然后才能真正去访问服务器

本地的hosts文件的优先级是比DNS高的

面对海量的访问DNS如何处理

  1. 缓存

每次你访问一次DNS的时候,就会把IP记录下来,下次你访问同样的网址的时候,就不需要重新访问DNS

  1. DNS的服务器有很多个

原始的DNS根服务器只有11个,大部分都是在美国手里,国内很多的都是DNS的镜像服务器,就相当于把根服务器的数据全部映射出来,隔一段时间就更新,这样被掣肘很大,所以国内抓紧升级ipv6,搭建DNSV6的域名解析系统,就是为了避免被掣肘

相关推荐
桦说编程2 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅4 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者5 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺5 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart6 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP7 小时前
MyBatis-mybatis入门与增删改查
java
孟陬11 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌11 小时前
一站式了解四种限流算法
java·后端·go
华仔啊11 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java