【linux--->数据链路层协议】

文章目录

    • @[TOC](文章目录)
  • 一、数据链路层协议概念
  • 二、以太网帧格式
    • 1.字段分析
  • 三、局域网通信原理
  • 四、ARP协议
    • 1.结构
    • 2.作用
    • 3.ARP通信过程
    • 4.ARP协议相关命令
  • 五、局域网内中间人原理
  • 六、DNS系统(域名系统)
    • 1.域名概念
    • 2.DNS系统组成
    • 3.DNS协议
    • 3.浏览器输入域名后的通信过程
    • 4.dig工具
  • 七、ICMP协议
    • 1.ICMP协议作用
    • 2.协议格式
    • 3.ping命令
    • 4.traceroute命令
  • 八、代理服务器

一、数据链路层协议概念

链路:就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他交换结点。
数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
网络中主机间通信的路由是有IP协议策划的,但是具体通信实施是由数据链路层实施的,主要负责相邻设备之间的通信.数据链路层是以帧为单位传输和处理数据,所以要把数据封装成帧.

数据链路层协议会根据不同的网络驱动程序和网络硬件设施而变化。不同类型的网络硬件设施,如以太网、无线局域网(WLAN)、广域网(WAN)等,具有不同的特性和限制。因此,为了在特定的网络环境中实现高效的数据传输,数据链路层协议需要根据网络驱动程序和硬件设施进行相应的调整和优化。例如,以太网是一种常见的有线局域网技术,其数据链路层协议包括以太网帧格式、MAC地址分配、帧传输机制等。而无线局域网(WLAN)则涉及到无线信道管理、帧碰撞避免机制、信号强度控制等。这些协议的设计和实现都要考虑到底层网络驱动程序和硬件设施的特性,以保证数据传输的可靠性、效率和安全性。

二、以太网帧格式

在这里插入图片描述

1.字段分析

地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;帧协议类型字段有三种值,分别对应IP、ARP(地址解析协议)、RARP(逆地址解析协议);帧末尾是CRC校验码。其中ARP的作用是知道目标主机IP地址,用IP地址获取Mac地址,RARP作用是知道Mac地址,用Mac地址获取IP地址.

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

在极端情况下,如果数据帧的长度非常的长,数据帧传送过程中丢包,会造成这个数据帧重传,如果将这个很长的数据帧分割多个数据帧,发生丢包时丢包的数据就会减小.所以以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在PAD字段补充.

三、局域网通信原理

在局域网中一台主机发送消息,同网内的所有机器都会收到,目标主机通过Mac协议中的目的Mac地址确认报文是否是发给自己的,如果不是直接丢弃,如果是则向上解复用.

一个局域网中同一时间只允许一台主机在发消息,否则会造成数据碰撞,消息是本质是二进制码,二进制在传输媒介中以光波或者电波的形式传送,如果多个信号波同时在局域网中传送,势必会发生碰撞,造成信号波混乱,二进制码被打乱.所以局域网也成为碰撞域.

主机在局域网中发送消息,所有主机都会受到消息包括自己,在报文中有CRC报文检测字段,收到自己发出去的报文就检测报文有没有出错,如果出错了,说明当下有另一台主机也在发送消息,两台主机发生了碰撞,这叫做碰撞检测,主机会等待一个随机的时间段后,再向网络中发送消息,这个避免碰撞.如果局域网中有一台设备一直在想网络中发送数据,会影响其他设备的正常使用.

从数据碰撞的问题看,局域网就好像是线程间通信的临界资源,只不过没有锁的概念,而是换成了尝试找资源空隙的方法;令牌环网的局域网通信原理就是如同是给网络加了锁,主机A在发送消息给主机B,这时候只能主机A发送消息,当主机B收到消息时,就只能主机B发送消息.

