OSI模型各层详解

1. OSI概述

1.1 模拟器说明

1)模拟器的作用

搭建实验环境进行测试。

2)模拟器的类型

  • PT:一般是学校中使用,命令不完整,且不能抓包
  • GNS3:思科(CCNA,CCNP),命令行比较完整,可以抓包分析(运行IOS)
  • EVE:思科(CCIE)
  • ENSP:华为

1.2 集线器和交换机

1)集线器(HUB)

只是简单的将多个计算机串联起来(HUB带电源供电,以放大电信号)。HUB是物理层设备。

和HUB相连的所有主机都在一个冲突域内,所以同一时间只能有一个主机发送报文,而其他所有主机都只能接受。即某个时段,HUB接口中,只能有一个用户建立数据链路和目的端进行通信,而其他端口只能处于监听状态。

CSMA/CD:载波侦听多路访问/冲突检测 协议:是广播型信道中采用的一种随机访问技术的竞争型访问方法,是一种退让机制。

HUB集线器采用是是半双工通信机制。

2)交换机(Switch)

Switch和主机相连的每个接口都会把电信号(高低电频)转换为数字信号(100101010)。

交换机是拥有CPU、内存、缓存以及一系列芯片的,可以边缓存边转发,所以可以对从接口传入过来的数据进行处理。

Switch的每一个接口是一个冲突域,所以和交换机相连的所有主机都可以同时发送报文。

网桥:PC1  --> (电信号转换为数字信号) 网桥 (数字信号转换为电信号) --> PC2  (网桥还会对接收的信息进行纠错)

1.3 OSI七层模型概述

1)OSI七层&TCP/IP五层

  • OSI七层:
    • 应用层:文件、打印、消息、数据库和应用程序服务
    • 表示层:数据加密、压缩和转换服务
    • 会话层:对话控制
    • 传输层:端到端连接
    • 网络层:路由选择
    • 数据链路层:成帧
    • 物理层:物理拓扑
  • TCP/IP五层图示:(TCP/IP四层是将数据链路层和物理层合并成了网络接口层)

   

 

 

 

 

 

 

2)对OSI七层各个层次的解释

  • 第七层:应用层
    • QQ、搜狗、思维导图等应用软件
  • 第六层:表示层
    • 转码的过程、压缩、应用软件之间的数据交互
  • 第五层:会话层
    • 迅雷下载、限速
    • 应用层:数据 = PDU
  • 第四层:传输层
    • TCP、UDP
    • TCP + 数据 = 段(segment)
  • 第三层:网络层
    • 路由、如何到达到对方
    • IP + TCP + 数据 = 包(packet)
  • 第二层:数据链路层
    • MAC地址
    • MAC + IP + TCP + 数据 = 帧(frame)
  • 第一层:物理层
    • 比特(bit)

2. 物理层(传输介质)

2.1 有线介质

2.1.1 双绞线

特点:电传输(线缆+水晶头)

  • 传输距离:100m
  • 传输介质:铜
  • 误码率:线缆传输过程中受到干扰发生错误的比例
  • 绞线的主要目的就是屏蔽信号,所以要绞在一起,绞的越紧抗干扰能力越强;全平的线容易受到干扰。

线缆的部分:

  • 非屏蔽线:
    • CAT5:五类线
    • CAT5E:超五类线
    • CAT6:六类线
    • CAT6E:超六类线
    • 建议使用六类线,部分六类线有屏蔽功能
  • 屏蔽线:(屏蔽线外面有一层铝箔包裹,以屏蔽信号)
    • CAT7:七类线
    • 七类线默认就是屏蔽线,建议在机房环境下使用七类线

水晶头部分:(RJ45水晶头)

  • 线序:线序从左到右

  • 直通线和交叉线:
    • 直通线:568B-568B、568A-568A
    • 交叉线:568B-568A
  • 通断规则:
    • 4芯通:百兆(线序中的第1236通)
    • 8芯全通:千兆(在应急情况下,可以将一根网线分成两个头,第1236和第4578)
  • 设备连线标准:
    • 老设备
      • 交叉线:同接口相连(交换机接口-交换机接口,路由器接口-路由器接口,电脑接口-电脑接口)
      • 直通线:异种接口相连(电脑接口属于路由接口)
    • 现在的设备
      • 直通和交叉随便插

 POE设备:通过双绞线进行供电(类似一台2层或3层的交换机)

  • 作用:供电 + 数据传输
  • 支持:POE交换机
    • 摄像头支持POE供电
    • 无线路由器支持POE供电
  • 图示:

2.1.2 光纤

