Linux知识点 -- 网络基础 -- 数据链路层

Linux知识点 – 网络基础 – 数据链路层

文章目录

  • Linux知识点 -- 网络基础 -- 数据链路层
  • 一、数据链路层
    • 1.以太网
    • 2.以太网帧格式
    • 3.重谈局域网原理
    • 4.MAC地址
    • 5.MTU
    • 6.查看硬件地址和MTU的命令
    • 7.ARP协议
  • 二、其他重要协议或技术
    • 1.DNS(Domain Name System)
    • 2.NAT
      • 2.1.NAT技术背景
      • 2.2.NAPT
      • 2.3.代理服务器
      • 2.4.NAT和代理服务器


一、数据链路层

1.以太网

“以太网”不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容,例如:规定了网络拓扑结构,访问控制方式,传输速率等;
例如以太网中的网线必须使用双绞线,传输速率有10M, 100M, 1000M等;
以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等;

2.以太网帧格式

数据链路层标识主机唯一性的方案:MAC地址(网卡地址)
在这里插入图片描述

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、
    RARP;
  • 帧末尾是CRC校验码;

数据链路层如何解包和封装?

  • 报头都是固定大小的格式,解包时只需要裁掉固定大小的报头就可以了,封装时也一样;

数据链路层如何向上交付?

  • 按类型字段的划分,表明向上交付的数据类型;

3.重谈局域网原理

  • 当一台主机在局域网中发送消息,局域网中所有的主机都会收到消息;
  • 所有的主机都会对比目的地址,如果不是自己,就直接丢弃消息,只有目的主机会保留消息;
  • 局域网本质是一个临界资源,多个主机通信时,任何时刻只能保证只有一个主机在发送;
  • 发送的时候发生了碰撞,就会等一段时间再发送;

如果局域网中,同时有多台主机在发送数据,数据之间就发生了碰撞问题;
避免碰撞的算法:发送主机会休息随机时间,然后重新发送;
局域网中还存在交换机,能够减少碰撞的发生

  • 交换机:划分碰撞域,如果识别到碰撞,就不向另一端转发,减少交换机两侧碰撞域的压力
    在这里插入图片描述

4.MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位及6个字节;一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19);
  • 在网卡出厂时就确定了,不能修改,MAC地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址);

对比理解MAC地址和IP地址

  • IP地址描述的是路途总体的起点和终点;
  • MAC地址描述的是路途.上的每一个区间的起点和终点;

5.MTU

局域网中的主机越少越好,能够减少碰撞的发生;
局域网数据帧发送的时候,数据帧不能太长,也不能太短,数据帧太长容易造成碰撞,太短携带的有效数据太少;

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充;
  • 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
  • 如果一个数据包从以太网路由到拨号链路上数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
  • 不同的数据链路层标准的MTU是不同的;

MTU对于TCP协议的影响:

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

6.查看硬件地址和MTU的命令

使用ifconfig命令,即可查看ip地址,mac地址和MTU;
在这里插入图片描述

7.ARP协议

同一个网段中,两台主机之间进行网络通信,发送主机必须知道接收主机的MAC地址,然而,如果我们只知道目标主机的IP地址,而不知道对方的MAC地址,就需要通过目标IP地址,得知对方的MAC地址,这就是ARP协议(地址解析协议),这是一种局域网协议
在这里插入图片描述

ARP数据报格式:
在这里插入图片描述

  1. 源MAC地址、目的MAC地址在以太网首部(MAC地址)和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的;
  2. 硬件类型指链路层网络类型,1为以太网;
  3. 协议类型指要转换的地址类型,0x0800为IP地址;
  4. 硬件地址长度对于以太网地址为6字节;
  5. 协议地址长度对于和IP地址为4字节;
  6. op字段为1表示ARP请求,op字段为2表示ARP应答;
  7. 发送端IP地址填本主机的IP地址;目的以太网地址就是目标主机的MAC地址,如果不知道,一般填FFFF…(表示广播);目的IP地址填目标主机的IP地址;