局域网中主机的数量越少,发生碰撞的概率就会越低,所以网络中又引入了交换机设备,交换机可以划分碰撞域,连接在交换机一侧的主机之间发生碰撞,不会影响另一侧的主机.同侧的主机发送消息,不会扩散到另一侧的主机.

四、ARP协议

1.结构

在这里插入图片描述

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
硬件类型指链路层网络类型,1为以太网;
协议类型指要转换的地址类型,0x0800为IP地址;
硬件地址长度对于以太网地址为6字节;
协议地址长度对于和IP地址为4字节;
op字段为1表示ARP请求,op字段为2表示ARP应答。

2.作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议;

3.ARP通信过程

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;所以需要向网络中发送ARP请求报文获取目标主机mac地址,ARP协议请求报文填充如下:帧类型字段0806,硬件类型为1,协议字段是0800,硬件地址就是Mac地址长度为6字节,协议地址就是IP地址为4字节,op为1响应,发送端以太网地址为为自己的Mac地址,发送端IP为自己的IP地址,目的以太网地址是全F(全F为站位符),目的IP填充目的IP地址.

局域网中的主机都会接收到ARP请求报文,所有主机由数据链路层直接向ARP层协议提交报文,目标主机收到请求报文首先会对比op字段,如果op是1,就再对比目的IP地址字段,如果与自己的IP地址不相同报文就在ARP协议层丢弃.

如果与自己的IP地址相同就返回ARP响应报文,响应报文填充报文帧类型字段0806,硬件类型为1,协议字段是0800,硬件地址就是Mac地址长度为6字节,协议地址就是IP地址为4字节,op为2响应,发送端以太网地址为为自己的Mac地址,发送端IP为自己的IP地址,目的以太网地址就是接收报文的发送端以太网地址,目的IP填充接收到的报文的发送端IP地址.

局域网内通信,不用每次都发送ARP请求报文,操作系统会在主机中将建立好的IP地址和mac地址的映射关系缓存在主机中一段时间.

4.ARP协议相关命令

arp -a命令:查看查看主机内维护的IP与Mac映射关系
在这里插入图片描述
ping命令:测试网络连通情况,间接获取局域网内目标主机IP与Mac的映射关系
在这里插入图片描述

五、局域网内中间人原理

局域网中间人的原理,就是利用主机无脑接收ARP响应的漏洞,例如中间人主机C攻击目标是主机A,C主机向网络中发送包含源Mac地址为MacC,源IP地址为IPR的请求报文,目的是在主机A中建立路由器IP地址和MacC地址的映射关系;然后再发送含源Mac地址为MacC,源IP地址为IPA的请求报文,目的是在路由器中建立主机AIP地址和MacC地址的映射关系.使得路由器与主机A的通信信息都会被主机C截胡.但是主机C需要不断的向网络中发送这两个请求报文,因为主机为了保持最新的IP和Mac地址映射关系,IP地址和Mac地址的映射关系在主机中的缓存时间是有限的.
在这里插入图片描述
如果主机C截胡主机A到路由器的报文而不转发主机A的报文到路由器,就会造成主机A访问不了网络.

六、DNS系统(域名系统)

1.域名概念

从编程的角度看,网络中用IP地址和端口号确定一个进程,但是对于用户来说这样的方式是不友好的,所以从为用户考虑的角度出发,有了用主机名代替IP地址的网站访问方式,并在主机的hosts文件中缓存主机名和IP地址的映射关系.如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.其他计算机也需要定期下载更新新版本的hosts文件才能正确上网;

cat /etc/hosts可以查看hosts文件信息
在这里插入图片描述

主机名也叫域名,域名是由子域名构成的,以百度域名为例,www.baidu.com com是顶级域名,baidu是二级域名,www是三级域名.顶级域名大致可以分成两类:一类是通用顶级域名(gTLD),比如.com、.net、.edu、.org、.xxx等等,共有 700 多个。另一类是国家顶级域名(ccTLD),代表不同的国家和地区,比如.cn(中国)、.io(英属印度洋领地)、.cc( 科科斯群岛)、.tv(图瓦卢)等,共有 300 多个。二级域名一般是指域名注册人选择使用的网上名称

