HCIA内容回顾
抽象语言 — 电信号
计算机:将抽象语言转化为电信号 具体过程为: 抽象语言 —> 编码 编码 —> 二进制 二进制 —> 电信号 处理电信号
OSI/RM开放式系统互联参考模型
OSI--开放式系统互联参考模型 --ISO -- 国际标准化组织 -- 1979年
OSI核心思想:分层
TCP/IP----4层或者5层
应用层
应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及 应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
提供各种应用服务,人机交互的接口,将抽象语言转换成编码
表示层
表示层(Presentation Layer)是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。
将编码转换成二进制
会话层
会话层(Session Layer)是OSI模型的第5层,是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层 的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。 用户可以按照半双工、单工和全双工的方式建立会话。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址与MAC(介质访问控制子层)地址或网络层的逻辑地址不同,它们是为用户专门设计的,更便于用户记忆。
维持网络应用和网络服务器之间的会话连接
传输层
传输层(Transport Layer)是OSI模型的第4层。因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。该层的主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。该层常见的协议:TCP/IP中的TCP协议和UDP协议。传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。综上,传输层的主要功能如下:监控服务质量。
实现端到端的传输---应用到应用之间的传输
传输层地址:端口号(16位二进制)0~65535(0作保留一般不取)
1~1023知名端口号,1024~65535端口号不做硬性要求(特殊大厂除外)
SPORT,DPORT
Telnet-23,ssh-22,http-80,https-443
①可靠的;②不可靠的
TCP----传输控制协议。是一种面向连接的可靠传输协议。确保可靠性:①确认②重传 ③排序④流控
UDP----用户数据报协议。是一种非面向连接(无面向)的不可靠传输协议。
封装
![](https://i-blog.csdnimg.cn/blog_migrate/934bac84616cd26c660c4393afefff50.png)
应用层 传输层 — 端口号 — TCP,UDP 网络层 — IP地址 — IP 数据链路层 — 以太网中需要封装MAC地址 — 以太网协议 物理层
-
TCP/IP各层单位
应用层 — 报文 传输层 — 段 网络层 — 包 数据链路层 — 帧 物理层 — 比特流
-
跨层封装
OSI参考模型不支持跨层封装,而TCP/IP可以跨层封装
跨层封装的好处,可以提高转发效率
跨四层封装 — 一般应用在直连的路由器之间 — OSPF协议就是一个跨四层封装的协议,他的协议号为89
跨三四层封装 — 一般出现在直连的交换设备之间 — STP
面向连接----TCP
是指通信双方在通信时,要事先建立一条通信线路。其有三个过程:建立连接、使用连接和释放连接。
打个比方:打电话 两个人如果要通电话,必须先建立连接--拨号,等待应答后才能相互传递信息,最后还要释放连接--挂电话。
-
TCP数据结构
TCP的头部是可变长头部 --- 头部最短20个字节
TCP的校验和 --- 伪头部校验 --- 12个字节 --- 32位源IP和32位目标IP,8位的协议号,8位的保留,16位的总长度
其中resv可以保证QOS(服务质量);标志位(fin/syn/ack/urg)*生效是1不生效0 ACK:确认序号有效。 SYN:发起一个新连接。 FIN:释放一个连接。 URG:紧急位 Burgent pointer*紧急指针为了打标签。
TCP的三次握手-----C/S Client/Server
SYN 同步序列号请求 序列号—记录发送的次数—不同的厂商序列号不一样 Ack 确认 Ack=seq+1
-
TCP握手为什么需要三次?
发起连接方发出SYN,并收到ACK,这就是两次网络传输了。
同样被连接方也发出SYN,且等待对方回复,这也是两次网络传输。
加起来难道不是四次吗?实际上被连接方将对连接方 SYN(1) 的回复和自己 SYN(1) 的请求合并了,所以建立一个 TCP 连接最少只需要经过三次网络传输。
-
TCP建立连接为什么需要三次握手
举例:已经失效的连接请求报文段
⑴、client发送了第一个连接的请求报文,但是由于网络不好,这个请求没有立即到达服务端,而是在某个网络节点中滞留了,直到某个时间才到达server。
本来这已经是一个失效的报文,但是server端接收到这个请求报文后,还是会想client发出确认的报文,表示同意连接。
⑵、假如不采用三次握手,那么只要server发出确认,新的建立就连接了,但其实这个请求是失效的请求,client是不会理睬server的确认信息,也不会向服务端发送确认的请求。但是server认为新的连接已经建立起来了,并一直等待client发来数据,这样,server的很多资源就没白白浪费掉了。
⑶、采用三次握手就是为了防止这种情况的发生,server会因为收不到确认的报文,就知道client并没有建立连接。这就是三次握手的作用。
TCP的四次挥手
-
TCP挥手(断开连接)为什么要四次?
解释:
⑴、发起断开方发出FIN,并收到ACK,这就是两次网络传输了。
⑵、同样被断开方也发出FIN,且等待对方回复,这也是两次网络传输。
⑶、同样的逻辑分析下来,实际上也可以仅经过三次传输就断开此次连接,但为什么我们会说四次挥手呢?这是因为如果在收到FIN时,彼时还有数据未传输完,则先回复关于FIN 的 ACK,告知对方我已经知道你要断开了。则等待传输完毕后,被断开方再发送 FIN,告知自己也已经可以断开连接。
⑷但实际上完全可以是“三次挥手”,如果收到 FIN 时,已经没有数据要传输,则是“三次挥手”。
非面向连接----UDP
是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上版,由系统自主选定路线进行传输。
无面向连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文。
网络层
涵义详解
IP大小范围
--当Options=0时,1行是4字节 共4×5=20字节
--当IHL=1111(15)时,15×4=60字节
所以IPv4的大小范围为 20字节~60字节
第一行(32Bit)
-
Version(版本)——**4Bit**
表示IP的版本号
默认值为0100表示IPv4 如果为0110表示IPv6
-
IHL(首部长度)——**4Bit**
表示IP首部的总长度。
默认值0101=5 5X32/8=20字节 表示普通的IP报头长度为20字节
当首部长度最大15(1111)时, 15×32/8=60 字节
-
Type of Service**(服务类型)——8Bit**
对我们的数据或流量进行一个标记
也称为TOS
标记流量后,可以进行QOS QOS差分服务用该字段
QOS:可以做数据过滤、数据限速——这种叫服务质量
针对一些用户,牺牲掉一部分用户的资源,为更重要的用户提供更优质的服务。
对流量标记有三种方法
1、IPP 8bit标记流量只用了前3个(只能区分8种流量),后5个bit没用
2、DSCP 区分服务代码点 标记流量用来前6个(可以区分64种服务),后2个bit用于ECN
3、PHB 前两者兼容,21种(8+12+1)
-
Total Length**(总长度)——16Bit**
IP报头 + data
表示整个IP数据包的长度,以字节为单位,最长为65535
第二行(32Bit)
-
Identification (标识符)——**16Bit**
在3层对流量进行区分、标记。 (如果数据是基于UDP传输的,因为UDP没有序列号不能进行差错控制,所以需要在IP报文中支持差错控制——要把所有分片的数据进行重组)
通常每发送一份报文该值+1,该值在数据分片时,会复制到每一个片中。所以在重组分片包的时候会观察该值。把该值相同的分片收集到一起重组。
-
Flags**(标记位)——3Bit**
该字段主要用来分片和重组。
第一位Bit:R:保留位(Reserved Bit) ——该位一般置位0
第二位BIt:DF:不分片位(Don‘t Fragment)——能否分片位 该位置1(不分片) 置0(分片)
第三位Bit:MF:更多分片位 (More Fragment)——表示是否该报文为最后一片 0表示最后一片 该位置1表示后面还有更多分片
-
Fragment Offset**(分片偏移)——13Bit**
每一个分片的数据字段偏移原始数据报开始处的位置。
例:原始数据报的数据字段总长为1461bytes,使用TCP传输,对该数据报分片,第一片
的offset字段为0,第二片的offset字段就应该为1460
第三行
-
Time to Live(生存时间)——8Bit
三层防环机制(数据包的防环机制)
每查看一次路由表TTl减一,可经过最多的路由数,即数据包在网络中可通过的路由器数的最大值,一般为255,减到0下一个路由器丢弃该数据包
表示该IP数据包可以经过的路由器的最大数量,最大为256表示可以穿越256台路由,该字段采用减法的方式赋值,如果该字段减到了0还没有传送目的地,那么该IP数据包将被丢弃。最初设计这个字段就是为了防止IP报文在网络中循环无线传输,占用带宽等问题
单位:s 默认255s
防环工具 每经过一个路由题,TTL-1,当TTL=0 数据包丢弃
-
Protocol**(协议号)——8Bit**
范围:1~255
描述上层使用什么协议 Tcp=6 UDP=17 ICMP=1 OSPF=89
-
Header Checksum**(头部校验)——16Bit**
只计算IP数据包的头部有没有被改过,不检验数据部分
肯定不检验TTL,这里不采用ORC检验码,而采用简单的计算方法
用来使接收端检验收到的报文是否正确。
该字段只对IP首部计算校验和 不包含后面的数据字段。
第四行
-
Source Address**(源IP地址)——32Bit**
第五行
-
Destination Address(目标**IP地址)——32Bit**
第六行
-
Options
一般不使用该字段,该字段的值以32Bit为单位,不足时以0补充。
特殊功能
定义数据的严格路由(IP严格路由最多定义9个IP地址-Option字段只有40个字节,还有控制字符等需要占位所有就不足40【一个IP地址4个字节】)、松散路由、记录路由、时间戳。
严格路由:源到达目标必须按照指定的路由进行转发,走其他路是不允许的
写严格路由的时候:源ping目标所经过所有路由器的出接口IP地址依次写入到路由控制表中(ping包中),数据才能转发出去,数据转发出去的过程中每到一个路由器都要检测出接口IP地址,如果检测到的顺序跟列表顺序一样,则可以转发。如果中途多个路由器或少个路由器则数据包丢弃。
松散路由:写松散路由的时候:只写中间可能会产生影像数据转发方式的路由出接口地址
记录路由:将数据包传递过程中所经过的所有路由器的出接口IP地址全记录下来
时间戳:记录时间
-
Padding(填充项)
可变 全填0
只是为了保证option+padding的大小是32bit或者是32bit的倍数
数据链路层
-
局域网封装
Ethernet II IEEE802.3封装----ISIS BPDU---STP
-
广域网封装
串线 PPP HDLC ATM Frame-relay 帧中继
交换机的基本功能
1、基于源MAC的学习
2、基于目标MAC的转发
3、数据过滤
4、防环
ARP
ARP--地址解析协议(Address Resolution Protocol)
基本功能:知道目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代
字段1是ARP请求的目的以太网地址,全1时代表广播地址。
字段2是发送ARP请求的以太网地址。
字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0x0806。
字段4表示硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1。
字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。
字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。
字段8是操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答;值为3,表示进行RARP请求;值为4,表示进行RARP应答。
字段9是发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同。
字段10是发送ARP请求或应答的IP地址。
字段11和12是目的端的硬件地址和协议地址。
-
ARP工作过程
-
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,如果ARP表中含有主机B对应的ARP表项,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
-
ARP的请求报文与ARP的应答报文
请求报文
应答报文
-
正向ARP(普通ARP)(AARP)
功能介绍:通过ip地址获得对端的MAC地址。
工作过程:网络设备A发送数据包给网络设备B,数据包需要填写A、B的源目ip地址和源目MAC地址,这时候会在本地的ARP缓存表查询B的MAC地址,查询不到的话就会发ARP请求包以广播的形式在局域网中散开,B收到并核实目的IP地址是本地的IP地址就会以单播方式发送ARP回应包给A,ARP回应包记录了B的MAC地址。
-
反向ARP(RARP)
功能介绍:已知对端的MAC地址,通过二层单播、三层广播来 获取对端的IP地址。
无盘工作站通过RARP协议来获取IP地址(有了IP地址之后通过TFTP引导加载系统)
自己没有ip地址,但是有mac,通过RARP,想服务器请求获得了IP地址(这个服务器分配给他的),从而获得远程操作系统。
-
无故ARP(免费ARP)
功能介绍:查询想使用的ip地址是否在局域网中已被占用。
报文介绍:源目ip都是写本机的ip,源MAC写本机的MAC,目的MAC写广播地址。
用途: 确定设备的ip是否与其他设备ip冲突,当其他设备接收到免费ARP时,就会核对是否与本机 ip冲突,如果冲突了就会返回一个arp应答包告知ip地址已被占用。 设备改变物理地址时,可以通过免费arp报文通知其他设备更新arp表项。
-
代理ARP 功能介绍:路由器收到ARP request时,发现源目ip不在相同网段,就会饰演代理ARP角色,代为回答,告诉查询者它想要的MAC地址。
跨网段查询MAC地址方法:主机设置了默认网关,当查询的对象在局域网外时,将查询任务交给网关。
代理ARP过程:网段A的设备广播ARP request包,源MAC写自己的MAC地址,目的MAC写FFFF.FFFF.FFFF,网关收到后返回接口的MAC地址,A收到网关返回的ARP reply包后更新自己的ARP缓存表,于是A发出去的包都要通过网关路由器转发,网关路由器再在从网段B中广播得到B的MAC地址。
-
逆向ARP(IARP)
功能介绍:通过物理地址获得ip地址
一般存在于帧中继网络中,用于实现IP和DLCI地址的映射。