ARP协议获取目标MAC地址的过程:

  • 当主机A在局域网中向获取主机D的MAC地址时,主机A的ARP数据报如下图所示:
    在这里插入图片描述
    主机A不知道主机D的MAC地址,在目的以太网地址中填的是全F,这样会对局域网中所有的主机进行广播,其他每一台主机都要对数据帧进行处理,解包并向上交付,MAC帧解包后,每一台主机都会拿到该ARP请求,拿到后先看的是op类型,判断是应答还是请求,如果是请求,再看目的IP地址并对比,如果不是自己的IP地址,就丢弃,如果是自己的IP地址,就应答;(ARP层丢弃)
  • 主机D对A的广播进行应答时,主机D发出的ARP数据报如下图所示:
    在这里插入图片描述
    对于主机D的应答,由于其目的MAC地址不是全F,因此其他主机不会处理该应答,在发现该报文的目的MAC地址是主机A后,直接将该报文丢弃 (MAC层丢弃);主机A收到该应答后,首先应该确认OP类型,再看发送端的IP地址和MAC地址,就拿到了主机D的MAC地址;

结论:

  1. 任何主机可能之前向目标主机发起过ARP请求,注定了未来会收到对应的ARP应答;
  2. 任何一台主机,也可能被别人发起ARP请求;
    因此,局域网中,任何一台主机收到ARP请求的时候,可能是一个应答,也可能是一个请求;
  3. ARP请求成功之后,请求方会暂时将IP地址和MAC地址的映射关系暂时保存下来,因此不用每次发送数据都要进行ARP协议;
  4. 不光是在目标最终子网中才会进行ARP,ARP的过程会在网络路径中随时发生,只要两台主机处于一个网段中,就有可能发生ARP;ARP在路由器到路由器之间也可能发生;
  5. arp -a命令可以获取主机所处局域网中所有主机的IP地址和MAC地址:
    6.
  6. ARP欺骗:伪装成为中间人;
    在这里插入图片描述

二、其他重要协议或技术

1.DNS(Domain Name System)

DNS是一整套从域名映射到IP的系统

  • TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆;
  • 于是人们发明了一种叫主机名的东西,是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系
    在这里插入图片描述

最初,通过互连网信息中心(SRI-NIC)来管理这个hosts文件的:

  • 如果一个新计算机要接入网络,或者某个计算机UP变更,都需要到信息中心申请变更hosts文件;
  • 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网;

这样就太麻烦了,于是产生了DNS系统:

  • 一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系;
  • 如果新计算机接入网络,将这个信息注册到数据库中;
  • 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址;

域名简介
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称;
在这里插入图片描述
域名使用 . 连接:

  • com:一级域名,表示这是一个企业域名,同级的还有"net"(网络提供商), “org”(非盈利组织)等;
  • baidu:二级域名,公司名;
  • www:只是一 种习惯用法,之前人们在使用域名时,往往命名成类,似于.xx.xxxww.xx.xxx这样的格式,来表示主机支持的协议;

有时候,我们的QQ,微信和游戏能够正常运行,但是网页却打不开,这是因为浏览器内置的DNS IP地址对应的服务挂掉了;

2.NAT

2.1.NAT技术背景

NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能;

  • NAT能够将私有IP对外通信时转为全局IP,也就是就是一 种将私有IP和全局IP相互转化的技术方法;
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;

NAT IP转换过程
在这里插入图片描述

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
  • 当10.0.0.10第一次向 163.221.120.9发送数据时就会生成表中的映射关系;

2.2.NAPT

那么问题来了,如果局域网内有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的,那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了,使用IP+port来建立这个关联关系;
在这里插入图片描述

  1. 其实在进行源地址转换的过程中,可能不一定只替换原IP,必要的时候,源端口也要被替换;
  2. 路由器在NAT转换的过程中,除了单纯的替换,还会为我们根据报文请求的四元组,为我们构建一个映射关系;
  3. 源IP表示唯一的一台主机,源端口表示该主机上唯一的一个进程;
    源IP + 源端口表示唯一的一个进程,自己在自己的内网中的唯一性;
  4. 无论从内向外,还是从外向内,都能在各自的网络中表示唯一性,所以,这个映射关系是互为KEY值的;
  5. 这种关联关系也是由NAT路由器自动维护的,例如在TCP的情况下,建立连接时。就会生成这个表项;在断开连接后,就会删除这个表项;
  6. 如果我从来没有访问过外网,外网能够直接访问内网吗? 理论上不能;
  7. 但是有很多基于NAT原理的软件,能够帮助我们进行从外网访问内网:内网穿透;

2.3.代理服务器

正向代理服务器:

  • 用户所有的请求都要经过代理服务器,再由代理服务器发送给公网接收端服务器,服务器端的响应也需要经过代理发到客户端;
  • 其中正向代理服务器会完成身份认证、数据缓存、内容审核、保证内网安全等功能(替用户做事情);

反向代理服务器:

  • 在公司的大型机房中,所有用户的请求都会经过一台反向代理服务器,代理服务器将用户请求均衡的分配给每一台服务端主机,保证整个集群的负载均衡;
  • 反向代理服务器不会做任何的业务处理,只负责将请求推送到后端的指定主机;

2.4.NAT和代理服务器

路由器往往都具备NAT设备的功能,通过NAT设备进行中转,完成子网设备和其他子网设备的通信过程;
代理服务器看起来和NAT设备有一点像,客户端像代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器;服务器返回结果后,代理服务器又把结果回传给客户端;
那么NAT和代理服务器的区别有哪些呢?

  • 从应用上讲,NAT设备是网络基础设备之一 ,解决的是IP不足的问题;代理服务器则是更贴近具体应用,比如通过代理服务器进行f q,另外像迅游这样的加速器,也是使用代理服务器;
  • 从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换;代理服务器往往工作在应用层;
  • 从使用范围上讲,NAT一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网做,也可以跨网;

fq是正向代理;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三相空气开关

一、三相空开的作用 三相空气开关对任意一相出现过载或短路,均起到保护作用。 二、三相空气开关原理图: 1、老式空气开关 1)、短路时,电磁脱钩器工作 2)、过载时,发热元件引起双金属片弯曲,使脱钩器工作 3)、测试按…

RabbitMQ开启消息跟踪日志(trace)

Trace 是Rabbitmq用于记录每一次发送的消息,方便使用Rabbitmq的开发者调试、排错。 1、启动Tracing插件 在RabbitMQ中默认是关闭的,需手动开启。此处rabbitMQ是使用docker部署的 ## 进入rabbitMq中 docker exec -it rabbitmq1 bash ## 启动日志插件 r…

别再使用循环的方式筛选元素了!开发常用的Stream流+Lambda表达式过滤元素了解过吗?10000字超详细解析

目录 1. Stream 流的简单展示 1.1 抛出问题 1.2 传统解决问题的编码方式 1.3 Stream 流的方式过滤元素 2. Stream 流的核心思想 3. Stream 流的使用 3.1 获取 stream 流 3.1.1 单列集合获取 stream 流 3.1.2 双列集合获取 stream 流 3.1.3 数组获取 stream 流 3.1.4…

低功耗蓝牙(BLE)开发——Qt

背景知识 低功耗蓝牙比经典蓝牙复杂些,需要了解一些协议的基础知识。 此部分参考博客GATT Profile 简介-CSDN博客 GATT详细介绍-CSDN博客 Introduction | Introduction to Bluetooth Low Energy | Adafruit Learning System 蓝牙 (四) GATT profile-CSDN博客 关…

Centos中利用自带的定时器Crontab_实现mysql数据库自动备份_linux中mysql自动备份脚本---Linux运维工作笔记056

这个经常需要,怕出问题因而需要经常备份数据库,可以利用centos自带的定时器,配合脚本实现自动备份. 1.首先查看一下,这个crontab服务有没有打开: 执行:ntsysv 可以看到已经开机自启动了. 注意这个操作界面,用鼠标不行,需要用,tab按键,直接tab到确定,或取消,然后按回车回到命…

CSS 之 table 表格布局

一、简介 ​ 除了使用HTML的<table>元素外&#xff0c;我们还可以通过display: table/inline-table; 设置元素内部的布局类型为表格布局。并结合table-cell、table-row等相关CSS属性值可以实现HTML中<table>系列元素的效果&#xff0c;具有表头、表尾、行、单元格…

Docker-compos

Docker-compose 简介 Docker-Compose项目是基于Python开发的Docker官方开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层&#xff0c;分别是 工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#…

HSRP热备份路由器协议的解析和配置

HSRP的解析 个人简介 HSRP hot standby router protocol 热备份路由协议&#xff08;思科私有协议&#xff09; HSRP v1 version 1 HSRP v2 version 2 虚拟一个HSRP虚拟IP地址 192.168.1.1 开启HSRP的抢占功能 通过其他参数 人为调整谁是主 谁是从 &#xff01; 查…