特点:光传输(玻璃纤维,塑料)

  • 不受电磁信号干扰
  • 传输速率快:
    • 1000M:G
    • 10000M:TEN-G
    • 100000M:E
  • 传输距离大:
    • 多模:2KM
      • 类比于手电筒
    • 单模:42KM
      • 类比于激光
  • 光缆本身不值钱,但是接口比较贵(接口就是一个光模块

2.2 无线介质(WiFi)

1)运营商网络

5G:

  • 高频:波长比较短
  • 干扰源:不容易受到干扰
  • 特点:
    • 价格贵
    • 穿墙能力比较差

2.4G:

  • 低频:波长比较长
  • 干扰源:
    • 电磁炉
    • 蓝牙鼠标
    • 电吹风
  • 特点:穿墙能力比较好

2)无线路由器

  •  把RJ45的有限网络,放出无线的信号。

3. 数据链路层

3.1 数据链路层概述

3.1.1 由来和功能

  • 由来:单纯的数字信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思。
  • 数据链路层的功能:
    • 在数据链路层进行比特转换(电信号 --> 数字信号)
    • 定义了数字信号的分组方式

3.1.2 以太网协议

以太网协议:

  • 由来:早期许多公司都有自己的分组方式,后来形成了统一的标准,即以太网协议(ethernet)
  • 规则:ethernet规定,MTU为1500字节
    • 一组电信号构成一个数据帧
    • 每一数据帧分为:报头head和数据data两部分

数据帧的构成:(head+data)

  • head部分(固定的18个字节)
    • 源地址:6字节
    • 目的地址:6字节
    • 数据类型+FCS(帧检测序列):6字节(2+4)
  • data部分(最短46字节,最长1500字节)
    • 帧的数据长度最小为 46 字节,最大为 1500 字节。
    • 如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)
  • 注意:
    • head+data=(最短64字节,最长1518字节),如果超过最大限制就分片发送。

3.2 数据链路层:MAC子层+LLC子层

MAC Sub-layer(介质访问控制子层)

  • 指定数据如何通过物理线路进行传输,并与物理层通信

LLC Sub-layer(逻辑链路控制子层)

  • 对数据进行识别并纠错、重传(误码率)、协商速率等
  • 若误码率较高,会直接将接口速率降低(如千兆变百兆),若再高,会将接口直接宕掉
  • 全双共和半双共也是LLC子层协商的,正常情况下都是全双工,可以手动调

图示:

 

3.3 交换机与MAC地址

MAC地址组成:12个十六进制数字组成

  • 前6位:厂商编号
  • 后6位:流水线号

MAC地址表:MAC -> 接口

  • 若交换机中的MAC表有目标MAC的记录:直接查表转发
  • 若交换机中的MAC表没有目标MAC的记录:就发送给除了自己的所有接口(广播的方式)
  • MAC地址表如果过大,内存可能会溢出

接口带宽:

  • E:10M/100M
  • F:100M
  • G:1000M
  • Ten-G:10000M

3.4 接口UP的方式(双UP和单UP)

  • 物理层的UP
  • 协议的UP
    • 协议的UP是需要LLC子层来进行协商看能否UP起来的
  • 双UP才能转发数据(接口和协议都UP)

3.5 双工

全双工:

  • 收发能同时进行

半双工:

  • 收发不能同时进行
  • 如HUB集线器

4. 网络层

4.1 网络层概述

1)由来

大网络由一个个小的彼此隔离的局域网组成,以太网包只能在一个局域网内发送。

一个局域网是一个广播域,以太网的广播包只能在一个广播域内发送,跨广播域通信只能通过路由转发。

那么我们便要用一种方法来区分哪些计算机属于同一广播域,如果在同一广播域就采用广播的方式发送,如果不是同一广播域就采用路由的方式发送(向不同的广播域/子网发数据包)。

由此我们便引入一套新的地址来区分不同的广播域/子网,这套地址就叫做网络地址。

2)网络层的作用

  • 网络层也叫Internet层,负责将报文从源端发送到目的端
  • 网络层为网络中的设备提供逻辑地址
  • 网络层负责数据包的寻径和转发

3)协议

  • 路由器:三层设备,识别到IP地址
  • 协议:
    • IP:ipv4、ipv6
    • ICMP:ping、tracert
    • ARP:IP --> MAC(ARP是2层和3层之间的协议)
    • RARP:MAC --> IP
    • IGMP:组播加入协议

4.2 IP包

1)IP包概述

  • 版本:
    • ipv4:普及
    • ipv6:下一代
  • 报文长度
  • 总长度

