(一).数据链路层介绍数据链路层的介绍主要介绍“以太网协议”。“以太网协议”是数据链路层和物理层的协议只要电脑是通过网线(以太网线)进行上网那么走的协议就是以太网协议。当然如果使用的是wifi上网那么使用的协议就是802.11。1.以太网数据帧的格式(1).“目的地址”和“源地址”此处的“目的地址”和“源地址”不是IP地址而是“MAC地址”也称为“物理地址”。这个“MAC地址”占六个字节那么IP地址和MAC地址有什么区别IP地址是在网络层使用的关注于整个网络路径的转发传输过程MAC地址是在数据链路层使用的关注于转发的细节两个相邻的设备之间的转发。下面通过一个例子来解释一下假设我现在在山东我想要去上海那么我可能需要这样的规划“ 山东 天津 北京 上海”此时对于“山东 天津”来说我的源IP是“山东”目的IP是“上海”源MAC是“山东”目的MAC是“天津”对于“天津 北京”来说我的源IP是“山东”目的IP是“上海”源MAC是“天津”目的MAC是“北京”对于“北京 上海”来说我的源IP是“山东”目的IP是“上海”源MAC是“北京”目的MAC是“上海”通过上面的举例可以看出源MAC和目的MAC是随时变化的而源IP和目的IP是不变的。这就说明了MAC地址关心的是相邻节点的传输即两个路由器/交换机/主机直接通过网线直连的传输。(2).类型通过上图可以看到这里有三种类型。里面的数字是16进制表示的对于“0800”这个类型载荷部分最多就是1500字节1500就是1kb多一点。这个1500称为“MTU”那么这时候有问题了在IP数据包的报头中有一个“16位总长度”的属性16位总长度最多是64kb但是在数据链路层这里最多就能放1kb多一点再多就放不下了。此时就明白了IP数据包的“拆包”和“组包”更多的时候是因为数据链路层的限制而产生的“拆包”对于“0806”这个类型这里主要介绍“ARP请求/应答”。ARP协议不是用来传输业务数据的而是专门用来打辅助的协议。它的功能是根据IP地址得到相应的MAC地址。这是因为在网络传输的过程中对于网络层来说转发数据是要根据IP地址进行转发的但是对于数据链路层来说转发是要根据MAC地址的。当我们写代码的时候填写的都是IP地址路由器也是根据IP地址查找路由表根据路由表的得到接下来从哪个网口进行转发数据。此时如果想要转发数据就需要跟根据下一节点的IP地址找到对应的MAC地址只有这样才能填写以太网数据帧。此时路由器就需要通过广播地址发送ARP数据包访问到所有设备的IP地址和MAC地址在路由器的内部就会构建出一个类似于“哈希表”的表结构把IP地址和MAC地址的关系都保存起来了。(3).CRCCRC位于数据帧的帧尾是一个校验和。(二).DNS协议DNS协议可以认为是一个应用层协议也可以认为是一套系统。它主要的作用就是进行域名解析。“域名”就是一串英文单词。通过上图可以看到当我在浏览器中访问百度服务器的时候使用的域名“www.baidu.com”当我通过“命令行”访问的时候对应的百度服务器的地址就是“39.156.70.239”此时就是DNS协议发挥了作用。最开始DNS是通过hosts文件来实现域名和IP地址之间的映射的。只不过hosts文件维护起来太复杂了所以就把hosts文件中的内容提取出来了然后单独放到了服务器上这样的服务器称为“DNS服务器”。注意hosts文件的功能依然存在优先级比DNS更高主要的用途就是在程序上进行测试。当用户的电脑访问某个网站的时候就会先查询DNS服务器把域名对应的IP地址拿到然后再区访问真正的服务器。此时就有一个问题。全世界上网的设备有那么多如果每次发起网络请求都需要先访问DNS服务器的话那么DNS服务器就可能会挂掉那么应该如何解决这个问题①.缓存主机不会每次请求服务器的时候都会触发DNS请求。就拿上面的例子来说当访问baidu.com的时候进行一次DNS域名解析之后就会把IP地址记录下来下次再访问baidu.com就不需要重新访问DNS了。注意这个缓存和Cookie不一样这个缓存时本地存储机制是为了减少请求次数提高效率。而Cookie只是存了数据不能减少请求次数也不是用来提高效率如果Cookie太多还会降低效率。②.DNS服务器不止有一个存储原始数据的DNS服务器称为“DNS根服务器”全世界只有11个。各个网络运营商可以搭建“DNS镜像服务器”全世界各地都有DNS服务器。此时也会有问题就是前面在介绍IP协议中IPv6的问题如果想要升级为IPv6那么就需要搭建新的IPv6的域名解析系统。如果访问网页打不开但是QQ或者微信能登录那么就是DNS服务器挂了此时只需要手动设置一下DNS服务器可以设置成8.8.8.8这是谷歌的DNS服务器。具体怎么设置这里就不多介绍了
数据链路层介绍和DNS协议
(一).数据链路层介绍数据链路层的介绍主要介绍“以太网协议”。“以太网协议”是数据链路层和物理层的协议只要电脑是通过网线(以太网线)进行上网那么走的协议就是以太网协议。当然如果使用的是wifi上网那么使用的协议就是802.11。1.以太网数据帧的格式(1).“目的地址”和“源地址”此处的“目的地址”和“源地址”不是IP地址而是“MAC地址”也称为“物理地址”。这个“MAC地址”占六个字节那么IP地址和MAC地址有什么区别IP地址是在网络层使用的关注于整个网络路径的转发传输过程MAC地址是在数据链路层使用的关注于转发的细节两个相邻的设备之间的转发。下面通过一个例子来解释一下假设我现在在山东我想要去上海那么我可能需要这样的规划“ 山东 天津 北京 上海”此时对于“山东 天津”来说我的源IP是“山东”目的IP是“上海”源MAC是“山东”目的MAC是“天津”对于“天津 北京”来说我的源IP是“山东”目的IP是“上海”源MAC是“天津”目的MAC是“北京”对于“北京 上海”来说我的源IP是“山东”目的IP是“上海”源MAC是“北京”目的MAC是“上海”通过上面的举例可以看出源MAC和目的MAC是随时变化的而源IP和目的IP是不变的。这就说明了MAC地址关心的是相邻节点的传输即两个路由器/交换机/主机直接通过网线直连的传输。(2).类型通过上图可以看到这里有三种类型。里面的数字是16进制表示的对于“0800”这个类型载荷部分最多就是1500字节1500就是1kb多一点。这个1500称为“MTU”那么这时候有问题了在IP数据包的报头中有一个“16位总长度”的属性16位总长度最多是64kb但是在数据链路层这里最多就能放1kb多一点再多就放不下了。此时就明白了IP数据包的“拆包”和“组包”更多的时候是因为数据链路层的限制而产生的“拆包”对于“0806”这个类型这里主要介绍“ARP请求/应答”。ARP协议不是用来传输业务数据的而是专门用来打辅助的协议。它的功能是根据IP地址得到相应的MAC地址。这是因为在网络传输的过程中对于网络层来说转发数据是要根据IP地址进行转发的但是对于数据链路层来说转发是要根据MAC地址的。当我们写代码的时候填写的都是IP地址路由器也是根据IP地址查找路由表根据路由表的得到接下来从哪个网口进行转发数据。此时如果想要转发数据就需要跟根据下一节点的IP地址找到对应的MAC地址只有这样才能填写以太网数据帧。此时路由器就需要通过广播地址发送ARP数据包访问到所有设备的IP地址和MAC地址在路由器的内部就会构建出一个类似于“哈希表”的表结构把IP地址和MAC地址的关系都保存起来了。(3).CRCCRC位于数据帧的帧尾是一个校验和。(二).DNS协议DNS协议可以认为是一个应用层协议也可以认为是一套系统。它主要的作用就是进行域名解析。“域名”就是一串英文单词。通过上图可以看到当我在浏览器中访问百度服务器的时候使用的域名“www.baidu.com”当我通过“命令行”访问的时候对应的百度服务器的地址就是“39.156.70.239”此时就是DNS协议发挥了作用。最开始DNS是通过hosts文件来实现域名和IP地址之间的映射的。只不过hosts文件维护起来太复杂了所以就把hosts文件中的内容提取出来了然后单独放到了服务器上这样的服务器称为“DNS服务器”。注意hosts文件的功能依然存在优先级比DNS更高主要的用途就是在程序上进行测试。当用户的电脑访问某个网站的时候就会先查询DNS服务器把域名对应的IP地址拿到然后再区访问真正的服务器。此时就有一个问题。全世界上网的设备有那么多如果每次发起网络请求都需要先访问DNS服务器的话那么DNS服务器就可能会挂掉那么应该如何解决这个问题①.缓存主机不会每次请求服务器的时候都会触发DNS请求。就拿上面的例子来说当访问baidu.com的时候进行一次DNS域名解析之后就会把IP地址记录下来下次再访问baidu.com就不需要重新访问DNS了。注意这个缓存和Cookie不一样这个缓存时本地存储机制是为了减少请求次数提高效率。而Cookie只是存了数据不能减少请求次数也不是用来提高效率如果Cookie太多还会降低效率。②.DNS服务器不止有一个存储原始数据的DNS服务器称为“DNS根服务器”全世界只有11个。各个网络运营商可以搭建“DNS镜像服务器”全世界各地都有DNS服务器。此时也会有问题就是前面在介绍IP协议中IPv6的问题如果想要升级为IPv6那么就需要搭建新的IPv6的域名解析系统。如果访问网页打不开但是QQ或者微信能登录那么就是DNS服务器挂了此时只需要手动设置一下DNS服务器可以设置成8.8.8.8这是谷歌的DNS服务器。具体怎么设置这里就不多介绍了