OSI网络模型

OSI七层模型(图中中间列)是一种参考模型,具体实施则是TCP/IP(图中最左列)

应用层

  • 最靠近应用程序的层,由用户使用相应的接口实现自己的服务,传输的是报文
    • 协议:HTTP、FTP、邮件协议SMTP、域名系统DNS、长连接WebSocket、SSH等

表示层

  • 进行数据的表示、安全、压缩,是程序在网络中的翻译官,传输的是报文
  • 可确保一个系统的应用层所发送的信息能被另一个系统的应用层读取
  • 格式:JPEG、ASCII、加密格式等,他们都在这一层进行编码/解码
  • 在表示层,数据将按照网络能理解的方案进行格式化,即管理数据的加密与解密:在发送方的数据发送前进行加密、在接收方的表示层进行解密

会话层

  • 发送方和接收方之间进行通信时创建、维持,之后终止、断开连接的地方(像打电话一样),传输的是报文
  • 对应主机进程,指本地主机与远程主机正在进行的会话
  • 允许发送方和接收方启动或停止请求会话,且当双方发生拥塞时仍能保持对话
  • 功能:
    • 建立通信链接
    • 保持会话过程通信连接的畅通
    • 同步两个节点之间的对话、决定通信是否被中断
    • 通信中断时从何处重新发送
  • 客户通过拨号向ISP(因特网服务提供商)请求连接到因特网时,ISP服务器上的会话层向PC客户机上的会话层进行协商连接
  • 若电话线偶然脱落,会话层将会检测到连接中断,并重新发起连接
  • 会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限
  • 包含一种被称为Checkpoint的机制,以维持可靠对话:它定义一个最接近成功通信的点,再定义一个当发生内容丢失或损坏时需要回滚以便回复丢失或损坏数据的点(断点续传的原理)
  • 会话层就是网络通信的“交通警察”

传输层

  • 定义传输数据的协议端口号,以及进行流控和差错校验
  • 协议:TCP、UDP等
  • 数据包一旦离开网卡即进入网络传输层,传输层会将从下层接收的数据进行分段和传输,到达目的地后再进行重组,常把这一层数据叫做数据段
  • 传输层定义了一些传输数据的协议和端口号
    • TCP:传输控制协议,传输效率低,可靠性强(因为要经历三次握手四次挥手),用于传输可靠性要求高,数据量大的数据
    • UDP:用户数据报协议,用于传输可靠性要求不高,数据量小的数据(因为不经历三次握手四次挥手),常用于游戏、直播
  • 传输协议会同时进行流量控制、或是基于接收方可接收数据的快慢程度规定适当的发送速率
  • 传输层会按照网络能处理的最大尺寸将较长的数据包进行强制分割
    • 例如,以太网无法接收大于1500字节的数据包
    • 发送方节点的传输层会将数据分割成较小的数据片,同时对每一数据片安排一个序列号
    • 数据到达接收方节点的传输层时,就能以正确的顺序重组,该过程称作排序
  • 传输层是OSI模型中最重要的一层

网络层

  • 进行逻辑地址寻址,实现不同网络之间的路径选择等,传输数据包

  • 协议:ICMP、IGMP、IP、ARP、RARP等

  • 在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,Internet的发展使得从世界各站点访问信息的用户量大大增加,网络层正是管理这种连接的层

  • 能控制数据链路层与传输层间的信息转发,建立、维持和终止网络的连接

  • 数据链路层的数据在网络层会被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备

  • 寻址:对于网络层而言,网络地址(例如IP)就是互联网设备的唯一标识,网络层靠它实现相互通信

  • 路由:在同一网络中的内部通信中不需要网络层设备,仅靠数据链路层即可完成相互通信;不同网络间相互通信则必须借助路由器等三层设备

  • 主要功能是将网络地址(例如IP)翻译成对应的物理地址(MAC),并决定如何将数据从发送方路由到接收方

    为了在网络层中区分不同的网段(确定计算机所在的子网络),则需要网络地址,所以每台计算机会存在两个地址;MAC地址是绑定在网卡上的,网络地址则是管理员分配的,两者没有任何关系,只是随机组合在了一起

    • 网络层会通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A到另一个网络节点B的最佳路径

    • 由于网络层处理,并智能指导数据传送,而路由器连接网络各段,所以路由器属于网络层

    • 在网络中,“路由”会基于编址方案、使用模式以及可达性来指导数据的发送

      如果所有使用互联网的用户都处在同一网段中,会产生广播风暴,所以要将用户划分,让他们处于不同的网段中,用户自己在自己的小网段中广播,而互联网就是这无数的子网络构成的巨型网络

  • 网络层用于本地LAN网段之上的计算机系统建立通信

    • 它之所以可以这样做,是因为它有自已的路由地址结构,这种结构与第二层机器地址是分开的、独立的
    • 这种协议称为路由或可路由协议,包括IP、Novell公司的IPX以及AppleTalk协议

IPv4协议的地址已经不够用了,所以现在推广IPv6

数据链路层

  • 进行建立逻辑连接、进行硬件地址寻址、差错校验等

  • 主要功能是考量如何在不可靠的物理线路上进行数据的可靠传递

  • (由底层网络定义协议)将比特组合成字节进而组合成帧,用MAC地址(网卡的唯一标识)访问介质,可以发现错误但不能纠正

  • 有了MAC地址就可以知道谁是接收者、谁是发送者,还知道了数据的内容,并进行了分组

  • 为了保证传输,从网络层接收的数据被分割成特定的可被物理层传输的数据帧

    • 帧是用来移动数据的结构包,不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息
    • 地址确定了帧将发往何处,而纠错和控制信息则确保帧无差错到达
    • 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧
  • 数据链路层在物理层提供比特流服务的基础上,建立相邻节点之间的数据链路,通过差错控制提供数据帧在信道上无差错的传输,并进行各电路上的动作系列

  • 通过广播的方式将数据传播给网络层,在局域网内的所有计算机都能收到消息

  • 会用到物理设备交换机,用跳点的方式进行交互

物理层

  • 直接与物理介质打交道,进行物理连接的建立、维护、断开

  • 主要定义物理设备标准,如网线的接口类型,光纤的接口类型,各种传输介质的传输速率等

    • 物理层的设备:网卡、网线、集线器、中继器、调制解调器
  • 主要作用是传输比特流,将比特(1和0)转化成物理形式(电、光、无线电波)进行传输,到达目的地后再转化为(未组织的)比特

  • 物理层有着两种信道

    • 有线信道

      • 明线:平行架设在电线杆上的架空线路,本身是导电裸线或带绝缘层的导线,虽然它的传输损耗低,但是由于易受天气和环境的影响,对外界噪声干扰比较敏感,已经逐渐被电缆取代

      • 对称电缆:由多对双绞线组成的线缆

      • 同轴电缆:能以低损耗的方式传输模拟信号和数字信号,应用广泛,例如电视广播系统、长途电话传输系统、计算机系统间的短距离跳线、局域网互联等

      • 光纤:光传导工具,由玻璃或塑料制成的纤维,光在这些纤维中以全反射原理传输

    • 无线信道:以辐射无线电波为传输方式,包含地波传输、天波传输、视距传输等,应用如卫星通讯、电台广播

HTTP2

  • HTTP2采用二进制格式而非明文文本格式
  • HTTP2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
  • HTTP2使用报头压缩降低开销
  • HTTP2让服务器可以将响应主动“推送”到客户端缓存中

二进制分帧层

在二进制分帧层上,HTTP2会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码

其中HTTP1.x的首部信息会被封装到Headers帧,而request body则封装到Data帧里面

多路复用

HTTP的持久连接可以有效减少TCP建立连接和断开连接的次数

减少了服务器额外的负担,并提升整体HTTP的请求时间

头部压缩

  • 维护一份相同的静态字典,包含常见的头部名称,以及常见的头部名称和值的组合,取头部信息时通过索引取,比较快
  • 维护一份相同的动态字典,可以动态的添加内容
  • 通过静态Huffman编码对传输的首部字段进行编码