网络层(IP)和数据链路层(以太网)的关系

2023-11-06

一、路由选择

路由选择过程,其实就是选择一条合适的路径,这个“合适”并不是一个容易衡量的事情,要综合考虑路径的长短,通信的速度,设备开销的大小。此处的路由指的是IP协议中的“路径规划功能”。

二、IP协议中的路由选择

IP协议中,数据到达某个路由器,这个路由器只知道它近况(相当于路由表),不知道整个网络整体的环境,是一个探索式的过程。路由表中描述了“什么样的IP”从“什么样的网络接口传输”

三、数据链路层协议(以太网)

1.负责的工作

两个相邻节点之间数据的传输

2.核心的协议

以太网(涉及到数据链路层+物理层的协议)如:平时的网线一般就是以太网线

3.举例说明传输层,网络层,数据链路层之间的关系

要回老家,老家在东北,吉林省,白城市,大安市(县),安广镇
(1)站在传输层
起始位置:陕西省西安市未央区1号路
目标位置:吉林省白城市大安市安广镇
(2)站在网络层
可选路线1:西安-北京-白城-安广
可选路线2:西安-长春-白城-安广
可选路线3:西安-沈阳-大安-安广
可选路线4:西安-北京-长春-白城-安广
(3)站在数据链路层
选线路2:西安-长春-白城-安广
西安-长春:坐飞机
长春-白城:坐火车
白城-安广:坐公交

4.描述数据使用的不同术语(很少区分)

传输层:一个数据段(segement)同步报文段(syn),确认报文段(ack),结束报文段(fin),复位报文段(rst)
网络层:一个数据报(packet)
数据链路层:一个数据帧(frame)

5.以太网帧格式

在这里插入图片描述
(1)此处的目的地址,源地址指的是mac地址,这个和IP地址还是有很大区别。
(2)一个mac地址占6个字节,一般用十六进制表示。
(3)一个IP数据报的长度范围:46-1500(其中46-1500是由MTU控制的)
MTU:物理层存在硬性限制,对应的数据链路层的数据帧,是有一定的大小范围,这个范围就是MTU,不同的硬件介质对应的MTU是不同的,IP数据包分包往往不是因为达到了IP长度,而是因为达到了MTU上限产生了分包。
(4)CRC:校验和

四、mac地址(数据链路层的地址)

1.mac地址介绍

一个mac地址占6个字节,表示的范围比IPV4大很多,mac可以做到每个主机都有唯一的地址,如果打游戏的时候发现两个账号对应的mac地址是同一个,就是在多开。

2.如何查看自己主机的mac地址

mac地址:cmd中输入ipconfig查看物理地址,一般使用十六进制表示

2.IP地址和mac地址区别

IP地址和mac地址都可以描述一个主机的位置,但发明之初是各自独立的,还是有区别的。
IP地址是动态分配(连上网络之后,对应的路由器/其他设备会给这个主机自动分配一个IP)
mac地址是写死的(网卡出场的时候就被写死了)

3.画图描述mac地址

主机A 要给主机B传输一个数据报,略过应用层和传输层的封装过程,直接考虑网络层。
在这里插入图片描述

五、ARP协议

1.作用

辅助性协议,这个协议严格的说不仅仅是属于数据链路层的,而是横跨数据链路层和网络层的。这个协议的功能就是根据IP查询对应的mac地址。

2.工作过程

简单来说,设备接入网络的时候,先广播一个ARP请求(当前局域网中广播)收到这个请求的设备返回ARP响应(包含了每个设备的IP和mac)。新接入网络的设备,就把这样的关系给保存起来了(利用哈希表或者是一个硬表,如转发芯片(LSW)上的寄存器中的表)。这样的过程可能会周期性的进行,主要是因为网络环境可能会动态变化。

六、DNS 域名解析系统

1.为什么发明DNS域名解析系统?