记录一次线上fullgc问题排查过程

某天&#xff0c;接到测试部门反馈说线上项目突然很快&#xff0c;由于当前版本代码和上一版本相比就多了一个刚上线了一个5分钟1次的跑批任务&#xff0c;先关闭次任务后观察是否卡顿&#xff0c;并检查堆内存是否使用完造成频繁gc 1.通过jmap命令查看堆内存中的对象 2.生成当…

许战海战略文库|无增长则衰亡:中小型制造企业增长困境

竞争环境不是匀速变化&#xff0c;而是加速变化。企业的衰退与进化、兴衰更迭在不断发生&#xff0c;这成为一种不可避免的现实。事实上&#xff0c;在产业链竞争中增长困境不分企业大小&#xff0c;而是一种普遍存在的问题&#xff0c;许多收入在1亿至10亿美元间的制造企业也同…

PlantUML 绘图

官网 https://plantuml.com/zh/ 示例 绘制时序图 USB 枚举过程 PlantUML 源码 startuml host <-- device : device insert host note right : step 1 host -> device : get speed, reset, speed check note right : step 2 host -> device …

Premiere Elements 2024(PR简化版)直装版

Adobe Premiere Elements 2024 是一款由Adobe Systems推出的视频编辑软件&#xff0c;它结合了易用性和专业级的功能&#xff0c;帮助用户对视频进行剪辑、特效、色彩校正等处理。 主要功能和特点&#xff1a; 导入和组织视频&#xff1a;Premiere Elements 2024允许用户快速导…

ESP8266 WiFi物联网智能插座—下位机软件实现

目录 1、软件架构 2、开发环境 3、软件功能 4、程序设计 4.1、初始化 4.2、主循环状态机 4.3、初始化模式 4.4、配置模式 4.5、运行模式 4.6、重启模式 4.7、升级模式 5、程序功能特点 5.1、日志管理 5.2、数据缓存队列 本篇博文开始讲解下位机插座节点的MCU软件…

虚拟机软件Parallels Desktop 19 mac功能介绍

Parallels Desktop 19 mac是一款虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 PD19虚拟机软件具有快速启动和关闭虚拟机的能力&#xff0c;让…

Kelper.js 笔记 python交互

1 加载Kepler 地图 KeplerGl() 1.1 主要参数 height 可选 默认值&#xff1a;400 地图显示的高度 data 数据集 字典&#xff0c;键是数据集的名称 config地图配置字典 1.2 举例 from keplergl import KeplerGlmap_KeplerGl() map_ 默认的位置 1.3 添加自己的图 1.3.1 读…

ElementPlus Switch 开关基础使用

昨天开发用到开关组件 后台返回字段是 can_write 默认是0 or 1 但是Switch 组件绑定的默认值默认是 true or false 直接绑定会导致默认是关闭状态 在页面一加载 值发生变化时 会自己调用 查了文档 需要使用 active-value 和 inactive-value 来指定绑定的数据类型 …

23种经典设计模式:单例模式篇(C++)

前言&#xff1a; 博主将从此篇单例模式开始逐一分享23种经典设计模式&#xff0c;并结合C为大家展示实际应用。内容将持续更新&#xff0c;希望大家持续关注与支持。 什么是单例模式&#xff1f; 单例模式是设计模式的一种&#xff08;属于创建型模式 (Creational Pa…

网页游戏的开发流程

网页游戏的开发流程可以根据项目的规模和复杂性而有所不同&#xff0c;但通常包括以下一般步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.需求分析&#xff1a; 确定游戏的概念、目标受众和核…

手写 分页

子组件&#xff1a;TimePage.vue 效果图 <template><div class"click-scroll-X"><!-- 上 --><!-- eslint-disable-next-line --><span class"left_btn" :disabled"pageNo 1" click"leftSlide"><&…

PanoFlow:学习360°用于周围时间理解的光流

1.摘要&#xff1a; 光流估计是自动驾驶和机器人系统中的一项基本任务&#xff0c;它能够在时间上解释交通场景。自动驾驶汽车显然受益于360提供的超宽视野&#xff08;FoV&#xff09;◦ 全景传感器。 然而&#xff0c;由于全景相机独特的成像过程&#xff0c;为针孔图像设计…