网站建设费用,响应式网站特点,广州的十七做网站,博客网站主页代码html文章目录 1、了解数据链路层2、认识以太网3、认识MAC地址4、以太网报文5、局域网通信原理1、基本原理2、数据碰撞3、交换机4、ARP协议5、RARP协议6、局域网中间人 6、DNS#xff08;简单介绍#xff09;7、ICMP协议1、报文2、traceroute命令 7、NAT技术1、基本过程2、NAPT3、… 文章目录 1、了解数据链路层2、认识以太网3、认识MAC地址4、以太网报文5、局域网通信原理1、基本原理2、数据碰撞3、交换机4、ARP协议5、RARP协议6、局域网中间人 6、DNS简单介绍7、ICMP协议1、报文2、traceroute命令 7、NAT技术1、基本过程2、NAPT3、缺陷 8、代理服务器 应用层(HTTPHTTPS) → 传输层(TCPUDP) → 网络层(IP) → 数据链路层 1、了解数据链路层
实际上IP协议提供的路由功能路径选择比如从主机D到路由器F从路由器F到路由器G。链路层解决的就是如何将数据从D送到F。D和F属于同一个子网F和G属于同一子网所以链路层解决了在同一子网内发送数据的问题。同一子网内两台设备可以直接连接直接通信跨网络就是在不同的子网之间不断发送通过这些同子网的设备跨多个子网而走哪些路线就是网络层IP协议决定的怎样走是由链路层的MAC帧来决定的这两层共同决定了如何将数据从一个主机跨网络送到B主机的能力如果这两层有问题就让TCP来解决。
链路层属于驱动层底层的网络有很多不一样的网络网络的差异就体现在网卡、设备、软件驱动上所以这个东西无法做到操作系统里。
2、认识以太网
以太网是一个局域网子网的技术标准既包含链路层的内容也包含了一些物理层的内容是当前应用最广泛的局域网技术和以太网并列的还有令牌环网、无线LAN等以太网的网线必须使用双绞线。
3、认识MAC地址
局域网中当来到消息时每个主机都去检查是否是自己的信息不是就丢掉是就匹配上了。虽然两个主机都会认为在和对方通信但其它主机也都知道一个主机发信息了。每个主机都有网卡网卡有MAC地址标准长度6个字节。 ether后面的一串就是mac地址。
4、以太网报文 MAC帧的报头是目的地址 源地址 类型 CRC有效载荷就是中间的数据大小范围是46 ~ 1500字节所以上层给的报文最多不超过1500字节要超过46个字节如果不够就填充PAD字段实际上就填充一些垃圾数据。
报头部分目的地址是MAC地址源地址是发送方地址都占6个字节类型占2个CRC校验码占4个字节。MAC帧的报头是定长报头总共18个字节有效载荷也有长度范围。类型是帧类型表示数据类型填的是0800就是IP数据报0806就是ARP请求/应答8035则是RARP请求/应答。后两种原理相似本篇只写ARP。
5、局域网通信原理
1、基本原理
假设主机ABCD主机的mac地址假设为macABCD路由器R路由器也是局域网主机。主机A要给主机D发信息。
A的网络层发现A和D在同一子网内在MAC帧的报文中目的地址是macD源地址是macA类型是0800数据是IP报文以及CRC校验码。链路层将这个MAC帧报文发送到局域网中BCDR各自的链路层都收到了这个MAC帧报文比如主机CC将MAC帧的报头和有效载荷分离拿到报头这个结构体中的目的地址macD发现不是macC那么在链路层C就丢弃了这个报文BR也是这样的操作D也一样不过D发现目的地址就是它自己的MAC地址然后就交付给网络层传输层应用层而其它几个只有链路层知道这个报文网络层及之上的都不知情。网卡中也可以设置一个混杂模式不对报文的目标MAC地址进行认证。直接向上层交付这也就是大部分局域网抓包软件的原理。要想不被抓包在应用层对数据加密因为其它层都是公开的代码。
D给A响应的时候目的地址就是macA源地址是macD类型是0800数据是IP报文以及CRC校验码然后发送到局域网一样的过程最终A得到了响应。
2、数据碰撞
局域网是共享的资源有可能出现多个主机给多台主机通信这时候会出现数据碰撞网络都是光电信号如果碰撞的话光波就会互相干扰数据就不对了所以局域网也叫碰撞域。任何时刻只能有一台主机在给另一台主机发送数据帧。
为了预防这个问题发生主机的网卡通过校验码来做碰撞检测如果会发生碰撞就sleep上几秒再重新发避免碰撞。局域网内的所有主机都有这个机制不过每个主机休息的时间不一样所以就能错开发送以及都在休息没在休息的主机就可以发送了。所以局域网内主机越少越好碰撞概率越低。现实中很多人聚集在一起或者像下班期间这样的网络使用高峰期网络会变得卡就是因为碰撞概率大了很多设备都在丢包等待重发中。
如果要黑掉局域网就发送大量垃圾数据就有可能和所有主机碰撞不过发送垃圾数据的主机得绕开以太网的驱动程序让自己没有碰撞测试通过某种方式直接去干扰局域网。
链路层也有重传这是为了保证把数据发送到另一台主机。在OS角度局域网是临界资源因为一次只能让一个主机发送消息其它都得等碰撞检测和碰撞避免就是在保护临界资源的安全。而令牌环网有一些数据当作令牌只有拿着令牌的主机才可以发送数据发完后交给另一台主机这台主机才能发数据这个令牌就相当于互斥锁。
3、交换机
交换机工作在数据链路层周围的设备也都在一个局域网内。假设局域网分为左右两部分中间有交换机左部分发生碰撞交换机就不会把碰撞产生的垃圾数据传到右部分不影响右部分的主机这里交换机的作用就是划分碰撞域。
左部分正常交互但数据有可能扩散到右部分交换机也会收到这些数据就会丢掉不会转发到右部分减少右部分的碰撞概率。
一个区域内使用网络的设备很多时就得使用交换机。
4、ARP协议
在整个传输过程中IP地址和目标MAC地址一直不变源MAC地址一直在变。对方的IP地址是可以知道的那么对方的MAC地址如何知道
因为IP地址目的MAC地址不变底层网络的差异就会缩小。
ARP协议的主要功能是建立了IP地址和MAC地址的映射工作在链路层可以控制MAC帧报文的发送。MAC帧正常通信时直接将报文交给网络层除非不知道对方的MAC地址才用ARP协议来获得。链路层有MAC帧和ARP层。
APR的工作流程是将IP地址发送到局域网内对应的主机收到后返回带有自己的MAC地址的响应。
ARP报头 图中以太网首部就是MAC帧的报头ARP总共28字节存在于MAC帧的有效载荷里。以太网地址是MAC地址如果不知道就写成全F这时候就是在局域网内的广播地址帧类型是0806。硬件类型表明是网络类别比如以太网令牌环网设为1就是以太网协议类型是要转换的地址类型也就是IP地址写为0x0800…硬件地址长度这里固定为6字节因为是以太网的MAC地址协议地址长度这里就固定为IPv4地址所以是4字节op为1表示ARP请求为2是ARP应答目的以太网地址为全F表示不知道。
一个局域网内任何一台主机都可能向别的主机发送ARP请求收到其它主机发送的ARP请求也都可以发送ARP应答。因此一个主机可能既收到ARP应答又收到APR请求。
还是之前的例子好几台主机ABCDEFMAC地址就是macB这样的形式。主机A是一台入口路由器收到了一个IP报文里面有目的IPipF。此时入口路由器要获取F的MAC地址就构建一个ARP报文除去以太网首部填充剩下的部分10800641macAipA全FipF。将填充好的部分也就是不包括上图的以太网首部的部分拿着这个去封装进MAC帧报文先不管CRC校验和MAC帧报头填充全FmacA0806有效载荷就是刚才构建的ARP报文整个就构成一个MAC帧报文发送到局域网中。
所有的主机都收到了这个MAC帧报文都去分离报头和数据看到目的MAC地址是全F就交给ARP层ARP层拿到除去报头的MAC帧的有效载荷也就是之前构建的ARP报文先看到op是1就知道是请求再看到目的IP地址是ipF不是对应主机那就在ARP层丢弃。当F收到并做同样的步骤后发现是要询问的是自己的F就知道A主机在广播询问我的MAC地址于是构建ARP应答10806642macFipFmacAipA然后封装进MAC帧报文报头是macAmacF0806然后F将ARP应答发送到局域网中其它主机都能收到但在链路层中的MAC帧层没有去到链路层的ARP层就能看到目的MAC地址是macA不是自己就在MAC帧层丢弃。A也收到在MAC帧层知道只发给自己的又看到0806于是交给ARP层看到ARP报文先看op是2应答所以就提取发送端以太网地址macF。
所以顺序就是收到ARP报文后先看op因为主机在发送ARP请求后就忘记这码事所以得先看看来者何人。所以ARP请求和ARP响应是相互独立的。为了防止碰撞主机内会在得知结果后就把这个关系维护起来。ARP大量存在于各个子网之间的路由器之间比如传输过程中有什么路由器换了那就得ARP一下。局域网内要想知道各个主机的IP地址比如在192.168.1.0子网内。0 位置最多变为255所以192.168.1.1主机就全都发一遍请求有应答的就说明对应IP地址有主机也就拿到了这个主机的IP地址然后在本主机中保存起来。
Windows下命令arp -a可以看到主机保存的MAC地址也就是物理地址。想得到对端主机的MAC地址要发送ARP请求只需要发送IP协议往上层的任何一个报文即可或者用ping命令ping后面加上网址可以测试网络连通性会发送IP报文并且必须给应答在发ping之前主机就会发送ARP报文。
主机之间在局域网内发送的单个数据帧体积越小越好。如果碰撞的话数据帧更长重发成本就更高。
5、RARP协议
ARP是地址信息协议RARP是逆地址信息协议。RARP在知道MAC地址时找到IP地址这个很简单直接封装MAC帧报文发送过去询问就可。
6、局域网中间人
在一个局域网内ABCDE主机和路由器RE可以和C发消息E可以发消息到R由R发到别的子网中。主机的IP地址是公开的在应用层就知道了。IP地址知道了就可以ARP找到MAC地址。ARP有缓存用来维护最新的IP地址和MAC地址。
现在有中间人接入这个局域网有ipM和macM。主机构建ARP请求时可以作假所以中间人可以构建一个ARP请求表明IP地址是ipRMAC地址是macM。中间人将ARP请求发给主机AA的ARP缓存就以为主机R的MAC地址变了ipR应当对应着macM而不是之前的macR。之后A每次要发消息给路由器R都会发给M而不是R。
中间人M给路由器R发送ARP请求写明IP地址ipAMAC地址macM。R会发送大量应答冲刷防止应答丢失保证应答发送成功。R收到假报文后就改变了映射关系将ipA和macM对应起来这样每次R以为发送给A其实发送给了M。
像这样的做法叫做ARP欺骗。
6、DNS简单介绍
域名解析系统。能把域名转为IP地址在应用层工作使用UDP协议来进行DNS请求。IP地址不利于互联网推广宣传因为全是数字所以出现域名。域名和IP地址都可以访问同一个网页。浏览器收到输入的域名后向内置的域名解析服务器发送DNS请求得到IP地址再开始和厂商服务器交互。浏览器还会保存一些常见的域名和IP地址的映射关系。当上不了网时有可能是域名解析服务器挂掉了。
但域名其实并不是大众使用的点而是搜索引擎所以需要搜索引擎去做域名。大众打开电脑打开浏览器在搜索框内输入内容就可以访问网页浏览器就通过域名服务来找到相应的网页。
命令cat /etc/hosts域名解析时会优先查看hosts文件的内容。
一级域名是.后的比如comeducn等。二级域名是中间的那部分比如www.baidu.combaidu就是二级域名。不同的一级域名对应的域名解析也会有所不同。
7、ICMP协议
ICMP在应用层它可以让应用层协议绕过传输层直接使用ICMP协议。网络传输中IP协议只负责传输报文IP协议不提供传输可靠性并不知道是否丢包等问题。ICMP协议用来解决IP协议产生的问题双方ICMP进行交流如果有丢包对方就得发送报文告知。 确认IP包是否成功到达目标地址 通知在发送过程中IP包被丢弃的原因 ICMP基于IP协议工作 ICMP只能搭配IPv4使用IPV6得用ICMPv6。 假如对方主机挂掉发送方多次重发后对端主机就会发送一个ICMP报文告知发送方出现的问题原因。ICMP既可以通知出错原因也可以用于诊断查询。
1、报文 ICMP报文在IP报文的有效载荷中就像ARP报文在MAC帧的有效载荷中。 ping命令是C/C写的工作在应用层的软件用的就是ICMP协议。发送路径上任何一个主机出问题都需要给应答就会被ICMP收到。发送出去的IP报文报文中有一个TTL字段一开始设为1如果中间被丢弃那么不能直接丢弃要给应答这样TTL逐渐增加就知道一个主机到一个主机时需要多少个中间主机也就是跳数。
ICMP没有端口号因为端口号是传输层的内容。
2、traceroute命令
基于ICMP协议实现能够打印出可执行程序主机一直到目标主机之前经历多少路由器。
7、NAT技术
解决IPv4地址不足的问题。从运营商内网到公网通过不断地LAN口和WAN口转换就是NAT技术。之前已经写过从内网一个设备发送出去要能够转换到公网从公网再回到内网时也要能转换回来。NAT路由器就是做转换工作。
1、基本过程 当内网一个设备发送请求时有源IP地址和目的IP地址NAT路由器对内网有LAN口对公网有WAN口请求到达NAT路由器时源IP地址换成NAT路由器在公网的IP地址目的地址不变这就是从内网到公网的过程。
NAT路由器有一个映射表NAPT。从内网到公网会经过一次映射得到公网IP地址回来的时候也会通过这个映射表来得到内网的源IP地址。
2、NAPT
内网内会有多个设备要访问一个公网的服务器NAT在转化回来的时候要分清楚是哪个主机主机的哪个进程。所以IP地址端口号都得知道NAT路由器其实甚至能工作到应用层。
图中可以看出每个主机的源IP地址通过NAT路由器发送到公网时都会变成WAN口的IP地址但端口号也会不同所以就出现了上图灰框类似的映射表。IP地址和端口号都换就是因为有多个主机的多个程序在发送消息需要给所有程序都返回应答。在NAT角度下内网里就可以没有主机这个概念而是看作一个个网络客户端进程而公网里就是一个个网络服务器进程无论是公网还是内网ip port就是它们唯一的进程ID。在一个内网和一个公网的交互过程中两个网内的ID都是唯一的放在一起就是这组网络的唯一所以NAT路由器就是将唯一做到了现实。
不过映射表中还维护了目的IP。这是因为防止有别的服务器发错信息映射关系中有目的IP就能保证接收的是目的服务器的信息而不是哪个服务器都收。
家里设备上网时经过的家用路由器运营商路由器都使用NAPT。
3、缺陷
无法从NAT外部向内部服务器建立连接转换表的生成和销毁都需要额外开销通信过程中一旦NAT设备异常即使存在热备所有的TCP连接也都会断开。
从外网访问到内网外网可以发消息到和这个内网NAT路由器相连的网通过这个网去访问内网。
8、代理服务器
正向代理在客户端与服务器之间再加一个代理服务器客户端发给这个代理服务器代理服务器发给服务器发送后传回来的资源也经过代理服务器代理服务器再发送给客户端资源也会存在代理服务器如果有客户端需要曾经某个客户端请求的资源那么代理服务器就直接把这个资源给客户端不需要再去访问服务器。正向代理服务器和厂商服务器之间还有路由器。正向代理可以起到缓存资源、提高访问效率的作用。正向代理需要认证不能让所有人都可以访问它只是一个区域的方案。正向代理也会过滤非法请求。
反向代理一个代理服务器不可能面对太多客户端所有就建立多个代理服务器提供一样的服务这些代理服务器就是集群。但这需要客户端发送时要挑选代理服务器吗这个任务再叫一个代理服务器去做它通常都是高并发服务器用来接收所有客户端的请求然后再分发给集群里的各个代理服务器要让这些服务器的负载达到均衡。只接受请求并发送出去所以它的负担不算重但也需要高并发。这样的高并发的代理服务器就是反向代理服务器。每个集群都有反代理。当有多个集群时不需要再用一个服务器来接收所有请求然后分发给所有集群。当客户端要访问某个资源时每个集群的反代理都有自己的IP地址所以就通过平衡各集群压力让这个请求去合适的反代理服务器再发送到集群中通过代理服务器去访问资源。 NAT和代理服务器的区别 NAT解决IPv4地址不足的问题代理服务器贴近具体应用比如通过代理来翻墙迅游加速器也是利用了代理服务器 NAT工作在应用层直接对IP地址进行替换代理服务器工作在应用层1 NAT一般在局域网的出口部署代理服务器可以在局域网做也可以在广域网也可以跨网 NAT一般集成在防火墙、路由器等硬件设备上代理服务器则是一个软件程序需要部署在服务器上 代理服务器广泛用于翻墙广域网中的代理和负载均衡局域网中的代理中。
结束。