2)数据包切片

  • 切片大小
  • MTU默认1500字节
    • 如果小包能通过,但是大包通过不了,就要考虑是否是MTU切片的问题了
  • Flag位:
    • 置0时能切片,置1时不能切片
  • ping命令:
    • ping  -l  1440  -f  114.114.114.114
    • -l 指明单个ICMP包大小,-f 设置不能切片

3)生存时间(TTL)

  • TTL(Time To Live):
    • TTL表示数据包在三层设备存活的时间
    • TTL值表示IP包被路由器丢弃之前允许通过的最大网段数量。实际上TTL是IP数据包在网络中可以转发的最大跳数
    • TTL是发送主机设置的,以防止数据包不断在IP网络上循环,转发IP数据包时,要求路由器至少将TTL减小1
    • TTL的最大值是255,TTL的另一个推荐值是64
  • 实现过程:
    • TTL字段由IP数据包的发送者设置,在整个转发路径上,每经过一个路由器,路由器都把该TTL值减1,然后再将IP包转发出去
    • 如果在IP包到达目的IP之前,TTL减少为0,路由器会将丢弃收到的到的TTL=0的IP包,并向IP包的发送者发送ICMP time exceeded消息
    • TTL为0的响应报文,H3C、HUAWEI的设备默认是关闭的,如果需要探测则要将其开启

4.3 ICMP协议

ping和tracert会使用ICMP协议

ICMP的两个重要类型码(icmp-type)

  • 请求码:8
  • 应答码:0

路由跟踪:检测到的路径(三层)

  • tracert  -d  114.114.114.114
C:\Users\24698>tracert  -d 114.114.114.114

通过最多 30 个跃点跟踪到 114.114.114.114 的路由

  1     3 ms     1 ms     1 ms  192.168.1.1
  2    20 ms    30 ms     5 ms  100.97.232.1
  3     9 ms     5 ms     7 ms  111.38.4.157
  4    10 ms    12 ms    11 ms  120.210.231.177
  5    10 ms    13 ms    12 ms  120.193.121.38
  6    11 ms    11 ms    13 ms  114.114.114.114

跟踪完成。

4.4 ARP协议

1)IP地址和MAC地址

  • IP地址:源IP地址 --> 目的IP地址
  • MAC和IP的对应:
    • IP --> MAC:192.168.1.1  ac-f9-70-f8-db-ca   动态

2)ARP广播

  • 访问内部网络中的主机:
    1. ARP广播:通过IP地址获取MAC地址
      • 目的MAC地址:FF:FF:FF:FF:FF:FF
      • 交换机接收到广播包:泛洪 --> 发送给除了接收接口之外的所有接口
    2. 发送目的地址为全F的广播包(呼叫IP为192.168.30.123的主机,把你的MAC地址告诉我)
    3. 目标主机收到后进行响应(123主机收到后,将自己的MAC地址作为响应报文的源MAC地址,对方的MAC作为目标MAC地址,并将对方MAC记入本地ARP表)
    4. 此时双方的ARP表中都有了彼此的MAC和IP对应的记录。以后的通信就可以直接查表发送数据了。
  • 访问外部网络(不是在同一个广播域)
    1. 访问网关:192.168.30.254
      • 获取网关的MAC地址
      • 通过ARP广播:FF:FF:FF:FF:FF:FF
    2. 然后网关对报文进行转发,将其转发到其他网段。

3)ARP绑定

  • 在Linux下:
    • 新建/etc/ip-mac文件,写入IP与MAC的绑定信息
      • 192.168.1.101  ac:f9:70:f8:db:aa
    • 然后手动执行绑定:
      • arp  -f  /etc/ip-mac
  • 在Windows下:
    • 命令行执行:arp  -s  192.168.1.101  ac:f9:70:f8:db:aa

4)ARP攻击(ARP欺骗、中间者攻击)

  • 攻击:网络执行法官、聚生网管、P2P终结者
  • 防御:使用ARP绑定即可杜绝这类攻击

5)ARP协议工作方式详细分析

  • 假设:主机192.168.1.101/24 访问 192.168.1.102/24
  1. 首先通过IP地址和子网掩码来区分出自己所处的子网,然后进行判断:
    • 同一子网:目标主机MAC,目标主机IP
    • 不同子网:网关MAC,目标主机IP
  2. 分析101和102是否处于同一网络
    • 同一网络(在这个案例中两者是同一网络)
    • 不同网络:
      • 先通过ARP获取网关的MAC地址,然后将包发送给网关,再由网关来转发。
  3. 这个包会以广播的方式在发送端所处的局域网内传输,所有的主机接收后拆开包:
    • 若发现目标IP为自己就响应,返回自己的MAC,并在主机的ARP表中记录对方的MAC
    • 若发现目标IP不是自己,则直接将包丢弃

4.5 IP地址

4.5.1 IP基础

基本常识:

  • 网关地址:
    • 家用级别:192.168.1.1
    • 企业级别:192.168.1.254
  • 私网和公网:
    • 私网:可以任意使用,相对可以任意规划
      • A类:10.0.0.0 - 10.255.255.255
      • B类:172.16.0.0 - 172.31.255.255、172.16.0.0/12
      • C类:192.168.0.0 - 192.168.255.255
    • 公网:外网使用,运营商申请(自动分配、非固定或固定IP地址)
      • 114.114.114.144、8.8.8.8等
  • 进制:
    • BIN:二进制
    • OCT:八进制
    • HEX:十六进制
    • DEC:十进制

掩码:

  • 从左往右不能中断:
    • 255.0.0.0                  /8
    • 255.255.0.0              /16
    • 255.255.255.0          /24
    • 255.255.255.255      /32
  • 划分网络部分和主机部分:
    • 192.168.1.1/24
    • 192.168.1.1/16

网段:

  • 同网段:
    • 直接进行访问(必须要在同一个广播域下)
    • 不需要通过中间的网关
  • 不同网段:
    • 发送给网关:同一个广播域(同一个交换机)
    • 需要通过中间的网关
  • 网段:192.168.30.0/24
    • 网络地址:192.168.30.0
      • 网络部分:192.168.30
      • 主机部分为0
    • 掩码:255.255.255.0

专业名词:

  • 现网:现实网络、运行网络

4.5.2 IP地址类型(主类地址,有类地址)

主类地址图示:

单播地址:能够配置使用的,可以一对一进行传递

  • A类:
    • 第一组:0XXX  XXXX
    • 范围:1-126(去掉特殊地址0和127)
    • 默认情况:
      • 主类、有类
      • 掩码:/8
  • B类:
    • 第一组:10XX  XXXX
    • 范围:128-191
    • 默认情况:
      • 主类、有类
      • 掩码:/16
  • C类:
    • 第一组:110X  XXXX
    • 范围:192-223
    • 默认情况:
      • 主类、有类
      • 掩码:/24

组播地址:可以一对多

  • 协议:UDP

特殊地址:特殊用途的

  • 默认路由:0.0.0.0/0
  • 本地环回地址:127.xx.xx.xx(访问这个IP就是访问自己)
  • 网络地址:
    • 比如对于172.16.100.1/16来说,172.16.0.0就是网络地址
    • 网络部分不变,主机部分为0
    • 用途:和掩码配合,标记网段
  • 广播地址:
    • 全局广播地址:(针对的是所有网段)
      • 二层广播地址:FF:FF:FF:FF:FF:FF,交换机接收到二层广播会泛洪(转发给除了自己的所有接口)
      • 三层广播地址:255.255.255.255,三层设备
    • 本地广播地址:(针对特定的网段)
      • 网络部分不变,主机部分为全1的地址,如192.168.100.255

4.5.3 IP地址类型(无类地址)

有类和无类IP地址:

  • 有类:
    • A类:掩码/8
    • B类:掩码/16
    • C类:掩码/24
  • 无类:
    • 掩码/1-32

A类地址:1.0.131.0/24

  • A类的无类地址(1.0.131.0/24)
  • A类的主类:掩码 /8  

无类IP地址:

  • 同网段:
    • 网络地址和掩码一样:一定是在同网段
    • 网络地址和掩码不一样:不一定不在同网段
  • 路由器:具有隔离广播的功能(二层和三层广播)
  • 掩码变长,可用的IP地址就会变少,网段的数量就会变多

特殊网段:

  • 互连网段:/30
    • 可用地址:2^(32-30)-2 = 2
    • 互连地址,给网络设备使用的,如两个路由器相连
  • 逻辑网段:/32
    • loopback口
  • 业务网段:
    • 打印机、服务器、手机

4.5.4 子网的划分

子网划分的好处:

  • 将一个大的广播域划分成几个小的广播域,减少网关设备所承载的负载量
  • 有效的避免IP地址的浪费,是一个大的地址开年更加弹性和更加灵活的进行分配

若不划分子网:

  • 会出现大量的局域网地址,同时向一个网关发送请求,会引起网关设备的负载过高
  • 会引起局域网内的大量广播数据传送,形成广播风暴
  • 会非常浪费地址空间,有可能只有两台主机或一台主机,就要分配一个C类地址

子网划分图示:

 子网数的计算:

  • 某网络中可用的主机地址:
    • 2的N次方-2 (N表示IP地址中主机部分的二进制位数)
    • 如202.96.23.0这个C类地址中有2的8次方个可用主机地址
  • 某网络中的子网数:
    • 2的N次方(N表示子网部分的二进制位数),如上面的子网就有2的3次方个

5. 传输层

5.1 传输层概述

5.1.1 TCP和UDP协议

TCP和UDP图示:

TCP和UDP的应用场景:

  • TCP:可靠、面向连接,有虚拟管道的概念(构建在网络层之上)
    • 公屏讨论区:TCP
    • 收发邮件:TCP
      • 发送邮件:SMTP(简单邮件传输协议),端口:25/tcp
      • 接收邮件:POP3(邮局协议版本3),端口110/tcp
  • UDP:不可靠,但具有及时性
    • 直播语音+视频:UDP

5.1.2 查看应用端口号:(Windows中)

  • 查看IP地址对应的链接
    • netstat  -nat | find  '14.125.177.33'
  • 查看PID对应的端口和地址
    • netstat  -nat | find  '1778'

 5.2 TCP报文首部详解

 5.2.1 TCP首部图示

 5.2.2 TCP报文首部各字段的解释

  • Source Port Number:源端口
    • 之所以占据16个bit位,是因为2的16次方正好可以标识65535个端口号
  • Destination Port Number:目标端口
  • Sequence Number:请求时附带的随机序列号
  • Acknowledgement Number:应答时附带的序列号
    • 在对方请求时附带的序列号的基础上加1
  • Header Length:报文首部的长度
    • 4个bits表示首部最长的长度为2个4次方,也就是可以标识15段,一段为4个字节,则最长长度为60个字节
  • Reserved:报文的标识位,占据6bit,可表示6个flag
    • URG:报文段中发送的数据是否包含紧急数据,值为1时表示有紧急数据(后面的紧急字段只有当URG值为1时才生效)

    • ACK:表示是否前面的确认号字段是否有效,ACK=1,表示有效(TCP规定,连接建立后,ACK必须为1)
    • PSH:告诉对方收到该报文段收是否应该立即把数据推送给上层,如果为1,则表示对方应该立即把数据提交给上层,而不是缓存起来
    • RST:与主机的连接出现了严重错误(如主机奔溃),必须释放连接,然后再重新建立连接(或者说上次发送的数据有问题,主机拒绝响应)
    • SYN:在建立连接时使用,用来同步序号
      • 当SYN为1,ACK为0时,表示这是一个请求连接的报文段
      • 当SYN为1,ACK为1时,表示对方同意建立连接
      • SYN为1,说明这是一个请求建立连接或同意建立连接的报文,只有在前两次握手中SYN才置1
    • FIN:标记数据是否发送完毕,如果FIN=1,将相当于告诉对方,自己的数据已经发送完毕,对方可以释放连接了
  • Windows Size:滑动窗口的大小
    • 用以告知对方自己接受缓冲区的大小,以协商出一个合适的传输速率
  • TCP Checksum:TCP的校验和,提供额外的可靠性
  • Urgent Pointer:标记进制数据在字段中的位置
  • Options:可选部分(这部分的最大长度为40Bytes)
  • Data:数据部分

5.3 TCP的连接和断开(三次握手,四次挥手)

1)图示

2)关于2MSL

在四次挥手的最后阶段,客户端进入TIME_WAIT状态,继续等待2MSL的时间再完全断开连接。

在四次挥手的过程中,哪一方先调用close,哪一方就会在第三次挥手后继续等待2MSL的时间。

为什么要等待2MSL:MSL即为一个数据包在网络上存活的最长时间,即数据包从被发送到被接收所经历的最长时间;2MSL即为在四次挥手的第三次过程中,先发起中断连接的一方将会继续等待2倍MSL的时间后再完全中断tcp链接。等待2倍的MSL时间就是因为防止服务端没有收到最后一次的ACK,即在2MSL的时间内,若服务端没收到最后的ACK,在超过超时时间(MSL)后,服务端会认为客户端没收到第三次挥手中的FIN,这时服务端会再发一份FIN,这时一共经历了2MSL的时间,而客户端此时等待了2MSL的时间,正好可以接收这一次服务端重发的FIN请求,从而有效的保证了所有的请求和回应都会被对方接收。

5.4 TCP FSM(TCP的有限状态机)

TCP的有限状态机(TCP FSM)其实就是TCP的11中状态。

 

 

 

 

 

posted @ 2020-06-13 13:39  Praywu  阅读(2205)  评论(0编辑  收藏  举报