2.DNS系统组成

随着计算机的增多使用hosts文件管理域名的方式已经不适应时代发展了,就有了DNS系统,但是也保留了hosts文件,

DNS系统是一种分布式地址信息数据库系统,采用客户机/服务器模式,服务器中包含整个数据库的某部分信息,并供客户查询。DNS允许局部控制整个数据库的某些部分,但数据库的每一部分都可通过全网查询得到。

由三部分构成:域名数据库、域名服务器和地址解析器。地址解析器负责解释域名给服务器和解释IP地址给客户端.域名服务器负责查询域名与IP映射关系信息,域名数据库负责存储域名与IP地址映射关系.

域名服务器分为根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器;
根据域名服务器维护着一张根域名列表,里面记载着顶级域名和对应的托管商,其实根域名列表的正式名称是 DNS 根区(DNS root zone),保存 DNS 根区文件的服务器,就叫做 DNS 根域名服务器(root name server)。根域名服务器保存所有的顶级域名服务器的地址

顶级域名服务器管理注册在该顶级域名下的所有二级域名,记录这些二级域名的 IP 地址。

权限域名服务器如果一个二级域名或者一个三/四级域名对应一个域名服务器,则域名服务器数量会很多,我们需要使用划分区的办法来解决这个问题。那么权限域名服务器就是负责管理一个“区”的域名服务器。

3.DNS协议

DNS(Domain Name System)是一种协议。它是互联网的核心基础设施之一,用于将域名转换为对应的IP地址。DNS协议定义了域名解析的规则和过程,包括域名的层次结构、域名服务器的交互方式等。通过DNS协议,我们可以使用便于记忆的域名来访问互联网上的资源,而不必直接使用IP地址。

3.浏览器输入域名后的通信过程

当用户在浏览器中输入一个域名,从用户输入到最终访问目的网站的整个过程可以分为以下步骤:

  1. 用户在浏览器中输入域名(例如www.example.com)。
  2. 浏览器首先会检查本地缓存中是否存在该域名对应的IP地址。如果存在且尚未过期,浏览器将直接使用缓存的IP地址。
  3. 如果本地缓存中不存在或已过期,浏览器将向本地DNS服务器发送域名解析请求。
    4.本地DNS服务器会查找自己的缓存,如果找到了对应的IP地址,它会将IP地址返回给浏览器,跳至第7 步。
  4. 如果本地DNS服务器的缓存中没有对应的IP地址,它会向根域名服务器发送请求。
  5. 根域名服务器会返回负责该顶级域名(如.com)的顶级域名服务器的地址给本地DNS服务器。递归服务器拿到地址以后,建立TCP连接;向IP地址,发送HTTP请求;服务器处理请求;返回响应结果;关闭TCP连接;

4.dig工具

安装 dig 工具可以查看域名解析过程:yum install bind-utils
在这里插入图片描述

  1. 开头位置是 dig 指令的版本号
  2. 第二部分是服务器返回的详情, 重要的是 status 参数, NOERROR 表示查询成功
  3. QUESTION SECTION 表示要查询的域名是什么
  4. ANSWER SECTION 表示查询结果是什么. 这个结果先将 www.baidu.com 查询成了 www.a.shifen.com, 再将
    www.a.shifen.com 查询成了两个 ip 地址.
  5. 最下面是一些结果统计, 包含查询时间和 DNS 服务器的地址等.

七、ICMP协议

1.ICMP协议作用

一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因ICMP正是提供这种功能的协议; ICMP协议确认IP包是否成功到达目标地址.通知在发送过程中IP包被丢弃的原因.

ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;,ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此把它归结为网络层协议;

2.协议格式

