6ca62071-ad13-4979-9c27-4908045d734f
原文位于:https://atmujie.com
这是我学完HCIA写的笔记
先放张协议地图
网工说白了,学的就是这些东西
目前普遍使用的是由阿帕网演化的TCP/IP四层模型,用于学习的是ISO组织推出的OSI七层模型
OSI | TCP/IP | 作用 |
---|---|---|
应用层 | 就是应用 | |
表示层 | 应用层 | 对应用层产生的数据进行编译或者解码 |
会话层 | 建立连接-维持连接-断开连接 | |
传输层 | 传输层/运输层 | 确定端口号=port ;实现数据具体的传输方式 |
网络层 | 网际层 | ip寻址 |
数据链路层 | 网络接口层 | 定位mac地址,数据校验 |
物理层 | 连接设备,发送电信号 |
数据的传输形式
第一代:电路交换:共同维护逻辑的一条链路-仅仅供两端设备之间访问,如果链路未释放,其他终端仍然无法使用链路
第二代:报文交换:在传输数据外面,添加发送者的信息,以实现报文的精确转发。
第三代:分组转发:将每个数据的大小进行定义,按照相同大小数据进行转发
现在使用的是分组转发技术
物理层的单位是:比特 —— byte
从最初到现在,一共出现过9种网线规格,现在仍在使用的网线从五类网线开始(包括五类)
1、一类:早期的电话线缆–2芯–56Kb
2、二类:可以传输语音-数据接收4芯-4兆
3、三类:4芯—10兆
4、四类:8芯—16兆
5、五类:增加了绝缘层—100M
6、超五类:增加了屏蔽层—250M–1000M
7、六类:中间加入塑料十字架–1G
8、超六类:增加屏蔽层–1G
9、七类:用于万兆网络—都是屏蔽双绞线—10G
网线制作两种规格:
568A:白绿 绿 白橙 蓝 白蓝 橙 白棕 棕
568B:白橙 橙 白绿 蓝 白蓝 绿 白棕 棕
现在常用568B规格
单模光纤 | 多模光纤 |
---|---|
玻璃丝-细 | 玻璃丝-粗 |
光信号损耗小 | 信号损耗大 |
传输距离远 | 传输距离近 |
成本开销高(需要激光信号发射) | 成本开销低 |
适合数据中心 | 适合企业网 |
在物理层发送数据时,如果有两个使用同一网线的设备同时发送数据,就会产生冲突
这个范围叫做冲突域
解决冲突域使用CMSS/CD协议
CSMA/CD:载波侦听多路访问/冲突检测
特点:
数据链路层的单位是:帧
以太网数据帧有两种结构,分别是IEEE 802.3
,简称802.3
和Ethernet 2
,简称E2
早期还有Novell(诺威尔软件公司)的IPX/SPX
和IBM(蓝色巨人)的SNA
,现在均已经淘汰
报头长度18B
E2的数据报文结构如上,由 目的MAC[D.MAC]
,源MAC[S.MAC]
,类型[Type]
和帧尾的FCS(帧校验序列)
组成
TYPE: 类型 作用是标识上层(网络层)的协议
FCS: 帧校验序列 通过 CRC[循环冗余校验算法] 判断数据有没有在传输过程种发生错误
IEEE 802.3
报头长度:26B
802.3结构如上所示,802.3将E2中的Type改为Length、LLC、SNAP三个字段
Length: 表示该帧携带了多长的数据,值为数据长度
LLC: 逻辑链路控制
SNAP:子网络接入服务点,用于标识私有路由技术(协议)
总结:E2承载开放协议,802.3既可以承载开放协议,也可以承载私有协议。
Length/Type > 1536(0x0600) E2
Lenght/Type < 1500(0x05DC) 802.3
由于E2结构中Type字段表示上层所用的协议类型,所以值一定大于数据包最大长度,即大于1536
而802.3结构中Length字段表示携带数据的长度,所以值一定小于数据包最大长度,即小于1500
Length和Tpye都在数据帧第12B到14B,所以上层只需要检查第12B到14B的值,就可以知道数据链路层使用的帧结构
在二层网络中(交换机网络),数据均以在广播域中泛洪的方式传输
比如有设备PC1、PC2、PC3、PC4在同一广播域
当PC1发送数据给PC2时,并不是仅仅发送给PC2,而是同时发送给PC2、PC3、PC4,这就是数据泛洪
当设备接收到一个数据包,会先判断是不是发送给自己的,是则接收,否则丢弃
单播
单播是数据帧发送时,目的MAC为目标设备MAC,源MAC为发送者自己
所以有且只有一个发送者和一个接收者,是点到点
其他设备收到数据包,判断目的MAC是不是自己,是则接收,否则丢弃
组播
组播是发送时,源MAC是自己,目的MAC为使用IGMP协议生成的,可以代表组内MAC地址的虚拟MAC
所以有一个发送者和多个接收者,是点到多点
其他设备收到数据包,判断自己的MAC在不在组内,在则接收,否则丢弃
广播
广播报文源MAC是自己,目的MAC全为1:FF-FF-FF-FF-FF-FF
在广播域内的所有设备都直接接收广播报文
MAC地址6B,24字节,前12字节由IEEE通过OUI向厂商发放购买
后12字节由厂商购买后自己决定
由此让每个设备的MAC唯一
第一行主要对报头进行识别:
1、Version: 版本,标识使用IPV4或者IPV6
IPV4 = 0100
IPV6 = 0110
2、Header Length: 报头长度。表示IP报文的报头有多长,(20B-60B)
报头长度计算: 行数 * 4 = 报头长度(一行32bit,4字节) 如:5 * 4 = 20B ; 15 * 4 = 60B
3、DS Field: 区分服务,结合QOS使用,属于IE的知识点
4、Total Length: IP报文总长度(报头+数据)
第二行主要对IP报文分片:
计算机的传输能力是有限的,所以规定每次发送的数据都不能超过最大传输单元,否则就要分成几段(片)发送,这就是IP报文的分片
MTU:最大传输单元,单位为字节
1、identification:标识报文id
分片是,同一个报文分出的所以数据包,这个值都相同
主要用于区分不同报文分片产生的数据包
2、Flags:标识数据是否接收完毕
当Flags为0时,表示这个数据包是某个报文分出的最后一个包,
此时网络层默认该报文全部接收完毕,开始重组分片
3、Fragment Offset:分片偏移。表示分片原本的位置
一个报文的最后一个分片会携带8B的ICMP协议数据
第三行主要标识控制信息:
1、Time to Live:老化时间/生存时间,简称TTL
每个数据包发送时,TTL均为255,每经过一台设备就减一,
当减到1时认为网络不可达,丢弃该数据包
2、portocol:协议,标识上层(传输层)使用的协议
ICMP协议portocol=1;TCP协议值为6;UDP协议值为17;OSPF协议值为89
3、Header Checksum:头部校验和,检查IP数据包报头有没有出错
第四行源IP地址,第五行目的IP地址,各占32bit
最后一行是扩展行,留待之后用,最少0B,最多40B
ip地址是以点分十进制表示的四组二进制数字
192.168.1.1 ==> 1100 0000.1010 1000.0000 0001.0000 0001
192 => 1100 0000
168 => 1010 1000
1 => 0000 0001
所以ip地址最小是0.0.0.0
最大是255.255.255.255
(二进制:1111 1111 = 十进制:255)
IP地址分类
IP地址分为ABCDE五类,在网络中用到的只有ABC三类
A类地址必须是以0开头
0000 0000 . 0000 0000 . 0000 0000 . 0000 0000 最小值:0.0.0.0
0111 1111 . 1111 1111 . 1111 1111 . 1111 1111 最大值:127.255.255.255
B类地址必须以10开头
1000 0000 . 0000 0000 . 0000 0000 . 0000 0000 最小值:128.0.0.0
1011 1111 . 1111 1111 . 1111 1111 . 1111 1111 最大值: 191.255.255.255
C类地址必须以110开头
1100 0000 . 0000 0000 . 0000 0000 . 0000 0000 最小值:192.0.0.0
1101 1111 . 1111 1111 . 1111 1111 . 1111 1111 最大值:223.255.255.255
ABC三类地址是设备上可以配置的单播地址
D类地址必须以1110开头
1110 0000 . 0000 0000 . 0000 0000 . 0000 0000 最小值:224.0.0.0
1110 1111 . 1111 1111 . 1111 1111 . 1111 1111 最大值:239.255.255.255
D类地址用于组播地址,不作为单播地址使用
E类地址必须以1111开头
1111 0000 . 0000 0000 . 0000 0000 . 0000 0000 最小值:240.0.0.0
1111 1111 . 1111 1111 . 1111 1111 . 1111 1111 最大值:255.255.255.255
E类地址用于科研【科研阶段技术不成熟,使用ABC类会对正常网络产生影响,所以科研技术全部使用E类地址】
DE两类地址均不能作为正常IP地址使用
在分为五类的基础上,还有一些特殊地址,这些地址同样不能作为公网通信的IP使用
本地环回地址:
127.0.0.0 —— 127.255.255.255 这个网段(简称127网段)是环回地址
用于检查设备自己的TCP/IP协议栈有没有出现问题
默认地址/缺省地址/所有地址:
这三者都是在说0.0.0.0 这个地址,它可以代表所有IPV4地址
私网地址
IP地址最多只能分配47亿公网IP,不够全球使用,所以每个公网IP下都可以设置大量私网地址用于分配
公网地址需要购买才可以使用,私网地址可以随便设置
我们随身携带的设备一般都是私网地址,并非公网地址
A类IP私网网段:10.0.0.0 —— 10.255.255.255 【简称10网段】
B类IP私网网段:172.16.0.0 —— 172.31.255.255
C类IP私网网段:192.168.0.0 —— 192.168.255.255 【简称192.168网段】
B类私网地址不是一整个172网段属于历史遗留问题,RFC就是这样规定的
子网掩码与IP地址对应
A类地址的默认子网掩码为255.0.0.0 即/8
B类地址的默认子网掩码为255.255.0.0 即 /16
C类地址的默认子网掩码为255.255.255.0 即 /24
一个完整的IP地址分网络位和主机位,子网掩码用于标识网络位
192.168.1.1/24
IP: 1100 0000 . 1010 1000 . 0000 0001 . 0000 0001
掩码:1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
二进制中掩码对应为1的叫做网络位,对应为0的叫做主机位
地址 | 网络位 | 主机位 | 地址范围 | 主机数量 |
---|---|---|---|---|
A | /8=255.0.0.0 | 24 | 1-126 | 16,777,216-2 |
B | /16=255.255.0.0 | 16 | 128-191 | 65,536-2 |
C | /24=255.255.255.0 | 8 | 192-223 | 256-2 |
网络位相同的IP地址属于同一网段
主机位特殊的IP地址
1、主机位全0,表示一个网段的所有地址,一般用来指代网段
2、主机位全1,是广播地址,由主机位全1的IP发送的数据,同网段内所有IP都可以收到
所以主机位全0和全1的地址不能用于设备单播
子网划分(VLSM)
VLSM:可变长子网掩码
顾名思义,子网掩码并非默认不变,而是可以增加或者减少
增减子网掩码位数后网段和主机数目会产生变化,顾称子网划分
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rqk3VZLP-1675766909067)(image-20220804113034513.png)]
如上图,C类网络掩码+1,网络位从原来的24到25,主机位从8到7
网络位变成了x.x.x.0
和x.x.x.1
111 1111 = 127
,所以这个网段被重新划分为两个子网,每个子网有0-127,共128-2个可用地址(主机位全0或全1不可用于单播)
.0网段和.1网段网络位不同,是独立的网段,这就是子网划分
当掩码为32位时,只有网络位没有主机位,此时唯一标识一个主机 192.168.1.1/32
注:增加掩码是划分子网,减少掩码是划分超网
ICMP报文在正常的数据通信中,出现在IP报文的最后一个分片的IP首部之后,是IP层协议,被网络层和传输层使用
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
报文格式:
在ICMP协议中,8位类型Type和8位代码Code,决定ICMP报文类型
在ping测试中,发送方发送type/code= 8/0 (echo request) 回应请求报文
接收方收到后发送type/code=0/0 (echo reply) 回应应答报文
ICMP报文详情不是IA知识,放在之后解释,具体参考ICMP报文详解
传输层主要负责区分设备上的不同应用,主要有TCP协议和UDP协议
网络层确定大体位置,链路层确定设备,但是一个设备中有许多的应用程序。
传输层通过划分端口,确定要将一个数据交给哪个应用。每个端口号只对应一个服务,一个服务可以占用多个端口
端口号总数:0-65535=65536
知名端口 0-1023 = 1024个
几乎每个设备都会用到的服务,会划分给知名端口
IA阶段需要了解的有:
TCP协议下的:
UDP协议下的:
使用到端口的协议都是应用层协议
高随机端口 1024-65535
类似qq,微信这种,常用但并非每个设备都必备的应用,在发送数据时,就会请求一个空闲高位的随机端口
情景举例:
A向B通过qq发送一条消息
A的qq端申请了一个空闲高位端口,以这个端口为源端口,发送数据给B的qq端
【在开发层面,每个应用启动时会监听一到多个固定端口,这个固定端口就是该应用的目的端口
,在关闭应用时,会释放监听的端口】
如果有两个应用目的端口一致,就会发生冲突,应用无法启动,直到一个应用退出
B的目的端口收到A传来的数据后,B的qq端申请一个高位随机端口,
以这个高位端口为源端口,A设备的高位端口为目的端口,发送确认报文并建立通信
通信结束后,A、B设备申请的高位端口被释放
TCP:传输控制协议,面向连接的协议;可靠传输;基于已经建立好的连接;主要用于传输大文件
传输的过程可概况为三次握手和四次挥手
三次握手
第一步:PC1发送SYN,表示我想跟你建立连接
第二步:PC2收到报文后,回复ACK进行确认同时发送SYN表示我也想跟你建立连接
第三步:PC1收到报文后,回复ACK进行确认
四次挥手
第一步:PC1数据发送完毕,发送FIN,表示我想跟你断开连接
第二步:PC2收到报文后,回复ACK进行确认
第三步:PC2数据接收完毕,发送FIN,表示我想跟你断开连接
第四步:PC1收到报文后,回复ACK进行确认
第一行是源端口和目的端口,源端口随机获取,目的端口是服务器或者另一个客户端的固定端口
第二、三行字段保证可靠性传输
Sequence number:序列号
TCP将每个字节的数据都进行了编号,序列号字段的值是该报文第一个字节的编号
Acknowledge number:确认号
当接受方收到报文时,接受方会发送包含确认号的确认报文
如发送方发送序列号为1,长度100的报文,那么接受方的确认报文就是1+100=101,表示101之前的数据收到了,下一个报文应该从101开始
确认号 = 序列号 + 数据长度
第四行字段负责建立连接
Header Length:报文首部长度
Resv. : 保留位,目前无意义
六个标识位
URG:紧急指针是否有效
ACK:确认号是否有效
PSH:提示接收端应用程序立刻从缓冲区读走
RST:要求对方重新建立连接,携带RST的标识的报文称为复位报文段
SYN:请求建立连接,携带SYN标识的报文称为同步报文段
FIN:结束标识&