1. OSI 模型
OSI 模型: 开放式系统互联参考模型
应用层 :抽象语言-->编码 把人类的语言转换成计算机编码,为应用程序提供网络服务
表示层 :编码--->二进制(0、1) 定义数据格式,对数据加密、解密、压缩、解压缩
会话层 :建立、维持、断开通信双方间的会话,session id:区分同一应用进程间不同的会话.
上三层为应用程序对数据加工处理的阶段; 故统称为应用层;
**传输层:**建立端到端的连接 分段 端口号 TCP/UDP
端口号取值:0-65535(0和65535是系统保留的),1-65534
知名端口号:1-1023--- -特定的协议或者服务
**动态端口号:**1024以上----随机的端口号
HTTP(超级文本传输协议):80----TCP
DHCP(动态主机配置协议):67(服务器)、68(客户端)---UDP
DNS(域名解析系统):53--TCP\UDP
**telnet:**23---TCP
SMTP:(简单邮件传输协议)-----发送端--TCP 25
POP3:(邮局协议)----接收端---TCP 110
分段: 超大数据包在网络中无法与他人共享带宽,将出现带宽抢占,导致数据包损坏,重传,大 大增加网络的延时; 故必须对数据包进行分段;分段时需要受到 MTU 限制
MTU: 最大传输单元,默认 1500;
端口号:16位二进制构成 取值范围 0-65535 其中1-1023 注明端口 静态端口号 1024-65535动态端口 高端口
客户端访问服务端时,客户端随机使用高端口作为源端口号来标记本地的进程;使用注明端 口号作为目标端口号来对应服务;
80 http 443 https 53dns 21 ftp 22 ssh 23 telnet ..... 有兴趣可以去查看端口号对应列表
UDP: 用户数据报文协议 非面向连接的不可靠传输协议仅完成传输的基础工作--- 分段、端口号
TCP : 传输控制协议
面向连接的可靠传输协议--在完成了传输层的基础工作外,还需要保障传输的可靠性;
面向连接:在传输数据前,需要通过三次握手建立端到端的虚链路
可靠传输:传输过程中使用到 4 种可靠传输机制; -- 确认、排序、流控(滑动窗口)、重传
俩本相关的书 《TCP/IP 路由技术》(行业圣经)、《TCP/IP 详解》
TCP三次握手详见:
**网络层:**IP寻址 . 逻辑寻址、提供路由、转发数据 运行的是 互联网协议(internet协议)
IPV4 报头 :标准20字节 可扩展到60字节
数据链路层:介质访问控制---控制物理设备 (核心作用) MAC寻址
数据链路层的核心作用在于控制物理层设备;因为物理设备不能自动工作的;需要程序控制:由于大部分网络环境物理层均使用以太网技术,故数据链路层的思考大多基于以太网的二层封装封装来进行;
以太网二代帧头部:
仅以太网技术在二层使用 MAC 地址进行物理寻址;
**物理层:**传输比特流、传输电信号
2. 网络名词注解:
【1】封装,解封装
封装--- 从高向低层数据加工处理的一个过程;过程中数据包将不断的变大
解封装--- 数据从低层向高层的一个读取过程; 过程中数据包将不断的变小
两个设备正常的通讯,必须已知目标 p 地址; ip 地址的获取方式---1域名 2APP 记录3管理员直接提供
PC ----访问的目标 ip 地址与本地在同一网段
--- ARP 获取对端 mac 地址,获取失败放弃通讯,等待超时
获取成功后正常通讯
交换机-- -- 接收到一段比特流后,先识别成二层数据帧,优先查看数据中的源 mac 地址将其对应的进入接口映射后记录在本地的 MAC 地址表中;再关注数据中的目标 mac 地址,基于本地 mac 表查询,表中存在记录将按照记录单播转发,若没有记录将洪泛该流量;
路由器---- 接收到一段比特流后,先识别成二层数据帧: 查看目标 mac 地址,之后丢弃或解封装;解封装到 3 层后,关注目标 p 地址,查询本地的路由表,若表中存在记录将无条件按照记录重新封装二层后转发; 若没有记录将丢弃该流量;
【2】TCP/IP:
TCP/IP: 协议栈道 是 OSI 模型的前身;也是当下真实运行的模型TCP/IP 与 OSI 模型的区别:
1、层数不同2、两种模型之间的不同点:
TCP/IP支持跨层封装-- 跳层封装 ,而OSI不行;
作用主要在于直连设备间协议,减少层面,加快计算; 非直连间使用的跨层封装协议为CMP. 当跨层后,被跨层面的工作,必须由其他层面临时的来进行;
OSI参考模型的核心思想是分层,而分层的目的就是上层协议在其下层协议提供的服务的基础上提供增值服务。
TCP/IP模型其本身就是先有的协议,后有的模型。TCP/IP协议簇里的协议本身都是相互独立的,每层中的协议可以根据系统的需要进行组合配。
3、TCP/IP的跨层封装
(1)跨层封装的目的 --- 提高封装和解封装的速度,加快传输效率。
(2)跨层封装的形式:
- 跨四层封装 --- 应用层封装后的数据直接封装网络层。(传输层的功能将由网络层代替----协议号代替端口号,将数据填充到IP报头,分片代替分段)
特点:一般用在直连路由设备之间
典型代表:OSPF协议(抓包观察)
正常封装,其上层是TCP或者UDP协议。TCP协议对应的协议号是6,UDP协议对应的协议号是17。但是我们这个协议号的取值范围是0 - 255(8位二进制),剩余的这些协议号都是用来标定跨层封装协议的。比如我们OSPF协议,对应的协议号是89。ICMP协议,对应协议号是1
- 跨三四层封装 --- 应用层封装后的数据直接封装二层。
**特点:**应用在直连交换设备之间
**典型代表:**STP协议(可抓包看)-----生成树协议-----二层环路问题
三四层的工作需要二层完成,以太网Ⅱ帧里类型字段,可以用来区分上层协议,勉强能完成四层工作,但是三层的分片工作并无法完成。这时候我们就需要使用另外一种以太网的帧结构了,802.3帧。
太网Ⅱ帧格式:
**类型:**上层使用的网络层协议类型;
FCS:帧校验序列:差错检测,校验数据的完整性;
【3】IEEE802.3数据链路层分类:
LLC层:(逻辑链路控制子层)负责分片和提供帧类型号(802.2协议实现的),多路复用、流量控制、差错检测
MAC层:(介质访问控制子层)负责正常的MAC地址和前导码的作用
**同步字段(Preamble):**同步发送端和接收端的时钟频率
**帧开始定界符(SOF):**表示帧数据的开始位置
**目标MAC地址字段(Destination Address):**目标主机的MAC地址
**源MAC地址字段(Source Address):**发送数据的主机的MAC地址
**帧长度(Length/Type):**从本字段以后的本数据帧的字节数
**数据字段(Data):**数据区最小46个字节,最大1500个字节。规定一帧数据的最小字节数是为了定时的需要,如果不够这个字节数的数据,则需要填充。
**帧校验字段(FCS):**保证数据帧帧在传输过程中的安全性
【4】访问一个谷歌(百度)服务器的流程?
总结:
1、主机需要一个IP地址才能上网(本场景中通过DHCP服务获取IP地址)
2、首先要得到 www.goole.com( www.baidu.com)的ip地址
3、客户端知道谷歌(百度)的ip地址后,会触发客户端与服务器建立TCP连接(TCP三次握手过程)
4、建立连接后,客户端使用http协议发送数据包给服务器
5、当所有数据都接收完毕后,取消连接(TCP的四次挥手)
【5】DHCP协议回顾:
在华为的设备中一下四个包类型如图,在华三的设备中一下四个包类型全部都是广播包
实例: 设备 00:16:D3:23:68:8A通过DHCP服务获取IP地址:
包格式: 物理层+数据链路层 +网络层+传输层+应用层
DHCP discover包:
物理层+ 目标MAC:FF-FF-FF-FF-FF-FF 源MAC:00:16:D3:23:68:8A
+目标IP:255.255.255.255 源IP:0.0.0.0 + 目标端口:67 源端口:68+应用层+数据
DHCP offer包:
物理层+ 目标MAC:00:16:D3:23:68:8A 源MAC:00:22:6B:45:1F:1B
+目标IP:68.85.2.101 源IP:68.85.2.1 +目标端口:68 源端口:67 +应用层+数据
DHCP request包:
物理层 +目标MAC:00:22:6B:45:1F:1B 源MAC:00:16:D3:23:68:8A
+目标IP:68.85.2.1 源IP:0.0.0.0 +**目标端口:67源端口:68 +**应用层+数据
DHCP Ack包:
物理层+目标:00:16:D3:23:68:8A 源MAC:00:22:6B:45:1F:1B+
目标IP:68.85.2.101 源IP:68.85.2.1 +目标端口:68 源端口:67 +应用层+数据
DHCP租期:
DHCP租期更新:
租期到达50%,如果客户端在线,会向服务器发起租约更新的请求租期到达87.5%,如果客户端在线,会向服务器发起租约更新的请求
DHCP地址释放 (DHCP release) :租约到期,服务器端无响应,客户端会自动停止使用该IP地址;如果客户端不再便用服务酷分配的IP地址,也可以主动向DHCP服务发送DHCP RELEASE (DHCP释放报文) 报文,释放该IP地址
DHCP的8 个报文:
DHCP discover:
DHCP offer:
DHCP request:
DHCP Ack:
DHCP NAK: DHCP响应拒绝报文 ,这是服务器端对客户端的DHCP request报文的响应拒绝,比如:租期到期,客户端不在线。服务器端出现故障,导致其没法分配IP地址,则会给客户端发送一个DHCP NAK报文。
DHCP decline: DHCP拒绝报文 ,当客户端发现服务器端分配给自己的IP地址发生冲突,会给服务器端发送一个DHCP decline报文
DHCP release:DHCP释放报文
DHCP inform: **DHCP通告报文,**客户端已经获取到了IP地址,此时客户端会向服务发送一个DHCP inform报文,向服服器请求IP地址相应的掩码、网关、DNS服务器地址等信息
3. 交换机工作原理:
DHCP的第一个报文通过网线来到了---交换机
工作原理:
交换机收到此广播包后,执行泛洪操作(广播)
- --- 即目标MAC地址为广播地址(全F)的数据帧
- --- 即在本地MAC地址表中没有记录的,目标地址为单播地址的数据帧
- --- 即在本地MAC地址表中有记录的,目标地址为单播地址的数据帧
4. 路由器工作原理:
交换机泛洪后,数据将顺着网线,来到网关---路由器
工作原理:
arp: 将IP地址解析为MAC **原理:**广播请求(arp request)、单播回复(arp reply)
主机A 发出包:目标: C源MAC :A+目标IP :10.2.0.1/16 源IP:10.1.0.1/16+数据
主机B 发出包:目标: B源MAC :D+目标IP :10.2.0.1/16 源IP:10.2.0.2/16+数据
路由器工作原理:收到一个数据包,查表,查找去往目的网络的路由,若表中有记录,则转发,反之丢弃
5. DNS协议简介及相关内容:
(1)域名解析系统:
用于域名和IP地址的相互解析,采用C/S模式,是一个具有树状层次结构的、联机分布式的数据库系统;基于TCP/UDP协议的53号端口
在浏览器的地址栏中输 www.goole.com.( www.baidu.com)-----域名
URL:统一资源定位符
结构:协议+网站的域名信息+WEB服务器文件所在路径
(2)DNS产生背景:
通过IP地址访问目标主机,不便于记忆;
通过容易记忆的域名来标识主机位置;
(3)域名的属性层次化结构:
域名结构:根域、顶级域名、二级域名、三级域名等等
域名的特点:不同等级的域名之间使用点号隔开,级别最低的写在左边,高的在右边;
每一级域名都由字母和数字组成,不区分大小写;
域名的根域用'.'表示,以点号结尾的域名被称为完全合格域名(FQND)
域名结构树:
**根域:**全世界只有十三台根域服务器
顶级域:主机所在的国际/区域,注册人的性质
二级域:注册人自行创建的名称
::::::
主机名:区域内部的主机名称
完全合格域名:www.sina.com.cn. www.baidu.com.
.:根域 com.cn/com :顶级域 sina/baidu :二级域 www:三级域
**注意:**com 和com.cn其实是同一级别的 只不过com是由外国人所创立,com.cn.是有中国所创立的,
(4)域名解析原理
DNS域名解析按照域名空间的分层树状结构自顶至下进行;
DNS域名解析的完整过程:
(5)DNS域名解析的两种工作模式
递归查询:UDP
客户端到本地DNS****服务器之间的查询交互采用递归查询
DNS服务器一般会返回一个确切的查询结果
迭代查询 :TCP(DNS服务器与 DNS服务器之间)
DNS服务器会返回一个已知的其他DNS服务器,由请求者自行查询
一般本地DNS服务器到根域名DNS服务器之间的查询交互采用迭代查询
这里我们回到情景里,看看小明是如何向本地DNS 服务器发起查询操作的