【Linux】Ⅻ基础网络:数据链路层

以太网协议

1. 来自网络层的ip数据报会交给递交给数据链路层的以太网协议;

2. 网络层是负责数据从哪里来到哪里去,而数据链路层负责数据从链路当中的设备到相邻设备;

以太网帧格式

  1. MAC地址:网卡绑定着,每一块网卡都有一个全球唯一的MAC地址。
  2. 目的地址:目的MAC地址
  3. 源地址:源MAC地址
  4. 类型:上层协议的类型
    1. 0800:ip协议
    2. 0806:ARP请求
    3. 0835:ARP应答、
  5. 数据:有效载荷,46~1500(MTU也就是1500字节),如果从网络协议栈传递下来的数据没有达到46字节,会在数据的前面默认补上0,以达到数据链路层对数据的限制

MTU——最大传输单元

 

可以看出,数据在传输过程中会变得越来越大。

MTU对IP协议的影响

具体可以见IP协议那节笔记

MTU对TCP协议的影响

  • TCP的一个数据报也不能无限大,还是受制于MTU。
  • TCP的单个数据报的最大消息长度,称为MSS。(Max Segment Size)
  • TCP在建立连接的过程中,通信双方会进行MSS协商。
  • 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度。(这个长度仍然是受制于数据链路层的MTU)
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
  • 然后双方得知对方的MSS值之后,选择较小的作为最终MSS。
  • MSS的值就是在TCP首部的40字节变长选项中。(kind=2)

 

MTU对UDP协议的影响

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8((UDP首部)),那么就会在网络层分成多个IP数据报。
  • UDP协议本身是不负责数据的可靠传输的,IP协议也是不负责可靠传输如果UDP数据在IP协议当中还进行了分片传输,万一有一个分片丢失,会导致整个udp数据报丢失。

查看硬件地址和MTU的相关命令——ifconfig

ARP协议——获取相邻设备的MAC地址

注意:ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。arp请求是不能跨子网的,只能在子网内部进行广播。

ARP数据报格式

  1. 以太网目的MAC地址:当是ARP请求数据报时,此处填充的是0xFFFFFFFFFFFF也就是广播地址,会给当前子网当中的所有i机器进行发送arp请求
  2. 帧类型:上层使用的协议——ARP
  3. 硬件类型:标识当前的网路类型,一般为以太网
  4. 协议类型:协议类型指要转换的地址类型,0x0800为IP地址
  5. 硬件地址长度:MAC地址长度(也就是6)
  6. 协议地址长度:ip地址程度(也就是4)
  7. op:表明当前arp数据报的类型
  • 置为1表请求
  • 置为2表应答

    8. 目的MAC地址:会先填充成0x000000000000,因为还不知道是哪一个呢

如何获取相邻设备的MAC地址呢?

ARP 是借助ARP请求与ARP响应两种类型的包确定MAC地址的。

1. 主机会通过广播发送ARP请求,这个包中包含了想要知道的MAC地址的主机IP地址。

2. 接收到ARP请求的机器,通过arp请求当中的目的ip地址,进行校验,判断目的ip地址是否和自己网卡设备的ip地址相符

① 不相符——不处理arp请求

② 相符——处理arp请求,回复arp应答。将自己的MAC地址放到arp应答当中返回给arp请求的机器

相关命令——arping,模拟发送arp请求包

arp -I [网卡设备名称] -c [次数] [目标机器的ip地址]

上述栗子,发送了两个请求报,但是没有得到回应。

NAT协议——地址转换协议

对于子网中的请求来说——源IP如果是私网IP经过NAT地址转换,会将数据当中的源IP(私网IP)转换成为公网IP

对于服务器的应答来说——目的ip会从从公网IP转换成为私网IP,将数据发送到拥有私网ip的机器

静态NAT

1. 私网主机的私网ip和公网ip进行1对1绑定

2. 没有缓解ip地址枯竭的问题,因为还是一个1对1的关系

3. 作用——可以隐藏主机IP地址网关

动态NAT

1. 不局限与1对1的映射关系了,当私网的主机想要访问互联网的时候,经过NAT网关,NAT网关分配一个空闲的公网ip进行使用

2. 一旦私网ip和公网ip建立了映射关系之后,也是1对1的关系。但是也没有对ip地址枯竭的问题起到多大的缓解作用

NAPT——动态NAPT重载

1. 在NAPT当中,一个公网ip可以对应多个私网ip,前提时对数据包当中的端口也进行了转换

2. 一个公网ip最多可以转换2^16个私网ip

DNS协议——域名解析协议,将浏览器当中输入的域名转化成为ip地址

1. DNS中的域名都是用句点来分隔的,比如www.server.com,这里的句点代表了不同层次之间的界限。

在域名中,越靠右的位置表示其层级越高。

常见域名如下:

1级域名:一级域名服务器

.com .gov .cn .net .us .edu

2级域名:

baidu.com jingdong.com taobao.com

3级域名:

baike.baidu.com

2. 域名服务器

根域名服务器:用做授权使用,授权当前域名服务器是否能够提供域名解析服务。

一级域名服务器、二级域名服务器和三级域名服务器将用户提供的域名转化称IP地址,返回给请求者。当然,在这里面当中一定保存了一个映射关系域名和IP的映射关系。

3. 域名解析的过程

  1. 递归方法

 

递归是用户只向本地DNS服务器发出请求,然后等待肯定或否定答案。而迭代是本地服务器向根DNS服务器发出请求,而根DNS服务器只是给出下一级DNS服务器的地址,然后本地DNS服务器再向下一级DNS发送查询请求直至得到最终答案

    2. 迭代方法

一个URL输入到浏览器之后会发生什么?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值