【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.mzph.cn/news/24140.shtml

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

相关文章

Linux 创建子进程

文章目录 前言一、进程,线程,程序 区分二、创建子进程三、创建多个进程1. 获取进程号2. 循环创建多个进程 四、进程工具。1. ps 查看当前进程.2. kill 进程终止. 总结 前言 在计算机科学中,进程(Process)、线程&#…

ChatGPT已打破图灵测试,新的测试方法在路上

生信麻瓜的 ChatGPT 4.0 初体验 偷个懒,用ChatGPT 帮我写段生物信息代码 代码看不懂?ChatGPT 帮你解释,详细到爆! 如果 ChatGPT 给出的的代码不太完善,如何请他一步步改好? 全球最佳的人工智能系统可以通过…

删除这4个文件夹,流畅使用手机无忧

在现代社会中,手机已经成为我们生活中不可或缺的一部分。然而,随着使用时间的增长,我们可能会遇到手机卡顿和内存不足的问题,让我们感到十分困扰。手机卡顿不仅影响使用体验,还可能导致应用程序运行缓慢,甚…

python绿色版运行程序,python 绿色版免安装

大家好,小编来为大家解答以下问题,python绿色版运行程序,python 绿色版免安装,今天让我们一起来看看吧! 软件简介 Python3.7.0 是一种被广大从业者广泛使用的通用型设计语言。该软件提供了丰富全面的模块,并…

MFC第二十七天 通过动态链表实现游戏角色动态增加、WM_ERASEBKGND背景刷新的原理、RegisterClass注册窗口与框架程序开发

文章目录 通过动态链表实现游戏角色动态增加CMemoryDC.hCFlashDlg.hCFlashDlg.cpp WM_ERASEBKGND背景刷新的原理RegisterClass注册窗口与框架程序开发CFrameRegister 通过动态链表实现游戏角色动态增加 CMemoryDC.h #pragma once#include "resource.h"/*内存DC类简介…

6.s081/6.1810(Fall 2022)Lab3: page tables

文章目录 前言其他篇章参考链接0. 前置环境1. Speed up system calls (easy)1.1 简单分析1.2 映射1.3 页分配1.4 页释放1.5 测试 2. Print a page table (easy)2.1 简单分析2.2 实现2.3 测试 3. Detect which pages have been accessed (hard)3.1 简单分析3.2 实现3.2.1 获取参…

8.物联网操作系统之事件标志组

。事件标志组定义 FreeRTOS事件标志组介绍 FreeRTOS事件标志组工作原理 一。事件标志组定义 信号量信号量只能实现任务与单个事件或任务间的同步。但是某些任务可能会需要与多个事件或任务进行同步,此时就可以使用事件标志组来解决。事件标志组能够实现某个任务与…

【PostgreSQL】系列之 一 用户创建和授权(三)

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的…

如何在 Android 上恢复已删除的视频|快速找回丢失的记忆

想知道是否有任何成功的方法可以从 Android 手机中检索已删除的视频?好吧,本指南将向您展示分步说明,让您轻松从手机中找回丢失的视频文件! 您是否不小心从 Android 智能手机中删除了珍贵的生日视频?难道是无处可寻吗…

宝塔面板Mysql数据库无法启动(已解决)

1、错误排查 Mysql 无法正常启动直接使用官方提供的脚本检查出错 wget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.shwget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.sh 打印出…

LoadRunner

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录 LoadRunner 安装LoadRunner 三大组件之间的关系LoadRunner 脚本录制WebTours 系统 脚本加强事务插入插入集合点插入检查点参数…

增量式PID算法及其MATLAB实现

增量式PID算法是一种常用的控制算法,用于控制系统中的反馈控制。它通过对系统的误差进行递推式的计算,实现对系统输出的调节,使得系统的输出逐渐趋向于设定值。 delta u(k)=u(k)-u(k-1)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2)) PID算法由三个部分组成:比例(…

Cat.1如何成为物联网业务加速器?

随着Cat.1芯片及模组在功耗和成本上的不断优化,在窄带物联网领域,越来越多的终端客户把Cat.1当做与NB-IoT相比较的第二选择。越来越多的表计、烟感、市政等行业终端将Cat.1模组应用于非集中化部署的上报类终端业务中,Cat.1这只“网红猫”仍保…

基于vue医院分时段预约挂号系统java病历管理系统snsj0

伴随着我国社会的发展,人民生活质量日益提高。互联网逐步进入千家万户,改变传统的管理方式,医院病历管理系统以互联网为基础,利用java技术,和mysql数据库开发设计一套医院病历管理系统,提高工作效率的同时&…

[Linux]理解文件系统!动静态库详细制作使用!(缓冲区、inode、软硬链接、动静态库)

hello,大家好,这里是bang___bang_,今天来谈谈的文件系统知识,包含有缓冲区、inode、软硬链接、动静态库。本篇旨在分享记录知识,如有需要,希望能有所帮助。 目录 1️⃣缓冲区 🍙缓冲区的意义 …

Python(六十九)为什么要将元组设计成不可变序列

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

nginx服务

目录 基本介绍 nginx的主要功能 nginx的主要应用场景 nginx常用命令 nginx另外一种安装方式 nginx常用的信号符: nginx配置文件详解 全局配置 event模块 http模块 server模块 location模块: 模块的划分 基本介绍 nginx:高性能、…

06 Ubuntu22.04上的miniconda3安装、深度学习常用环境配置

下载脚本 我依然是在清华镜像当中寻找的脚本。这里找脚本真的十分方便,我十分推荐。 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh 下载十分快速,10秒解决问题 运行miniconda3安装脚本 赋予执…

python数据容器

目录 数据容器 反向索引 list列表 语法 案例 列表的特点 列表的下表索引 list的常用操作 list列表的遍历 while循环遍历 for循环遍历 tuple元组 前言 元组定义 元组特点 获取元组元素 元组的相关操作 元组的遍历 while循环遍历 for循环遍历 字符串 前言…

LeetCode113. 路径总和 II

113. 路径总和 II 文章目录 [113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/)一、题目二、题解方法一:递归另一种递归版本方法二:迭代 一、题目 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶…