OSI七层模型

OSI七层模型详解:

OSI七层模型简介:

在这里插入图片描述

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

思考:为何要有OSI七层模型:0.设备厂商太多,制定一套全部的厂商遵照的规则。1.将复杂的问题简单化,2.将问题分解,每一层都有处理本身的事,阶段划分。ios


OSI-物理层详解:


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

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

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

  • 以太网的帧格式:
    在这里插入图片描述缓存

  • 物理层封装:网络

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

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

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

OSI-数据链路层详解:


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

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

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

    • MAC子层:

      • 数据帧的封装/解封装,接受与发送
      • aMAC帧识别与寻址
    • LLC子层:

      • 创建面向链接的可靠的数据传输服务
      • 负责向上层提供服务,识别网络层协议,而后对他们进行封装
      • LLC只出如今802.3以太网的格式中,802.3的MAC层没有字段指明上层协议字段,可是指明了数据包长度,因此上层协议须要LLC指明
  • 速率协商:

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

    • 网络层:利用QOS

    • 链路层:

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

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

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

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为目的ip的mac地址,源地址为输出接口的mac地址
    6. 而后检查arp缓存表中是否存在该目的ip的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已超时发送给源,因而源就知道了第一次进过了该设备,因而J将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数据包每次可以传输的最大段数据长度,

  • 若传输层是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三次握手:

在这里插入图片描述

TCP四次挥手:

在这里插入图片描述

  • 三次握手在作什么?协商参数,为后续数据传输和可靠传输提供条件
  • 因为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的协议,创建握手信息,