OSI七层

OSI七层模型详解:

OSI七层模型简介:

img

层级 作用
应用层 负责对软件提供接口时程序能使用网络服务
表示层 应用程序和网络之间的翻译官
会话层 负责在网络中的两节点之间建立和维持通信
传输层 建立端到端之间的连接,数据的分段和重组
网络层 将网络地址翻译成对应的mac地址,指导数据包的转发
数据链路层 将网络层接收到的数据包封装为特定的数据帧,使其在不可靠的物理链路上进行可靠的数据传递
物理层

思考:为什么要有OSI七层模型:0.设备厂商太多,制定一套所有的厂商遵守的规则。1.将复杂的问题简单化,2.将问题分解,每一层都有处理自己的事,阶段划分。


OSI-物理层详解:


  • 数据用来描述信息,信号用来传递数据(信号:信息传递的媒介)

  • 为了完成信号的传输,物理层规定了如下特性:

    • 机械特性:指明通信实体间硬件连接接口的机械特点
    • 电气特性:规定了在物理连接上电气的连接及电路的特性
    • 功能特性:指明物理接口各条信号线的用途
    • 规程特性:指明利用接口传输比特流的全过程
  • 物理层设备:网卡,中继器,集线器

  • 以太网的帧格式:

  • img

  • 物理层封装:

    名称 字节 作用
    前导码 7 使目的主机接收器时钟与源主机发送器时钟同步。
    帧启始定界符 1 用于识别帧的起始和结束的一组信号元素
  • 链路层封装:

    名称 字节 作用
    type 2 用于标识上层协议类型
    data 46-1500 规定了最小帧长46字节,目的是为了让自己能够感受到冲突的发生,
    帧校验序列 4 检测接收网卡或接口判断是否发生了错误
    • type:

      协议
      0x0800 IP
      0x0806 ARP
      0x8100 802.1q
    • data:以太网传输是不可靠的,具有重传机制,而触发重传机制的条件就是,在数据没有发完之前,收到了冲突信号,从而触发重传机制,但如果收到冲突信号时,数据已经传递完了,那么就不会进行重传,而以太网链路发送64比特的数据正好可以到达对端,所以规定最小帧长为64,除去其他字节,所以规定最小数据帧长为46.

OSI-数据链路层详解:


  • 以太网:二层封装采用Ethernet II 数据帧的网络,工作在链路层

  • CSMA/CD:带冲突检测的载波监听多路访问。

    • CSMA/CD冲突避免的方法:先听后发,边听边发,随机延迟后重发、
  • 数据链路层分为两个子层:

    • MAC子层:

      • 数据帧的封装/解封装,接收与发送
      • MAC帧识别与寻址
    • LLC子层(802.2):

      • 建立面向连接的可靠的数据传输服务
      • 负责向上层提供服务,识别网络层协议,然后对他们进行封装
      • LLC只出现在802.3以太网的格式中,802.3的MAC层没有字段指明上层协议,但是指明了数据包长度,所以上层协议需要LLC指明
  • 速率协商:

    • 传输层:TCP滑动窗口大小

    • 网络层:利用QOS

    • 链路层:

      • push帧(全双工模式),当传输速率自己已经缓存不了时,模拟一个冲突信号发给对方,让对方稍后再发送

      • 强行冲突(半双工模式),直接发起冲突,让对方不再发送数据

    • 物理层:两端链路自协商速率。

  • MAC地址:

    • 一般来说,MAC地址的组是设备根据收到的数据帧中的源MAC地址自动学习而建立的,
    • 当交换机收到一个数据中,然后对其进行解析,解析出源MAC,目的MAC,和其vlan id,然后查找自己本地的MAC地址表项,如果MAC表项中不存在该表项,设备则将这个新数据帧中的源MAC,接口该数据帧的接口及vlan id 以作为一个新的表项加入MAC地址表中,若MAC地址表中已经存在该MAC地址表项,设备将通过该表项的老化时间,对该表项进行更行,所以设备在收到数据帧时,才会进行MAC地址的学习和刷新,
    • 单播MAC地址:高8位为0
    • 广播MAC地址:全F
    • 组播MAC地址:高8位为1

OSI-网络层详解:


IP地址的定义:


  • ip地址的主要作用:

    • 寻址和路由(前提条件:路由信息)
  • ip路由寻址选择过程:

    1. icmp创建一个请求数据包。ICMP将此包转交给IP
    2. ip协议判断目的ip地址是否处于本地网络,如果是的话,进行二层封装,不是的话,进行三层封装
    3. 三层封装。封装目的ip为请求的ip地址,源ip为自己,然后转交给链路层,进行二层封装。目的mac为下一跳mac地址,源mac为自己。下一跳为出口网关,查找arp表,根据缓存的网关的mac地址进封装,然后转交给物理层,以比特流的形式进行传输给网关
    4. 网关设备收到后,检验数据,然后向移交上层进行解包,解封二层,检查目的mac是否为自己,是自己方可以接收,然后继续移交上层网络层进行解封,检查目的ip,若目的ip为自己,那么就说明这个数据是发给自己的,直接移交上层,若目的ip不是自己,那么就查路由表,看是否存在该路由。存在的话,根据到达目的ip的下一跳的出接口进行转发,
    5. 数据包被传递到下一跳出接口的缓存区,进行重新封装。三层封装不变,二层封装逐层封装,目的mac为下一跳的mac地址,源地址为输出接口的mac地址
    6. 然后检查arp缓存表中是否存在该下一跳的mac地址,没有就发送arp请求,取得该地址,
    7. 将数据包进行帧的封装,然后转交给物理层,以比特流的形式进行传输给接收者,
    8. 接收者收到之后,逐层解包,检查目的mac/目的ip是否为自己,核对正确ip后,交付给ICMP,ICMP会丢弃这个包,并产生一个新的回应。将上述过程重复一遍。
  • ip地址的作用:

    • 在网络中定位某一台主机,

    • 在网络中用于数据的寻址,

    • 网络地址标识一个面,主机地址标识一个点、

  • 数据封装解封装的目的和意义:

    • 使得网络通信变得层次化,模块化。便于排错和管理,
    • 每一层有自己的工作,体现本层的存在的作用。
  • 掩码的作用:

    • 是为了标识网络位和主机位,1。计算网络地址/广播地址和可用ip地址,2.VLSM可变长子网的划分,3.CIDR,无类域间路由(路由汇总)。
    • 组播没有掩码
  • 反掩码:

    • 为了进行匹配,必须由连续的0和连续的1组成。0为精确匹配,1为不匹配
  • 通配符掩码:

    • 跟反掩码所用相同,但是不要求由连续的0和连续的1组成。
  • ip地址为什么要唯一:

    • 为了为唯一标识/区分一台主机,
  • 私有ip局部唯一:

    • LAN 一个物理位上局域网,SITE(站点)具有一定的规模,且提供服务,本质是LAN
  • IP地址寻址:

    • 由路由表进行指导查找转发,

路由表的工作原理:


  • 路由表(RIB)

    • 路由表(RIB)是基于控制平面的,转发表(FIB)是基于转发平面的
    • 根据路由表进行查询,然后根据转发表进行转发,
    • 路由表只存在直连路由和非直连路由
  • 静态路由通过手工配置,然后通过静态路由协议进行查验,然后加入本地路由表。

  • 如何判断路由可不可达,通过下一跳来判断,查找路由表,看到达下一跳的地址是否为自己的直连地址,是的话,通过到达该地址的出接口进行转发,如若不是,通过递归查询,以目的地址为下一跳地址查本地路由表,直到查到到达下一跳地址是自己的直连路由时,然后通过到达该地址的出接口进行转发。那么证明该路由是可达的。

  • 比较路由优劣:

    • 先比较优先级,同一路由协议优先级相同就比较开销,
    • 不同的路由协议优先级相同,但是开销不同,那么先比较开销,若开销相同,那么就比较协议初始优先级。
  • 三层跟二层转发方式之间的关系。

    • 三层广播 --> 二层广播

    • 三层组播 -- > 二层组播

    • 三层单播 -- > 二层单播/组播

  • 动态路由的特征:

    • 自行产生路由,自行更新路由,自行防环。
  • 动态路由分类:

    • 基于算法(链路状态算法,距离矢量算法),应用环境(igp,bgp),特征(单播,组播)

路由环路


  • 环路的产生:

    • 路由器对无法到达的网络路由不予理睬,导致用户的数据包不停在网络上循环发送

    • 数据转发是没法绕过当前路劲。

  • 环路的定义:

    • 二层环:物理环路,因为拓扑不当连接导致的环路

    • 三层环:(逻辑环或物理+逻辑--路由)逻辑环产生的原因是因为路由选路的错误。

  • 为什么二层没有逻辑环路:

    • 交换机的转发原理:从一个接口接收帧,本帧不会从接收端口发送该帧。
  • 为什么三层有逻辑环路:

    • 在路由器上:没有入口的概念,只有出口。且严格根据路由表进行转发。
  • 为什么物理层没有环路:

    • 二层和三层处于转发平面。
  • 避免环路的方式:

    • 主动:各种动态路由协议
    • 被动:TTL值,在已有防环机制的情况下,额外进行避免环路的产生。

IP报文格式


img

报文重要字段 长度 作用
标识 16 数据包离开源主机时,会被分配一个正整数标识,当数据包被分片时,标识会被复制,这样相同的分片也就有相同的标识,这有利于目的主机的重装
标志 3 用于判断是否允许数据进行分片。看DF置位,置位代表不能分片
分段片偏移 12 标识报文在在原始数据包中所处的位置,后续根据这个位置来进行重组。
选项 1-40 可选字段,选项有TLV字段构成,可用于拍错
填充 可变 因为要求optios字段必须为32字节的整数倍,所以用这个来进行填充,

报文分片的原因:


  • 如果IP数据包大于MTU,数据报文就会分片进行传输。

  • IP数据包的组成:IP报头(20)+TCP/UTP头(20)+应用层头+data = 1500

  • MTU:最大数据传输单元,三层接口的运载能力。接口能够处理报文的长度。

报文分片的过程:


  • 假设现有3000字节的数据,MTU值为1000 ,3000>1000 ,所以要进行分片
  • 判断数据的falgs指端中DF是否置位,若不置位,说明可以进行分片。
  • 将数据切割为四段,每一段添加一个ip头部,总共20字节,因为数据原本就是有一个ip头和tcp头,所以只用再添加三个。那么就是60字节
  • 那么数据包的组成应该是这样的:0-99||1000-1999||2000-2999||3000-3059|| 总共被分割成了四个,多出来的60字节,就是多出的三个ip头部。
  • 会跟每个分片的报文打上想相同的标识,用去重组时知道哪些是属于同一报文。来自相同数据包分段它们的标识符是一样的。
  • 还会在每个分片中的片偏移量字段设为这个数据部分在原来数据报中所占的位置,字段的设置为分片数据的起始字节/8的值,比如第一个就是 0/8 第二个就是1000/8,第三个就是2000/8,等等。。,这是因为分段片偏移只占用12字节,所以为了节省空间。
  • 分片后的报文,各自有了ip的头部,所以还是以平常的报文进行转发,

报文重组的过程:


  • 收到分片的数据后,就进行重组,
  • 首先先看数据的标识符,将相同的标识符的数据归纳在一起进行重组,
  • 然后查看数据的分段片偏移字段的值,将值等于0的放在第一位,然后依次按照从小到大的顺序进行排序重组。

ARP协议+ICMP协议:


  • arp :

    • 地址解析,(知道ip,必须要在同一子网,找mac)
    • ip地址冲突检测,免费arp(封装的源目ip地址相同)1S/次,发三次
    • 请求广播,回应单播。
  • RARP:

    • 逆向地址解析:(知道MAC,找IP)
  • IP广播:

    • 全局广播:(目的ip为:255.255.255.255)
    • 本地/定向/网络内广播(主机全1 192.168.1.255/24)
  • mac广播:目的地址为全F

  • ICMP:

    • 工作在网络层,是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文
    • 两个子功能:ping、tracert
    • ping:
      • 为了测试另一条主句是否可达,发送一个icmp回显请求给对方,等待对方回应icmp回显应答。
    • tracert:
      • 基于UDP协议,通过每次发送TTL值为1的消息来跟踪一个消息从一台计算机到另一台计算机所走的路径。
      • 因为ttl是有效的跃点计数,当ttl值为0时,设备将icmp已超时发送给源,于是源就知道了第一次经过了该设备,于是将TTL值累计加1,用于判断到达目的沿途经过了多少台设备。
      • 作用:1.线通性 2.路径跟踪:a.了解数据的走向 b.定位故障点,便于排错

网关的作用:


  • 为什么要配置网关?

    • pc访问同网段和不同网段的方式分不一样,相同网段直接访问,目的ip和mac都是目的主机的

    • 不同网段则不能直接访问,需要让网关设备转发, 所以目的mac必须要封装网关路由器的mac地址

    • 网关mac地址怎么获得,通过配置网关的ip地址进行arp请求获取。

    • mac一定要是网关的mac?因为路由器的工作原理,路由器只接受目的mac为自己的数据,然后解封到网络层才能转发。

OSI-传输层详解:


  1. 传输层的作用:
    • 建立端到端的连接
  • 端到端与点到点的区别:

    • 端到端才能进行访问,点到点只是转发这个数据

    • 四层及以上数据传输是端到端,二层和三层数据是点到点

    • 端到端:数据发送端和数据接收端,(有连接)

    • 点到点:数据转发过程中,从当前节点到另一节点。(无连接)

    • 端到端的建立是建立在点到点的基础之上的,它是由一段一段的点到点组成的。

  • 网络层协议提供不可靠,无连接的和尽力而为的服务,因此,如果对于可靠性要求很高的上层协议,就需要在传输层进行可靠性的保障。

    • 路由器:尽力而为(P-T)
    • 交换机:全力以赴(广播)
  • 可靠/不可靠

    • 可靠:可能会丢,需要确认重传

    • 达到进程高度,

  • 端口号:

    • 1-1024 (给协议预留的)
    • 1025 --- source port 映射到一个内存空间。

TCP数据包分段:

  • 产生的原因:传输的数据 > MSS

  • MSS:TCP数据包每次能够传输的最大段数据长度,(最大分段大小00)

  • 若传输层是TCP协议是不会造成IP分片的,使用UDP协议会造成IP分片

  • TCP主动将数据分成小段交给网络层,最大分段大小比MTU小,所以避免IP进行分片。

  • UDP直接将所有数据移交给网络层,所以会出现IP分片.

通信双方如何协商MSS:

  • MSS是指TCP报文中数据报文的长度,那么它跟MTU的差值就是一个IP头和一个TCP头(20+20=40),所以MSS一定比MTU小40 字节。
  • MSS值只会出现在SYN报文中,只有SYN置位为1时,option在选项中才会存在MSS的值,
  • 这是因为TCP建立连接的时候,双方各会发送一个SYN报文,然后里面携带有自己的MSS值,然后双方进行参数协商,在第二次握手的时候就可以确定TCP的MSS值了,所以就只用存在于SYN报文中。

TCP三次握手:

1557568797978

TCP四次挥手:

img

  • 三次握手在做什么?协商参数,为后续数据传输和可靠传输提供条件
  • 由于TCP连接是全双工的,所以每个方向都要单独进行关闭,发送FIN只意味这单方向的进行关闭,要两边都要发送FIN才行
  • 坚持计时器,重传计时器。
  • 为什么建立协议是三次握手,但是关闭却是四次呢?、
    • 这是因为建立连接时,将SYN,ACK放在一个报文里面使用了,但是关闭的时候,收到对端的FIN之后,只意味着对方单方向的数据传输完了,可能你这边数据话没有传输完,需要把剩余数据传递给对方后,才会进行关闭连接。所以,ACK和FIN是分开的。
  • 为什么不能两次握手建立连接:
    • 可能会导致单方向的连接建立。

TCP协议跟UDP协议的区别:

TCP UDP
面向连接。可靠 无连接,不可靠
保证数据按需发送,按序到达,有确认重传机制 尽力而为,努力交付
需要建立连接,所需资源多 不需要就建立连接,来了数据就直接传递
有流量控制和拥塞控制(滑动窗口) 只管发送,其他什么都不管。
一对一的连接,一对一的通信 一对一,一对多,多对多的通信
面向字节流的服务 面向报文的服务
  • 为什么说TCP是面向字节流?
    • TCP把应用程序看成一个字节流,通过MSS查看自己能通过多少,太多了就进行分段,太少了就进行积累,有足够多的字节后构成报文发送
  • 为什么说UDP是面向报文?
    • 应用层给UDP多长的报文,UDP就照样发送,一次一个。

OSI-应用层详解:

  • 会话的建立,数据的格式,数据的加密,解密,压缩,解压缩。应用程序的通道。
  • 浏览器,http,http,smtp,imap4(收邮件),ftp
  • http是基于TCP的协议,建立握手信息,
posted @ 2020-07-05 23:03  皓先生  阅读(420)  评论(0编辑  收藏  举报