【JavaEE网络】从数据链路层到应用层的DNS

目录


数据链路层

越往下与程序员越远

代表协议:以太网。平常用的网线也叫"以太网线",平常用的交换机也叫"以太网交换机"

以太网

认识以太网

"以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;

例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;

以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

以太网帧格式

源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的;作用也是用来区分不同的主机

帧协议类型字段有三种值,分别对应IP、ARP、RARP;

帧末尾是CRC校验码。

已经有了 IP 地址,为啥还要有 mac 地址呢?

IP 地址和 mac 地址,是被各自独立的设计出来了。IP地址负责的是网络层转发,mac地址负责数据链路层转发

网络层负责的是整体的转发过程,数据链路层负责的是局部(相邻设备)转发过程

从西安到东北

规划路线(网络层):

  1. 西安->北京->长春->白城
  2. 西安->长春->白城
  3. 西安->北京->白城
  4. ......

具体的转发过程(数据链路层)

  1. 西安->北京(坐飞机)
  2. 北京->长春(坐高铁)
  3. 长春->白城(坐大巴)

DNS

DNS,即 Domain Name System,域名系统。DNS 是一整套从域名映射到 IP 的系统。

TCP/IP 中使用 IP 地址来确定网络上的一台主机,但是 IP 地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名 ,并通过域名系统来映射域名和IP地址。

上网要访问服务器,要知道服务器的IP地址,IP地址是一串数字,虽然已经使用点分十进制已经清洗不少了,但仍不方便记忆。使用单词来代替IP地址,比如baidu、sogou、taobao这样的,这样的单词就是"域名"。

域名是一个字符串,如 www.baidu.comhr.nowcoder.com

域名系统为一个树形结构的系统,包含多个根节点。其中:

  1. 根节点即为根域名服务器,最早IPv4的根域名服务器全球只有13台,IPv6在此基础上扩充了数量。

  2. 子节点主要由各级DNS服务器,或DNS缓存构成。

  • DNS域名服务器,即提供域名转换为IP地址的服务器。
  • 浏览器、主机系统、路由器中都保存有DNS缓存。
  • Windows系统的DNS缓存在 C:\Windows\System32\drivers\etc\hosts 文件中,Mac/Linux系统的DNS缓存在 /etc/hosts 文件中。

实践中为了保证域名的唯一性,域名往往是分级的。

www.sogou.com从前往后分别是三级、二级、一级

.com公司 .cn中国 .edu教育组织

最早的域名解析系统,是一个文件。(hosts 文件)

每个域名都会对应到一个 IP 地址

一旦新的网站出现了,或者旧的网站下线,这里就需要修改

全世界有很多网站不停的新增和消亡全世界又有这么多的主机上带有 hosts 需要修改

全世界,这么多的主机都在上网,此时 DNS 服务器如何承担这么高的并发量?

两个原则:开源,节流

  1. 全世界会搭建出很多的"DNS 镜像服务器"(一般是网络运营商 或者 一些大厂)
  2. 每个电脑上,在进行域名解析的时候,都会有缓存。我访问 10 次搜狗,只有第一次真的访问 DNS,后面 9 次都不一定访问
相关推荐
椰椰椰耶几秒前
【文档搜索引擎】缓冲区优化和索引模块小结
java·spring·搜索引擎
mubeibeinv2 分钟前
项目搭建+图片(添加+图片)
java·服务器·前端
青莳吖3 分钟前
Java通过Map实现与SQL中的group by相同的逻辑
java·开发语言·sql
Buleall11 分钟前
期末考学C
java·开发语言
重生之绝世牛码13 分钟前
Java设计模式 —— 【结构型模式】外观模式详解
java·大数据·开发语言·设计模式·设计原则·外观模式
小蜗牛慢慢爬行19 分钟前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
MARIN_shen24 分钟前
Marin说PCB之POC电路layout设计仿真案例---06
网络·单片机·嵌入式硬件·硬件工程·pcb工艺
新手小袁_J43 分钟前
JDK11下载安装和配置超详细过程
java·spring cloud·jdk·maven·mybatis·jdk11
呆呆小雅44 分钟前
C#关键字volatile
java·redis·c#
Monly211 小时前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat