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.rhkb.cn/news/152803.html

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

相关文章

css记录写一个奇怪的按钮

完成作业的时候发现一个很有意思的按钮&#xff0c;记录一下记录一下 看看界面 可以看出是一个奇形怪状的按钮&#xff0c;而且在按下的时候&#xff0c;图片和文字的颜色会改变 尝试解决 <!DOCTYPE html> <html lang"zh"> <head><meta chars…

vue3+elementPlus:el-tree复制粘贴数据功能,并且有弹窗组件

在tree控件里添加contextmenu属性表示右键点击事件。 因右键自定义菜单事件需要获取当前点击的位置&#xff0c;所以此处绑定动态样式来控制菜单实时跟踪鼠标右键点击位置。 //html <div class"box-list"><el-tree ref"treeRef" node-key"id…

一篇短小精悍的文章让你彻底明白KMP算法中next数组的原理

以后保持每日一更&#xff0c;由于兴趣较多&#xff0c;更新内容不限于数据结构&#xff0c;计算机组成原理&#xff0c;数论&#xff0c;拓扑学......&#xff0c;所谓&#xff1a;深度围绕职业发展&#xff0c;广度围绕兴趣爱好。往下看今日内容 一.什么是KMP算法 KMP&#x…

【垃圾回收概述及算法】

文章目录 1. 垃圾回收概述及算法2. 垃圾回收相关算法2.1 标记阶段&#xff1a;引用计数算法2.2 标记阶段&#xff1a;可达性分析算法2.3 对象的 finalization 机制2.3.1 一个对象是否可回收的判断 2.4 清除阶段&#xff1a;标记-清除算法2.5 清除阶段&#xff1a;复制算法2.6 清…

【苍穹外卖 | 项目日记】第一天

前言&#xff1a; 我打算用16天的时间写完黑马程序员的苍穹外卖项目&#xff0c;为了督促自己每天坚持写以及记录项目知识点&#xff0c;所以用这种项目日记的方式鞭策自己 目录 前言&#xff1a; 今日完结任务&#xff1a; 今日收获&#xff1a; 1.阅读代码框架&#xf…

C#对字典容器Dictionary<TKey, TValue>内容进行XML序列化或反序列化报错解决方法

一、问题描述 在使用C#对字典容器Dictionary<TKey, TValue>内容进行XML序列化报错【System.Exception:“不支持类型 System.Collections.Generic.Dictionary2[[System.String, mscorlib, Version2.0.0.0, Cultureneutral, PublicKeyTokenb77a5c561934e089],[System.Strin…

QQ浏览器怎么才能设置默认搜索引擎为百度

问题&#xff1a; 打开QQ浏览器&#xff0c;搜索相关信息时发现总是默认为”搜狗搜索引擎“&#xff0c;想将其转为”百度搜索引擎“ 解决&#xff1a; 1、点击浏览器右侧”菜单“图标&#xff0c;选择”设置“&#xff0c;如下图所示&#xff1a; 2、在”常规设置“中的”搜…

MAC版Gradle构建Spring5.X源码阅读环境

前言&#xff1a; 三年前鄙人有幸在现已几乎报废的Window的DELL中搭建过Spring源码环境&#xff0c;今天&#xff0c;Mac版的搭建&#xff0c;来了。 本篇文章环境搭建&#xff1a;Spring5.2.1 Gradle5.6.3-all jdk8 IDEA2022.3版本 文章目录 1、Spring源码下载2、Gradle下载…

教资一年可以考几次 教资考试每年次数介绍

教师资格证一年可以考两次。根据教师资格证考试规定&#xff0c;为了满足报考人员的工作需求&#xff0c;达到市场供求均衡的状态&#xff0c;教师资格证区别于其他的技术资格类的考试&#xff0c;会每年举行两次考试&#xff0c;分别在上半年和下半年各举行一次考试。 上半年…

运行软件找不到mfc140u.dll怎么解决,mfc140u.dll是什么文件

"找不到 mfc140u.dll"是一条错误信息&#xff0c;表示您的计算机上缺少一个名为 mfc140u.dll 的动态链接库&#xff08;DLL&#xff09;文件。这个文件通常与 Microsoft Visual C Redistributable 相关。Mfc140u.dll 是 Microsoft 基础类库&#xff08;MFC&#xff0…

React组件

一、React组件 函数组件 // 函数组件 // 组件的名称必须首字母大写 // 函数组件必须有返回值 如果不需要渲染任何内容&#xff0c;则返回 null function HelloFn () {return <div>这是我的第一个函数组件!</div> }// 定义类组件 function App () {return (<di…

动态代理IP常见超时原因及解决方法

在使用动态代理IP时&#xff0c;常常会遇到代理超时的问题。网络环境的不稳定性以及代理IP的质量问题&#xff0c;都可能会引起代理超时。这种情况下&#xff0c;代理服务器无法在规定时间内响应我们的请求&#xff0c;导致请求失败。 使用动态代理IP时&#xff0c;哪些原因会引…

iPhone15系类LDR6020P 超简外围手机转接器/拓展坞方案

目前市面上的手机大部分已经取消3.5音频耳机接口&#xff0c;仅仅保留了Type-c口。但是追求音质和零延迟的用户仍然会选择3.5mm有线耳机&#xff0c;因为在玩手机游戏的时候&#xff0c;音画不同步真的很影响游戏体验&#xff0c;所以Type-C转3.5mm接口线应运而生。 #iPhone15…

Maven聚合项目配合Springcloud案例

创建maven项目 导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

LeetCode 1251. 平均售价

题目链接&#xff1a;1251. 平均售价 题目描述 表&#xff1a;Prices Column NameTypeproduct_idintstart_datedateend_datedatepriceint (product_id&#xff0c;start_date&#xff0c;end_date) 是 prices 表的主键&#xff08;具有唯一值的列的组合&#xff09;。 price…

大数据学习(1)-Hadoop

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博>主哦&#x…

RTC 时间、闹钟

实时时钟RTC是一个独立的定时器。RTC模块拥有一个连续计数的计数器&#xff0c;在软件配置下&#xff0c;可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。 在掉电情况下 RTC仍可以独立运行 只要芯片的备用电源…

材质、纹理、贴图的区别和关联

1、材质、纹理、贴图的概念 材质&#xff08;Material&#xff09;、纹理&#xff08;Texture&#xff09;、贴图&#xff08;Texture Map&#xff09;是计算机图形学中的三个概念&#xff0c;它们之间存在关系但也有一些区别。 材质&#xff08;Material&#xff09;是描述物…

java spring cloud 工程企业管理软件-综合型项目管理软件-工程系统源码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

WIN10 NPM的安装

引言&#xff1a; 什么是node.js? javaScript是一门脚本语言&#xff0c;通常被用来编写、执行本地源代码。脚本语言需要一个解析器才能运行&#xff0c;HTML文件中的JavaScript代码由浏览器解析执行。而自行执行JavaScript代码则需要Node.js解析器才能运行。 每个解析器都…