HCIP笔记整理
TCP/IP模型
首先我们要了解一个东西PDU,称为协议数据单元,是指在TCP/IP模型中,数据的存储的不同名称
层次 | PDU |
---|---|
应用层 | 数据报文 |
传输层 | 数据段 |
网络层 | 数据包 |
数据链路层 | 数据帧 |
物理层 | 比特流 |
封装
封装: 就是在不同层中,封装相应的功能数据
在数据传输过程中,会通过TCP/IP模型,在通过模型中,每一层都会把上层的传出的协议包 当成整个数据部分,然后加上自己的协议头部组成自己的协议包 ,然后传给下一层。
在数据传输过程中,从应用层传出的是原始数据,在传输层中,才开始进行封装操作。物理层截止,物理层不参与封装
封装过程 :
应用层:
因为在TCP/IP模型中 将应用层 表示层 会话层 三层看作一层应用层,下面均以应用层代替这三层。而对于不同的数据,应用层会有不同的封装协议,所以在讨论封装时协议包传输到传输层时才会添加头部信息,应用层传出的协议包,也称为数据报文或原始数据
传输层:对于应用层传出来的协议包,传输层在协议包的基础上,会添加源端口和目标端口,
这时候生成的协议包,称为数据段。
网络层:对于传输层传出来的协议包,网络层在协议包的基础上,会添加源IP和目标IP还有对应的协议号,这时候生成的协议包,称为数据包。
数据链路层:对于网络层传出来的协议包,数据链路层在协议包的基础上,会添加源MAC和目标MAC还有类型字段,这时候生成的协议包,称为数据包。
物理层是用来传递电流信号的,不参与封装,所以封装在数据链路层就结束了。
物理层:对于数据链路层传出的协议包,物理层会将其转换成电信号,就是1 0组成的二进制流,最后称为比特流
解封装,即为封装的逆过程
从这个图中我们还可能看到在封装过程中使用的一些协议,这些协议在哪一层进行封装,也就说明了这些协议是哪一层的
下面了解一下相关的数据报文:
同时我们要知道之前提到的协议头部就是指报文本身
传输层的报文:
TCP:
UDP报文:
网络层:
IP报文:
数据链路层中:
以太网的头部:
跨层封装
为什么会进行跨层封装呢?对于大多数数据而言,数据都是按照正常的TCP/IP模型中的顺序进行封装和传递,而跨层传输一般情况会出现在直连设备(直接用网线连接的设备)之间,可以提高传输效率。而我们之所以要讨论跨层封装,主要是对于在TCP/IP模型之前出现的协议,在HCIP阶段,我们主要讨论两个,OSPF和STP。
根据查询的资料 OSPF和STP协议似乎并没有跨层封装,这一点有待进一步考证。
跨层封装的优势在于,少了一部分层次的封装,那就意味着在解封装的时候也会少一层,这样传输的数据包就小了,数据包小了,效率也就提升了,提升数据包的转化效率,但同样缺少了传输层中相关的功能。
关于跨层封装的例子:
OSPF
对于OSPF到底属于哪一层的协议,不同的厂商有不同的看法,一般是说在应用层或网络层,而在华为体系下,OSPF属于网络层的协议。
关于跨层封装,OSPF是跨过了第4层(传输层) 同时就缺少了传输层的相关协议,没有了相应的端口号。在之前的端口号中,我们了解到这是用来的区分相应的应用和服务的,为了弥补这个功能,所以使用协议号来标识相关的协议,对于类似于OSPF的协议利用不同的协议号来区分,防止因为跨层传输 而导致不清楚协议的要求。
常见的协议号:
TCP 6
UDP 17
OSPF 89 ack报文
STP生成树协议
STP生成树协议:交换机之上进行的协议
跨了第三,四层
电脑获取IP地址的方式:
1.静态配置
管理层的电脑的IP地址一般情况不改变
2.DHCP 动态主机配置协议 在传输层利用UDP进行传输 应用层的协议
为了方便用户操作,所以简化获取IP地址的方式,
部署成本低 手机基本上都能开热点
端口号:
UDP 客户端C ---- 68 发给客户端?
服务端S ---- 67
1.首次获取ip地址
1.1 C—>S dhcp-discover–寻址网络中可能存在的DHCP服务器
客户端向服务端寻求IP地址 发送discover报文
UDP SPORT 68 DPORT 67
SIP 0.0.0.0 DIP 255.255.255.255
SMAC PC DMAC FF-FF…FF
1.2 S—C dhcp-offer报文—携带一个可用的IP地址
(假定网络中存在DHCP服务器,没相关的服务器,当然也就没有回包)
UDP SPORT 67 DPORT 68
SIP FWQ DIP 可用的IP地址/255.255.255.255
对于不同的厂商,有不同的回包方式
华为:单播回复给目标主机 写分配的IP地址
思科:广播 255.255.255.255
Smac fwq dmac pc/ff…FF
1.3C—>S—dhcp request–请求报文,请求一个IP地址(不区分厂商)
UDP SPORT 68 DPORT 67
SIP 0.0.0.0 DIP 255.255.255.255
SMAC PC DMAC FF-FF…FF
1.通知请求的服务端我使用了你下发的IP地址
2.告知网络中其他dhcp服务端,你的地址没有使用可用释放掉
请求一个IP地址 (冗余的思想,备份)
因为在实际生活中,为了防止有时候机器故障,所以一般在一个广播中,一般会有多个DHCP服务器,所以在之前请求时的广播可能会有多个DHCP服务器回复可以分配IP地址,所以,这个包就是向对应的DHCP进行确定使用对应的IP地址。(一般使用第一个收到的IP地址,因为是第一个收到,所以主机和服务器的延迟可能是相对而言最低的。)
在request包中,使用的是广播,因为别人给你分配了IP地址, 你用不用也要给别人回复,因为不回复的话,分配的IP地址并不会重新分配,这样IP地址就浪费了,并不能充分利用。
1.4 S—C dhcp-ack报文—携带一个可用的IP地址
UDP SPORT 67 DPORT 68
SIP FWQ DIP 可用的IP地址/255.255.255.255
Smac fwq dmac pc/ff…FF
2.再次获取ip地址
ACK - NAK
获得一个IP地址的租期一般情况为24h,所以我们每天都需要重新获取新的IP地址,因为是重新请求IP地址,所以就不需要使用前两个包,来验证 区域内是否有DHCP服务器,因为之前已经连过了,知道DHCP服务器的IP地址,所以进行单播来进行请求,所以目标IP地址,相较于首次,会用已知服务器的IP地址
1.3C—>S—dhcp request–请求报文,请求一个IP地址–单播发送
UDP SPORT 68 DPORT 67
SIP 获取到的地址 DIP fwq
SMAC PC DMAC FWQ
1.4 S—C dhcp-ack报文—携带一个可用的IP地址
UDP SPORT 67 DPORT 68
SIP FWQ DIP 可用的IP地址/255.255.255.255
Smac fwq dmac pc/ff…FF
这里有一个T1时间和T2时间的问题
T1 时间 --50%(租约的百分之50) 12h
T2 时间 --87.5 21h
当T2快到期时了,会使用request 询问能不能续租,如果服务器没有回包,会继续使用该IP,到了T2时间就会向其他服务器进行寻求IP
ARP协议–地址解析协议
已知一种地址获取另外一种地址的协议
华为下 是网络层 一般认为是2.5层的协议(民间说法)
正向ARP–通过IP地址获取MAC地址
ARP的过程 首先发出一个像上面这个报文
到交换机上,交换机首先记录端口和IP地址和MAC地址
因为目标MAC 的全ff 所以交换机会进行泛洪,复制转发这个报文
只有目标IP地址的主机会回复
回复报文:不是广播,而且已知IP和MAC所以进行单播回复
反向ARP–
免费ARP–
交换机转发:
首先收到数据帧之后,需要基于接受该数据帧的接口和数据帧中源MAC地址信息,记录对应关系到MAC地址表中,之后根据数据帧中的目标MAC进行转发,一旦存在记录则直接单播转发(只从某一个记录的接口发出),如果没有记录或者,的mac是全FF则洪范——除了接收该数据帧的接口外,想剩下所有接口复制转发一份该数据帧
路由器的转发原理:
当一个数据包来到路由器路由器会根据自身的路由表查看数据包中的目标IP地址进行转发,如果存在记录则直接转发,如果没有记录则直接丢弃