文章目录
- @[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命令
- 八、代理服务器
文章目录
- @[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.浏览器输入域名后的通信过程
当用户在浏览器中输入一个域名,从用户输入到最终访问目的网站的整个过程可以分为以下步骤:
- 用户在浏览器中输入域名(例如www.example.com)。
- 浏览器首先会检查本地缓存中是否存在该域名对应的IP地址。如果存在且尚未过期,浏览器将直接使用缓存的IP地址。
- 如果本地缓存中不存在或已过期,浏览器将向本地DNS服务器发送域名解析请求。
4.本地DNS服务器会查找自己的缓存,如果找到了对应的IP地址,它会将IP地址返回给浏览器,跳至第7 步。 - 如果本地DNS服务器的缓存中没有对应的IP地址,它会向根域名服务器发送请求。
- 根域名服务器会返回负责该顶级域名(如.com)的顶级域名服务器的地址给本地DNS服务器。递归服务器拿到地址以后,建立TCP连接;向IP地址,发送HTTP请求;服务器处理请求;返回响应结果;关闭TCP连接;
4.dig工具
安装 dig 工具可以查看域名解析过程:yum install bind-utils
- 开头位置是 dig 指令的版本号
- 第二部分是服务器返回的详情, 重要的是 status 参数, NOERROR 表示查询成功
- QUESTION SECTION 表示要查询的域名是什么
- ANSWER SECTION 表示查询结果是什么. 这个结果先将 www.baidu.com 查询成了 www.a.shifen.com, 再将
www.a.shifen.com 查询成了两个 ip 地址. - 最下面是一些结果统计, 包含查询时间和 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协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器
八、代理服务器
代理服务器可以分为正向代理和反向代理。
-
正向代理(Forward Proxy):
正向代理是位于客户端和目标服务器之间的代理服务器。当客户端需要访问目标服务器时,请求首先发送到正向代理服务器,然后由代理服务器转发请求给目标服务器,并将响应返回给客户端。客户端不直接与目标服务器通信,而是通过代理服务器进行通信。正向代理隐藏了客户端的真实身份和位置信息,可以用于访问被封锁的网站、提供缓存功能、加速访问等。游戏加速等就是因为使用了正向代理服务器. -
反向代理(Reverse Proxy):
反向代理是位于目标服务器和客户端之间的代理服务器。当客户端发送请求到目标服务器时,请求首先到达反向代理服务器,然后由代理服务器根据一定的策略将请求转发给目标服务器,并将目标服务器的响应返回给客户端。客户端不知道实际提供服务的是目标服务器,而是与反向代理进行通信。反向代理可以实现负载均衡、提供安全性、缓存静态内容、减轻目标服务器压力等。翻墙要通过反向代理服务器才能实现.
总结:
正向代理是客户端通过代理服务器访问目标服务器,隐藏了客户端的身份信息;
反向代理是客户端通过代理服务器访问目标服务器,隐藏了目标服务器的身份信息。