DNS 域名解析系统既是应用层协议也是一套系统。域名,类似www.baidu.com这样的, 就是IP地址的马甲,虽然IP地址可以通过点分十进制来表示,更方便用户查看,但点分十进制仍然不太方便记忆和传播,所以才有域名,就是一串单词,.用来分割。传输的时候其实就是先根据域名,转换成对应的IP地址,再根据IP地址来进行传输。

2.DNS域名解析系统作用

最初的DNS其实就是一个文本文件,叫做hosts文件保存在每一个主机上,文件中保存的是键值对,ip和域名的对应关系,一旦域名和ip的映射关系改变了,就麻烦了。因此hosts文件机制已经被淘汰了,但文件仍然存在。现在使用hosts的场景,一般是进行测试的时候,某个程序里面依赖另一个服务器(通过域名来访问这个服务器),测试该程序性的时候就可以修改hosts,把这个域名映射到测试的服务器IP上,保证不修改原码,就可以进行测试,也不会影响到正常的线上环境。
现在的DNS是一组专门的服务器,通过这个服务器就可以完成域名解析,如图。
在这里插入图片描述

3.全世界这么多的电脑,都需要访问DNS服务器,怎么解决此问题?

(1)浏览器/客户端本身会对域名解析结果进行缓存。(域名和IP的对应关系,是可能改变的,但是并不频繁),避免了大量的不必要的DNS请求
(2)DNS服务器有多台
最初由专门的组织机构来负责维护,根域名服务器,如果想要申请个域名就需要机构批准然后把结果放入到DNS服务器中
(3)为了缓解机构的压力,各种网络运营商,也会构建自己的域名服务器镜像。
在国内(每个地区甚至每个城市)就近构造一些DNS服务器,定期从根域名服务器这边同步数据过来,国内用户使用DNS的时候就只要查国内的DNS服务即可。
(4)针对DNS服务器做镜像的时候还可以按照域名来进行进一步的划分
com,org,vip做一个专门的服务器,就能够保证每一个服务器的数据量和请求量不是太大。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络层(IP)和数据链路层(以太网)的关系 的相关文章

  • DNSPython 异步解析超时,但同步解析不会超时

    我在 Python 3 9 7 x64 dnspython 2 1 0 和 Windows 10 21H1 上执行了测试 问题很简单 dns resolver Resolver 工作正常但不dns asyncresolver Resolve
  • 一台虚拟主机多个域 |通配符主机(共享主机)?

    我有以下任务 创建一个可通过 20 个不同域名访问的网站 相同的文件 相同的文件夹 相同的IP 问题 共享主机 这可以通过一个裸cname指向同一个公共子域来完成吗 或者我们是否需要一个静态IP 问题肯定是共享托管 我试图避免一一手动创建
  • 使用 Google App Engine 套接字进行 DNS 查询

    我正在尝试使用 Google App Engine 的新套接字支持来执行一些 DNS 查询 我在用着dnspython http www dnspython org 执行查询 并且代码在 GAE 之外运行良好 代码如下 class DnsQ
  • 没有 ID 字段或具有部分 NULL 复合字段的 Grails 域类

    根据对上一个问题的回答 此处回答 Grails 中的 SQL 数据库视图 https stackoverflow com questions 425294 sql database views in grails 427691 我尝试使用域
  • DNS 与 GKE 内部负载均衡器

    我在 GKE 上有两个 kubernetes 集群 一个公共集群处理与外界的交互 另一个私有集群仅供内部使用 公共集群需要访问私有集群上的一些服务 我已通过以下方式将这些服务暴露给公共集群的 Pod内部负载均衡器 https cloud g
  • 如何使用 Python 3.x 获取网站的 IP 地址?

    我有一个代表域名的字符串 如何使用Python 3 x获取对应的IP地址 像这样的东西 gt gt gt get ip http www stackoverflow com 64 34 119 12 gt gt gt import sock
  • 将多个域指向 Nginx 中的一台虚拟主机

    基本上 我想将每个域名重定向到一个虚拟主机 即文档 http nginx org en docs http server names html看起来很清楚 server listen 80 server name domain1 com w
  • PHP邮件、DNS请求超时、FQDN

    我要实现mail 我的 PHP 工作Windows Server 2012 R2 为此 我首先安装了SMTP依照指示这一页 http www vsysad com 2014 09 setup and configure smtp serve
  • 如何强制网站 DNS 刷新?

    我正在将我的 Web 应用程序移动到另一台服务器 并在接下来的几天内刷新 DNS 以指向新的 IP 位置 不幸的是 一些浏览器和 SO 保留了 DNS 缓存 这将使用户指向旧的 IP 位置 有些用户是新手 他们不会手动刷新 DNS 缓存 我
  • proxy_pass 不使用 /etc/hosts 解析 DNS

    在 Nginx 中proxy pass指令未使用以下命令解析 DNS etc hosts文件 有什么方法可以实现这种可能性 也许利用 Lua 作为最后的手段 如果您有一台带有 systemd 的服务器 您可以使用它附带的名称服务器 syst
  • 有什么方法可以在免费的heroku dyno上添加免费的SSL证书吗?

    我有一个 heroku 免费计划 它在带有 PointDNS 附加组件的自定义域上运行 因此它可以为 DNS 提供商提供名称服务器 如果这很重要 我已在我的自定义域 https 上启动并运行该网站 但 ssl 证书指向 herokuapp
  • 非阻塞网络地址解析(gethostbyname 或 getaddrinfo)?

    使用经典的 nsswitch conf 配置 hosts files dns 尝试使用解析名称获取主机名 or 获取地址信息 如果 DNS 没有应答 或配置错误 可能需要一段时间 有没有办法在 nsswitch conf 中配置超时或使用管
  • 更改 Cookie 域

    我使用 apache 作为我的应用程序 Web 服务器的代理 并希望即时更改与 sessionid cookie 关联的域名 该cookie有一个与之关联的 company com域 我想使用apache mod rewrite 或一些类似
  • 使用 IP 地址而不是域名发送电子邮件

    我试图避免通过 DNS 服务器将电子邮件发送到我托管的虚拟帐户之一上的地址 我知道我可以用方括号将 IP 地址括起来 但如何为服务器上的 虚拟 托管帐户指定邮箱用户名 换句话说 我在虚拟服务器上托管了多个域 所有域共享相同的 IP 地址 明
  • 从具有动态外部 IP 的计算机连接到 Azure SQL Server

    我正在尝试将具有动态外部 IP 的本地笔记本电脑连接到我们的 Azure SQL Server 为此 我创建了一个虚拟网络网关并将笔记本电脑连接到该网关 此外 我还向 SQL Server 添加了一个专用端点 之后 我可以使用telnet成
  • 在 JavaScript 中确定域名?

    使用有什么区别 if document domain toLowerCase indexOf domainName 1 and if window location href match 1 toLowerCase indexOf doma
  • 如何过滤wireshark以仅查看从我的计算机发送/接收的dns查询?

    我是wireshark新手 正在尝试编写简单的查询 要查看仅从我的计算机发送或由我的计算机接收的 DNS 查询 我尝试了以下操作 dns and ip addr 159 25 78 7 其中 159 25 78 7 是我的 IP 地址 看起
  • 可以分配给一个 Heroku 应用程序的最大域名数量?

    我正在与一位客户讨论一个项目 该客户希望他的用户可以通过自己的域名访问该应用程序 如果他们选择的话 可以分配给一个 Heroku 应用程序的自定义域数量是否有限制 The Heroku 文档 https devcenter heroku c
  • DHCP 服务器将任何 url 重定向到登陆页面

    我有一个 Linux DHCP 服务器 我需要将所有网络流量重定向到一个登陆页面 该页面将包含有关如何在网络上注册计算机的说明 无论用户输入什么 URL 都需要将用户重定向到网页 在 DHCP 服务器上 即 用户输入 google com
  • 为什么 Linux TAP 设备不处理 ARP 或 ICMPv6 数据包

    我正在使用以下命令打开 TAP 设备 p gt fd open dev net tun O RDWR skipping error handling code ifr ifr flags IFF TAP IFF ONE QUEUE IFF

随机推荐