在这里插入图片描述
类型(Type):4位,标明ICMP报文的作用及格式。
代码(Code):4位,标明报文的类型。
校验和:8位,检验报文是否有误

报文各种类型与代码含义描述
在这里插入图片描述

3.ping命令

在这里插入图片描述
注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).ping命令会先发送一个 ICMP Echo Request给对端;
对端接收到之后, 会返回一个 ICMP Echo Reply;
ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息

4.traceroute命令

也是基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器
在这里插入图片描述

八、代理服务器

代理服务器可以分为正向代理和反向代理。

  1. 正向代理(Forward Proxy):
    正向代理是位于客户端和目标服务器之间的代理服务器。当客户端需要访问目标服务器时,请求首先发送到正向代理服务器,然后由代理服务器转发请求给目标服务器,并将响应返回给客户端。客户端不直接与目标服务器通信,而是通过代理服务器进行通信。正向代理隐藏了客户端的真实身份和位置信息,可以用于访问被封锁的网站、提供缓存功能、加速访问等。游戏加速等就是因为使用了正向代理服务器.

  2. 反向代理(Reverse Proxy):
    反向代理是位于目标服务器和客户端之间的代理服务器。当客户端发送请求到目标服务器时,请求首先到达反向代理服务器,然后由代理服务器根据一定的策略将请求转发给目标服务器,并将目标服务器的响应返回给客户端。客户端不知道实际提供服务的是目标服务器,而是与反向代理进行通信。反向代理可以实现负载均衡、提供安全性、缓存静态内容、减轻目标服务器压力等。翻墙要通过反向代理服务器才能实现.

总结:
正向代理是客户端通过代理服务器访问目标服务器,隐藏了客户端的身份信息;
反向代理是客户端通过代理服务器访问目标服务器,隐藏了目标服务器的身份信息。


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

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

相关文章

用html+javascript打造公文一键排版系统11:改进单一附件说明排版

一、用htmljavascript打造公文一键排版系统10中的一个bug 在 用htmljavascript打造公文一键排版系统10:单一附件说明排版 中,我们对附件说明的排版函数是: function setAtttDescFmt(p) {var t p;var a ;if (-1 ! t.indexOf(:))//是半角冒…

Leetcode-每日一题【剑指 Offer 10- I. 斐波那契数列】

题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开…

【前端】对前端小白极为友好的JS DOM入门文章

在现代web开发中,JavaScript (JS) 是不可或缺的一部分,它使我们能够为网页赋予交互性和动态性。其中,DOM(文档对象模型)技术在前端开发中起着至关重要的作用。本篇博客将带领前端初学者深入理解JavaScript DOM技术&…

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查 数据库操作 MySQL数据库pymysql Django开发操作数据库更简单,内部提供了ORM框架。 安装第三方模块 pip install mysqlclientORM可以做的事: 1、创建、修改、删除数据库中的…

R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析

在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能处理空间异质性,因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法:经典地理加权回归,…

SHELL——备份脚本

编写脚本,使用mysqldump实现分库分表备份。 1、获取分库备份的库名列表 [rootweb01 scripts]# mysql -uroot -p123456 -e "show databases;" | egrep -v "Database|information_schema|mysql|performance_schema|sys" mysql: [Warning] Using …

关于综合能源智慧管理系统的架构及模式规划的研究

安科瑞 华楠 摘 要:探讨了国内外能源互联网的研究发展,分析了有关综合智慧能源管理系统的定位,以及系统的主要特点,研究了综合智慧能源管理系统的构架以及模式规划。 关键词:综合能源;智慧管理系统&#…

8月3日上课内容 LNMP精讲

LNMP:目前成熟的企业网站的应用模式之一,指的是一套协作工作的系统和相关文件 能够提供静态页面服务,也可以提供动态web服务。 这是一个缩写 L linux系统,操作系统。 N nginx网站服务,前端,提供前端的静…

升级到mybatis-plus,系统启动的一些问题

在分表后mybatis-plus删除操作失效等问题处理 mybatis-plus 旧系统重构遇到的种种问题 在这三篇文章中,我花了近1个月时间重构了28个微服务,当中遇到的一些问题,但是发布到pretest环境,却还有启动问题,看来系统重构不是…

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息 第七章 小程序远程数据请求、获取个人信息 文章目录 【微信小程序创作之路】- 小程序远程数据请求、获取个人信息前言一、远程数据请求1.本地环境2.正式域名 二、获取用户个人信息1.展示当前用户的身份信息2.获取用…

价值 1k 嵌入式面试题-计算机网络 OSI

开门见山 请讲下 OSI 各层协议的主要功能? 常见问题 回答不系统回答不确切无法和实际网络协议做关联对应 答题思路 OSI 代表了开放互联系统中信息从一台计算机的一个软件应用流到另一个计算机的另一个软件应用的参考模型 OSI 包含 7 层,每一层负责特…

Java-day05(面向对象-1)

面向对象 面向对象与面向过程的区别: 面向过程,强调功能行为;面向对象,强调功能的对象。 Java类及类成员 类:对一类事物描述,是抽象的,概念上的定义对象:实际存在的该类事物的每…

踩坑(5)整合kafka 报错 java.net.UnknownHostException: 不知道这样的主机

java.net.UnknownHostException: 不知道这样的主机。 (5c0c3c629db9)at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:933) ~[na:na]at java.ba…

【Spring Cloud一】微服务基本知识

系列文章目录 微服务基本知识 系列文章目录前言一、系统架构的演变1.1单体架构1.2分层架构1.3分布式架构1.4微服务架构1.5分布式、SOA、微服务的异同点 二、CAP原则三、RESTfulRESTful的核心概念: 四、共识算法 前言 在实际项目开发过程中,目前负责开发…

正点原子HAL库入门1~GPIO

探索者F407ZGT6(V3) 理论基础 IO端口基本结构 F4/F7/H7系列的IO端口 F1在输出模式,禁止使用内部上下拉 F4/F7/H7在输出模式,可以使用内部上下拉不同系列IO翻转速度不同 F1系列的IO端口 施密特触发器:将非标准方波,整形为方波 当…

哈工大计算机网络课程网络安全基本原理详解之:密钥分发中心与公钥认证中心

哈工大计算机网络课程网络安全基本原理详解之:密钥分发中心与公钥认证中心 在介绍密钥分发中心的概念前,先来回顾一下之前介绍的身份认证协议AP4.0:利用随机数R来避免“回放攻击”,并借助于对称加密算法来保证R的加密传输和解密&…

Visual Studio配置PCL库

Visual Studio配置PCL库 Debug和Release配置新建项目配置属性表测试参考 Debug和Release Debug和Release的配置过程一模一样,唯一区别就在于最后一步插入的附加依赖项不同,因此下面以debug为例。 配置新建项目 1、新建一个C空项目,模式设置…

3ds Max如何进行合成的反射光泽通道渲染

推荐: NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 准备场景 步骤 1 打开 3ds Max。smart_phone.max打开已 随教程提供。 打开 3ds Max 步骤 2 按 M 打开材质编辑器。选择空材料 槽。单击漫射通道。它将打开材质/贴图浏览器窗口。选择位图&#xff0…

微信小程序如何引入Iconfont

在小程序中引入 Iconfont 可以通过以下步骤进行操作: 打开 Iconfont 网站(https://www.iconfont.cn/)并登录账号,创建一个项目并添加所需的图标到项目中。 在项目中选中需要使用的图标,点击右上角的 “下载代码” 按钮…

HTTP——五、与HTTP协作的Web服务器

HTTP 一、用单台虚拟主机实现多个域名二、通信数据转发程序 :代理、网关、隧道1、代理2、网关3、隧道 三、保存资源的缓存1、缓存的有效期限2、客户端的缓存 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率。…