HCIA板块
欢迎来到我的博客,这里是Linux板块,配合之前RHCSA进阶,希望我的博客可以帮助到您,感谢您的阅读,有什么问题还希望一起探讨交流,感谢各位的支持,感谢!
应用层,表示层,介质访问控制层
层 | 功能 |
---|---|
应用层 | 将抽象语言(人类语言)转化为编码 |
表示层 | 将编码转化为二进制 |
介质访问控制层 | 简称MAC 用来控制物理层 |
物理层 | 是物理硬件,用来处理光电信号 |
注:这里我们所说的抽象语言是:文字,图像,音乐等等。所谓编码就是:C语言,c++语言,Java语言等等
eg:将一个笑脸通过电脑发送给另一台电脑。
1.在应用层中先将笑脸转化为编码,再传给表示层,表示层将编码转化为二进制,然后表示层再将二进制告诉给介质访问控制层,介质访问控制层控制物理层的CPU,将二进制变为电信号,电信号通过网卡上的网线,将电信号传给另一台电脑的物理层,另一台电脑再倒着将笑脸传给它的应用层,最后一个笑脸就成功地显示在电脑屏幕上。
网络发展前传
因为电脑刚出来的时候,是不能进行相互通信的,为了解决这样一个问题,我们需要把网络增大。
最初网络增大方式
1.使用中继器(放大器,是一个导体),延长传输距离
这种方法是通过纯物理加压的方式,延长传输距离,但是有很多弊端:
1.延时加大
2.延长距离有限
2.使用集线器(HUB,也是一个导体)将节点(终端)数量的增加
所谓集线器就是集成了中继器的功能,可以一次性连接多个电脑。
但是这个方法也存在很多弊端:
1.安全问题:电脑A给电脑B发消息时,集线器会将电脑A的消息发送给连接在它上的所有电脑
2.延时依旧加大
3.地址问题:当存在3个以上的电脑时,需要用地址去区分电脑
4.冲突问题:电脑A给电脑B发消息时,刚好电脑B也要给电脑C发消息,当两个消息同时经过集线器时,两个电信号相互影响,最终会破坏消息,使消息都不能成功发送。
解决地址问题,冲突问题
1.解决地址问题:
每一个设备在出厂的时候,厂家都会给这个设备一个地址,这个地址称为MAC地址(网卡芯片出厂烧录的全球唯一),由48位二进制组成,在设备中用16进制进行标识,这个MAC地址是全球唯一的。有了这个MAC地址就可以解决上述所说的地址问题。
2.冲突问题:
在这里我们使用CSMA/CD(载波侦听多路访问/冲突检测),这个技术通俗的来讲就是排队机制,当发生冲突时,一个先进行发送,另一个排队后进行发送。
注:但是这样依旧存在延时问题,而且冲突问题也依旧存在(电脑ABC同时发送,当电脑A发送完,BC在发送时就会冲突)
网络增大的升级要求
1.无限传输距离
2.无冲突(所有终端都可以同时收发自己的数据)
3.单播(一对一传输)
此时,我们就根据需求发明了网桥,网桥经过一年年迭代,最终成为了我们所熟知的交换机,交换机成为了集线器的升级版
交换机实现的功能
1.和集线器一样提供端口密度,用于更多的用户接入
2.无限延长传输距离:电脑A将表示二进制的电信号通过网线传给交换机,交换机会将电信号转换为二进制并进行储存,交换机再将二进制转化为电信号传给下一个电脑或交换机,就在这样(电信号转二进制并存储,把储存中的二进制转电信号)的循环下,就可以实现无限延长传输距离。简单讲:交换机将电流识别为date,之后再找到流量的出口后,将date重新制作为电流进行传输,实现了逻辑上无限延长传输距离的效果。
3.实现无冲突的环境(所有节点可以同时收发自己的数据):交换机中内存条会储存二进制,只要内存足够大,不管有多少个二进制,都会进行储存,最后再一一转发。
4.单播(一对一通讯):电脑A给电脑B发笑脸,A将笑脸变为date,date前会贴上A和B的MAC地址,交换机识别的时候会进行记录,比如:原MAC是A,连接我的1号口,如果它的MAC表中有B的连接口,就会把date发给B。如果没有,它会进行洪泛,从而找到B对应的连接口,然后再发给B。
注:简单来讲就是:
1.由于交换机工作在二层,故可以将电流识别成为二进制后,再重新转换为电信号,来实现无限传输距离。
2.通过识别数据,存储数据再转发的逻辑来解决冲突。
3.通过记录数据帧中的MAC地址对应接口,唯一转发到目标,实现单播。
网络发展前传线路总结
让网络变大----(无限距离,无冲突,单播)----交换机----MAC地址----洪泛----洪泛范围----路由器----ip地址----ARP----广播----广播域(洪泛域)
大白话总结:
我们为了让网络变大,即为了实现无限距离的传输,传输过程中没有冲突并且要实现一对一的单播,于是就出现了交换机,交换机识别的是设备的MAC地址并且主动通过洪泛找到对应设备的连接口,于是就产生了洪泛范围。洪泛范围越大,网络越卡,为了解决网络卡顿,于是就出现了路由器去隔离洪泛范围。IP地址的出现,让两台电脑之间的互通变得更加方便。eg:电脑A访问电脑B,会先判断在不在同一洪泛范围,在,电脑A就会发送ARP请求,迫使交换机去洪泛,这种被迫洪泛的就称为广播,广播之后就会获取电脑B的MAC地址,从而实现通信。不在,电脑A会发ARP要网关的MAC,之后将流量传输给路由器,通过路由器进行转发。
那么路由器是怎样转发的呢?
当路由器收到date时,会将date的原MAC改为自己的MAC,将目标MAC改为全f,原ip和目标ip不变。之后在另一个广播域里面路由器发ARP请求获取目标ip的MAC,这样就实现了不同广播域中设备的互通。(原ip和目标ip不变,每经过一个广播域,原MAC和目标MAC都要改变,路由器可以向pc要MAC地址)
注:
1.洪泛:除流量入口,其他接口复制转出。洪泛范围越大,网络越卡。
2.洪泛范围:通过路由器进行划分。比如:电脑A在找电脑B,会先判断AB在不在同一洪泛范围,如果在,通过洪泛去找,不在,则将流量交给路由器。
3.IPV4地址:32位二进制构成,存在两个部分,前部分为网络位,标记对应的洪泛范围(广播域)。后部分为主机位,标记在该范围内的唯一性。一个ip地址的网络位和主机位依赖子网掩码来进行区分。
4.ARP:地址解析协议,已知对端的某一地址,来获取另一种地址
5.正向ARP:已知同一网段其他设备的ip地址,通过广播的形式来获取对端的MAC地址。
6.路由器的ip地址,也就是我们熟称的网关。
OSI开放式系统互联参考模型
7.应用层
6.表示层
5.会话层
4.传输层
3.网络层
2.数据链路层
1.物理层
目的
解决计算机网络中复杂的大问题,从而支持异构网络系统之间的互通互联。
在这里,我们先了解应用层,表示层,数据链路层中的介质访问控制层,物理层
上三层 | 功能 |
---|---|
应用层 | 抽象语言(人类语言)> 编码 |
表示层 | 编码 > 二进制,定义数据格式与结构,协商上层数据格式,数据加密压缩,数据加密 |
会话层 | 建立并维持会话,将会话地址映射成为运输地址,即应用程序内部区分地址,建立端到端的会话(无标准) |
上三层为应用程序对数据进行加工处理的部分,所以统称为数据应用层
下四层 | 功能 |
---|---|
传输层 | 提高通讯质量(TCP/UDP提供端口号,分段数据包) |
网络层 | Internet协议,提供ip地址,逻辑(临时)寻址 |
数据链路层 | 逻辑链路控制层LLC(做效验)+ 介质访问控制层MAC(控制物理层) |
物理层 | 存在物理硬件,处理光电信号。电压,接口,线缆,传输距离等物理参数。四大特性:机械,电器,功能,规程。(定义电气电压接口规范光学特性) |
下四层负责数据的传输,统称为数据流层
数据链路层的逻辑链路控制层是怎样做效验的呢?
eg:电脑A要发1个G的视频给电脑B,在发送前,电脑A会会这1个G的date做一次Hash算法,抽样出128位的数据,
当电脑B收到这1个G的date后,电脑B也会做一次Hash算法,将抽样出来的128位数据和A的128位数据进行对比。从而实现了效验。
注
这种效验只能保证数据的完整性,不能保证数据的安全性。
传输层中的TCP和UDP具体是干嘛的呢?
在解释这个问题之前,我们首先要解释两个名词:
1.分段:网络在正常通讯中,为保障通讯流程,且可以多人共享带宽,需要单个数据包不能过大(数据包容量不易过大,否则影响传输效率及共享带宽,分段大小由MTU决定)分段就是将上三层加工好的date分成若干个小date。这个分段会受到MTU(最大传输单元,默认为1500字节)限制。 (MSS:最大段长度1480字节)
2.端口号:用客户端区分进程(不同应用程序),用服务端区分不同的服务。比如:当客户端访问服务器时,将在动态端口号中随机选择一个唯一数值来代表该程序的进程(源端口号);该端口号到达服务器后,服务器在回复消息时将该端口定义为目标端口号,便于客户端快速区分数据所要到达的进程(程序)。
注:0-65535,其中1-1023是默认的静态端口,注明端口,用于固定分配给服务器对应的服务(换句话说就是:给服务器说,客户端是来干什么的),1024-65535是动态端口号,随机端口号,用于标记客户端的进程。
UDP:用户数据报文协议
称为:非面向连接的不可靠传输协议,(仅完成传输层的基本工作----分段,端口号)
TCP:传输控制协议
称为:面向连接的可靠传输协议 ---- 在完成UDP的基础工作之上,还需要额外保障传输的可靠性。
面向连接---- 在传输之前进行3次握手建立TCP端到端的会话(虚链路)。
可靠传输 ---- 4中可靠传输机制(确认,重传,排序,流控(滑动窗口))(eg:电脑A与电脑B建立连接之后,电脑A每给B发一个包,B效验包的完整性后就回A一个确认,如果没有回确认或者说这个包坏了,那么A就重新发这个包。在发包之前先对分段后的包进行排序,以便B收到包后,确保了包的连通性。流控就是A通过时不时地增加发送包的数量,来检测B能够收到的最大包的数量,来完成高质量传输)。
简单协议分类
网络名词注解:
IPV4报头
标准IPV4报头为20个字节,可以扩展到60个字节。
Ver:版本(Version),标识了数据包的ip版本号。这个4位字段的值设置为二进制的0100表示IPV4,设置0110表示IPV6
IHL:报头长度(header length),字段长度为4位,它表示32位字长的IP报头长度
Service Type:服务类型,字段长度为8位,用来指定特殊的数据包处理方式,服务类型字段实际上被划分为两个子字段:优先权和ToS。优先权用来设置数据包的优先级;ToS允许按照吞吐量,时延,可靠性和费用方式选择传输服务。(总的来说:可以用来做流量策略)
Packet Length:总长度(345层),数据包总长度字段为16位,以8位组为单位计,其中包括IP报头。用IP数据包总长度减去IP报头长度,就可以确定数据包数据有效载荷大小。16 位制用十制表可以为 65535,所以IP数据包的最大长度是65535
Time to Live:简称TTL,生存时间,每个数据包存在初始的跳数寿命,基于目标系统为255,128,64间的一个数字,每经过一次路由器转发,该值-1,为0时数据包将不再传输,意义在于环路中 可以将数据传递停止下来,通过TTL 判断date所经过的路由器个数。
Protocol:协议,字段长度为8位,它给出了主机到主机层或传输层协议的“地址”或协议号,指定了数据包中信息的类型,用于对标上层的协议
协议号 | 主机到主机层协议 |
---|---|
1 | Internet消息控制协议(ICMP) |
2 | Internet组管理协议(IGMP) |
4 | 被IP协议封装的IP |
6 | 传输控制协议(TCP) |
17 | 用户数据报文协议(UDP) |
45 | 域间路由选择协议(IDRP) |
46 | 资源预留协议(RSVP) |
54 | NBMA下一跳解析协议(NHRP) |
88 | Cisco Internet网关路由选择协议(IGRP) |
89 | 开放式最短路径优先协议(OSPF) |
Header Chenksum:报头校验和
Source and Destination Address:源地址和目标地址,字段长度为32位
padding:填充,跨层封装到3层时,分片后所填充的内容
ARP----地址解析协议
通过对端的一种地址来获取对端另一种地址
- AARP:正向ARP----已知同一网段的ip地址,通过广播来获取该ip对应的MAC地址
- RARP:反向ARP----已知对端的MAC地址,获取本地的ip地址
- FARP----无故ARP,使用AARP,来查询本地的ip地址,用于ip地址的冲突检测
DNS
域名解析:提前记录了域名与ip的映射关系。用于用户在访问服务器时,输入域名后,解析出对应的ip地址,来让客户端访问服务器。
PDU
协议数据单元(各种数据包的一个单位称呼)
上三层:数据报文
传输层:段
网络层:包
数据链路层:帧
物理层:比特
封装,解封装
1、封装:从高层向底层数据加工的过程,在过程中数据将不断地变大。
注:传输层的协议号由应用程序决定
2.解封装:从底层向高层数据识别的过程,在过程中数据将不断地减少。和封装相反。
TCP/IP模型 VS OSI模型
- 层数不同
- OSI模型的网络层支持所有的网络层协议,TCP/IP的网络层实际被成为internet层,仅支持IP协议;
- TCP/IP协议栈道支持跨层封装
相同点:
两者都是模型化层次化
下层对上层提供服务支持
每层协议彼此相互独立
不同点:
OSI先有模型后有协议,TCP/IP先有协议后有模型
TCP/IP协议栈只适用于TCP/IP网络
层数量不同
半双工,全双工
背景:因为目前虽然使用了交换机,但是也只能解决用户与用户之间的冲突问题,若用户本身在同一时间段内,进行接收和发送消息,则在网线上就会存在冲突,那么为了解决这种冲突,于是就出现了半双工和全双工。
1.半双工:
在一个单点时间内,单一设备只能进行接收或者发送消息。(比如军队中,对讲机的应用)
2.全双工:
单点设备可以同时进行接收或发送消息。(比如网线中有8根铜线,4根铜线负责发送,4根铜线负责接收)
以太网
在初级阶段,数据链路层仅关注了一种协议----以太网。以太网在2层主要负责两个功能:1.控制物理层(该层的基本功能)2.提供MAC地址进行物理寻址(以太网的额外功能)
- {Preamble[前导卫,新数据开始的标志],Destination Address[目标MAC],Source Address[源MAC],Type[证明3层是什么协议]}:为2层报头
- data:345层数据
- FCS:校验和
数据包转发过程
源终端设备需要进行数据封装,从高层封装到物理层;过程中基于应用层流量,选择传输层的协议和端口号;基于目标ip地址、目标MAC来封装3层和2层头部;
获取目标ip的方式
1.本地已知
2.访问网页基于域名,通过DNS服务器进行解析
3.终端客服端软件提前存储服务器ip地址,直接访问服务器,基于服务器中转来与实际目标进行通讯
获取目标MAC地址方式
使用ARP请求通过广播的形式来获取同一广播域设备的MAC地址
交换机的工作原理
当数据帧进入交换机后,先查看数据中的源mac地址,然后将其与对应的入口记录;之后基于目标mac地址,查询本地的MAC地址表,若表中存在记录,按照记录对应接口单播转出;若没有记录,需要洪泛该流量 — 除流量进入接口外,其他所有接口复制转出;
终端访问另一设备时,在获取目标ip地址后,关注目标ip地址是否和本地处于同一网段;若在同一网段,使用ARP获取对端mac地址后,单播通讯;或目标ip地址与源头不在同一网段,将封装目标MAC地址为本地的网关位置;之后数据进入路由器,又路由器将数据基于路由表路由转发到目标地点;
总的来说:数据在跨网段传输过程中,源、目ip地址正常不变化,但源、目MAC地址在每一个广播域中重新编写,用于该广播域内的物理寻址;
TCP/IP协议栈道支持跨层封装
1.跨层封装-----应用层数据直接封装于3层报头或者2层报头
2.封装3层报头----同一广播域内的服务型协议(ARP/OSPF…)使用的设备均为3层设备
3.封装2层报头----同一交换网络内的二层设备服务型协议----STP
注:正常应用程序封装的数据流量不做跨层处理,所以跨层封装的意义在于更快的完成服务型协议间的沟通计算
跨层封装后,没有正常封装的功能,该怎么解决呢?
跨层封装时,部分没有封装的功能,必须由其他层面来辅助完成
跨层到3层(235层)
跨层封装到3层,那么4层的分段,端口号,该怎么解决呢?
跨层封装到3层报头时,IPV4报头可以对数据进行分片,之后每片内容填充与IPV4报头的padding(填充)中,携带到目的地。3层报头中还存在(protocol)协议号,用于对标后方(4层)所封装的协议0-255,其中6代表TCP,17代表UDP,其余数字每一个皆对应一个固定的跨层封装协议。
跨层到2层(25层)
首先,2层报头中也有类似的功能来实现分段,进程区分。
我们这里主讲以太网:在非跨层封装到2层时,以太网使用第二代数据帧,该帧不具备分片功能,仅存在类型号,可用于区分进程。
所以一旦数据被跨层封装到二层时,将启用第一代以太网封装。其中:第一代封装将数据链路层分为两层------LLC逻辑链路控制子层+MAC介质访问控制子层,LLC层负责分片和提供类型号来区分进程,MAC层用于提供MAC地址以及控制物理层。
LLC层-----802.2标准
MAC层----802.3标准
下图为第一代数据帧
MAC地址
由48位二进制构成,使用16进制标识,全球唯一,出厂时烧录到芯片中。
Broadcast:广播位
Local:用于测试使用,刚生成完成后,为1,等测试完没有问题后,为0
所以,正常人设备的前两位均为0