网络原理——TCP/IP--数据链路层,DNS

2024-06-02 16:44

本文主要是介绍网络原理——TCP/IP--数据链路层,DNS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

目录

      • 数量链路层
        • 目的地址和原地址
        • 类型
        • 校验和
      • DNS

数量链路层

主要的协议是以太网协议.一个横跨数据链路层和 物理层的协议,既包含了数据链路层的内容, 也包含了⼀些物理层的内容

我们来了解一下以太网协议的格式
在这里插入图片描述
是像UDP一样比较简单的协议

目的地址和原地址

在这里插入图片描述
这是实际上指的是mac地址/物理地址

实际上,mac地址 和 IP地址,都是为了区分不同的主机上的设备,是由两伙人独立各自提出的,区别在于,mac地址是6个字节,数量目前来说还是够用的,因此可以认为是 每个设备都有唯一的mac地址,因此物理地址,也可以作为是 一台主机上面的一种身份标识

到后面,两种方式都被保留了下来,但是给他们分配了不同的工作

Ip地址的作用是支持整个传输过程转发

而Mac地址的作用是 支持两个相邻节点之间的转发

假设有一种情况是这样的
在这里插入图片描述
此时一个网络数据从A想要发给B

总的,目标IP是5.6.7.8

此时程序员写代码的时候,就直接告诉计算机,数据要往5.6.7.8这个主机发送

主机A就查询路由表,发现这个Ip在路由表里面没有,就将数据交给下一跳

那么IP层就决定了要找那个朋友,到了数据链路层就要决定,具体要怎么找(即数据包要从路由器的哪个接口发送出去)

此时主机 / 路由器在数据链路层里面也维护了一张表,这个表就维护了每个网口,以及网口对应端的设备的mac地址关联关系,就会根据这个来发

类型

在这里插入图片描述
就是用来区分,当前数据在分用的时候,是交给哪个协议

比如说分用的时候,发现类型是 0x0800的时候,此时就会将这个数据交给网络层的IP协议
在这里插入图片描述
但是我们这里会注意到,实际上一个以太网数据帧携带的最大的数据报的长度就只是1500字节

完全不够用

但是,实际上我们在IP协议讲到的拆包 组包问题,其实当IP协议达到1500字节的时候,就已经触发了
目的就是确保 数据报能够被以太网数据报装下

此处的1500也称为MTU,是和硬件结构相关联的

MTU这个东西,对于不同的数据链路层协议,是不一样的

至于这里的ARA 和 PARP,都不会携带业务上载荷数据,而是针对转发数据的过程起到"辅助"的作用

ARA协议是为了给每个路由器 / 交换机建立一个"转发表"(不是路由表)

这个表里面就记载了IP地址 =>mac地址映射

表项里面只是包含,路由器 / 交换机 周围的邻居设备

我们刚刚谈到的转发数据的过程中,确定接下来往哪里走,当路由器 / 交换机知道 下一跳的Ip(查路由表)

根据下一跳的Ip,就会去查转发表,此时就知道Ip对应的mac / 端口是哪个,然后再发

实际上这个东西的生成就比较简单,该设备在局域网中 通过广播地址,发送ARP数据包,收到的设备,都会返回ARP响应,响应里面就会包含每个设备,IP和mac

设备的转发表就可以保存上述的信息了

校验和

在这里插入图片描述
和我们之前讲过的校验和一样
此处也是只管报头的即可

DNS

DNS是一种重要的应用层协议,指的就是域名解析系统

我们之前讲过的IP地址,是32位的整数(IPV4),我们通过点分十进制将他更好的表示

为了让Ip地址给人使用更加方便,就引入DNS

域名就是一串单词,就可以通过这一串单词,来表示某个 / 某组IP地址了

比如我们常见的 baidu.com

在很早的时候,是有一个专门的文件,用来维护域名和Ip的映射关系,这个文件就是hosts文件

这个文件至今还存在
在这里插入图片描述
在以前,计算机访问各种域名,就会在这里进行查询

曾经很有用

但是现在不再使用了

之前每个人的电脑上,都会存有这样一个很大的文件,存有 所有的网站的域名对应的情况

但是弊端就在,这里的数据不方便更新,每天都有新的网站出现,也会有旧的网站消亡

导致文件就需要频繁更新

取而代之的就是搭载的DNS服务器,就是将这样的映射关系,使用DNS服务器来保存

此时我们的电脑就不必保存hosts了

如果要访问域名,就可以通过访问DNS服务器来查询到对应的IP地址了

但是越来越多的上网设备都需要使用DNS服务器,就会给DNS服务器造成很大的压力

解决方法就是:

(1)客户端缓存

当我们的电脑访问某个域名的时候,就会得到IP,此时就记住了,下次再访问同一个域名的时候,就不会重新查询DNS服务器了

这样的操作之后,就会使得DNS的服务器的压力减小不下百倍

(2)分布式的方式

全世界的各个地方,建设了很多DNS镜像服务器

比如国内的联通,电信,移动…,他们也会搭建DNS镜像服务器,此时我们请求的DNS服务器,就只需要就近访问我们附近的镜像服务器即可

但是同时也会引入新的麻烦,假设某个区域的DNS服务器挂了,可能就会对这一区域的设备造成影响(网页打不开了)

当前的域名体系是"分级"的体系
在这里插入图片描述
com就是一级域名,sogou就是2级域名,pic就是3级域名

DNS服务器是按照分组的方式,来存储不同的域名服务器的

域名有很多结尾:

com => 公司

org => 组织…

感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 今天记得敲代码

这篇关于网络原理——TCP/IP--数据链路层,DNS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024521

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1