TCP 和 IP 是互联网的众多通信协议中最为著名的。本章旨在介绍 TCP/IP 的发展历程及其相关协议的概况。OSI参考模型.png

2.1 TCP/IP 出现的背景及其历史

  • 从军用技术的应用谈起
    • 目的:希望在通信传输过程中,即使遭到敌方的攻击和破坏,也能经过迂回线路实现最终通信。
    • 中央集中式网络:当中心节点发生故障时,会影响整个网络的通信传输,容灾性弱
    • 分组网络:由众多迂回线路组成的分布式通信,即使几个节点发生故障,通过迂回线路仍能保持分组数据的传输,容灾性较强
    • 分组交换技术
      • 可以实现容灾性较强的分组网络
      • 可以使多个用户同一时间共享一条通信线路进行通信,从而提高线路的使用效率,也降低搭建线路的成本
  • ARPANET 的诞生
    • 验证了分组交换技术的实用性,充分证明了基于分组交换技术的通信方法的可行性,是全球互联网的鼻祖
  • TCP/IP 的诞生
  • UNIX 系统的普及与互联网的扩张
    • BSD UNIX 实现了 TCP/IP 协议
    • 通过 TCP/IP 构建网络盛行。基于 TCP/IP 形成的世界性范围网络——互联网诞生
  • 商用互联网服务的启蒙
    • 互联网作为一种商用服务迅速发展

2.2 TCP/IP 的标准化

20世纪90年代,ISO 开展 OSI 协议的标准化进程。但实际上OSI 协议并未得到普及,而是 TCP/IP 协议被得到广泛使用。这正是由于 TCP/IP 的标准化中有其它协议的标准化没有的要求。

  • TCP/IP 的具体含义
    • 有些时候,TCP/IP 指 TCP 和 IP 两种协议
    • 多说情况下,TCP/IP 指利用 IP 进行通信时所必须用到的协议群的统称,也称为网际协议族

image.png

  • TCP/IP 标准化精髓
    • 开放性
    • 实用性(可行性)
  • TCP/IP 规范——RFC
    • RFC 文档纪录了协议规范内容,协议的实现和运用的相关信息,以及实验方面的信息
    • RFC 文档通过编号组织每个协议的标准化请求,每当对 RFC 进行修改都要产生新的 RFC 编号
    • 采用 STD 方式管理编号,STD 用来记载哪个编号制定哪个协议。协议规范内容变化也不改变 STD 编号,但可能导致某个 STD 虾的RFC 编号视情况有所增减
  • TCP/IP 的标准化流程
    • TCP/IP的标准化过程是特殊的,它不是由标准化组织制定为标准之后才开始投入使用,而是在成为标准之前,就被较为充分地试验并得到了较广泛的使用,因而具有很强的实用性
  • RFC 的获取方式

2.3 互联网基础知识

  • 互联网定义:
    • Internet:本意为“网际网”,指将多个网络连接使其构成一个更大的网络
    • The Internet:“互联网”,指由 ARPANET 发展而来、互联全世界的计算机网络
  • 互联网与 TCP/IP 的关系
    • 互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议
  • 互联网的结构
    • 互联网就是众多异构的网络通过 IX (网络交换中心)互连的一个巨型网络
    • 互联网中的每个网络都是由骨干网(backbone)和末端网(stub)组成,每个网络之间通过 NOC (网络操作中心)相连

image.png

  • ISP 和区域网
    • ISP 即互联网服务提供商,连接互联网需要向 ISP或区域网提出申请。公司企业或一般家庭申请入网只要联系 ISP 签约即可
    • 区域网指的是在特定区域内由团体或志愿者所运营的网络,通常价格便宜,但可能连接方式复杂或使用上有限制

2.4 TCP/IP 协议分层模型

  • TCP/IP 与 OSI 参考模型
    • OSI 参考模型注重“通信协议必要的功能是什么”
    • TCP/IP 更强调“在计算机上实现协议应该开发哪些程序”

image.png

  • 硬件(物理层)
  • 网络接口层(数据链路层)
    • 有时也将网络接口层与硬件层合并统称为网络通信层
  • 互联网层(网络层)
    • IP 协议:互联网层使用IP协议,基于IP地址转发分组数据包
      • 须实现 IP 功能的设备:连接互联网的所有主机和路由器
      • IP虽然是分组交换的一种协议,但不具有重发机制,因而是非可靠性传输协议
    • ICMP 协议:IP数据包在发送途中发生异常无法到达对端目的地址时,需要给发送端发送一个发生异常的通知,ICMP就是为这一功能制定的
      • ICMP 有时也被用来诊断网络的健康情况
    • ARP 协议:从分组数据包的 IP 地址中解析出物理地址(MAC 地址)的一种协议
  • 传输层
    • 传输层最主要的功能就是让应用程序之间实现通信,使用端口号辨别应用程序
    • TCP 协议:面向有连接的传输层协议,可以保证两端通信主机之间的通信可达。
      • 优点:能够正确处理在传输过程中丢包、传输乱序等异常情况;还能有效利用带宽,环节网络拥堵
      • 缺点:为了建立与断开连接,有时需要至少 7 次的发包收包,导致网络流量的浪费;此外,为了提高网络利用率,TCP 协议定义了各种复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用
    • UDP 协议:面向无连接的传输层协议
      • 优点:UDP 协议不会关注对端是否真的收到了传输过去的数据,如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,需要在应用程序中实现
      • 适用:常用于分组数据较少或多播、广播通信,以及视频通信等多媒体领域
  • 应用层
    • WWW
      • HTTP 协议:浏览器与服务端之间通信的协议,对应于 OSI 的应用层
      • HTML 协议:传输数据的主要格式,对应于 OSI 的表示层
    • 电子邮件 E-Mail
      • SMTP 协议:发送电子邮件用到的协议
      • MIME 协议:电子邮电的格式,对应于 OSI 的表示层
    • 文件传输 FTP
      • FTP 协议:文件传输使用的协议,传输过程可以选择二进制方式或文本方式
        • FTP 进行文件传输时会建立两个 TCP 连接,分别是发出传输请求时所要用到的控制连接和时间传输数据时所要用到的数据连接
    • 远程登录
      • TELNET 协议
      • SSH 协议
    • 网络管理
      • SNMP 协议:TCP/IP 中进行网络管理的协议,对应于 OSI 的应用层
        • SNMP 代理(agent):使用 SNMP 管理的主机、网桥、路由器等
        • SNMP 管理器(manager):管理终端
      • MIB 协议:在 SNMP 的代理端保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息,可通过 MIB 访问。对应于 OSI 的表示层

2.5 TCP/IP 分层模型与通信示例

  • 数据包首部
    • 每一个分层都会对发送数据附加一个首部,包含该层必要的信息,如发送的目标地址以及协议相关信息
    • 从下一层的角度看,从上层收到的包(包含上层的数据和包首部)都被认为是本层的数据

image.png 第 2 章 TCP/IP 基础知识 - 图6

  • 发送数据包(以发送电子邮件为例讲解 TCP/IP 通信的过程)
    • 应用程序的处理(应用层)
      • 应用层:用户启动应用程序新建邮件并填写信息、发送
      • 表示层:应用程序中进行编码处理
      • 会话层:管理何时建立通信连接、何时发送数据(eg. 一次同时发送多个邮件,点击收信后才一并接收新邮件等)
      • 应用在发送邮件的一刻建立 TCP 连接
    • TCP 模块的处理(传输层)
      • TCP 根据应用(对应于 OSI 的会话层)的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输
      • TCP 首部包含
        • 源端口号和目标端口号:识别发送主机和接收主机上的应用
        • 序号:判断发送的包中哪部分是数据
        • 校验和:判断数据是否被损坏
      • 将附加了 TCP 首部的包再发送给IP
    • IP 模块的处理(网络层)
      • IP 包首部包含接收端和发送端的 IP 地址,以及用于判断是 TCP 还是 UDP 的信息
      • IP 包生成后,参考路由控制表决定接收此 IP 包的路由或主机,将 IP 包发送给这些路由器或主机网络接口的驱动程序,实现真正的发送数据
      • 若尚不知道接收端的 MAC 地址,可以利用 ARP 协议查找,只要知道了对端的 MAC 地址,就可以将 MAC 地址和 IP 地址交给以太网的驱动程序,实现数据传输
    • 网络接口(以太网驱动)的处理(数据链路层)
      • 以太网首部包含接收端和发送端的 MAC 地址,以及标志以太网类型的以太网数据的协议
      • 将以太网数据包通过物理层传输给接收端
      • 在包的最后添加 FCS 来判断数据包是否由于噪声而破坏

image.png

  • 经过数据链路的包
    • 包流动时,从前往后依次被附加了以太网首部、IP包首部、TCP/UDP包首部以及应用自己的包首部和数据,并且在包的最后追加了以太网包尾
    • 每个包首部至少包含两个信息:
      • 发送端和接收端的地址
        • 以太网:MAC地址
        • IP:IP地址
        • TCP/UDP:端口号
        • 应用程序:电子邮件地址信息等地址标识
      • 上一层的协议类型
        • eg. IP 首部包含类型域,用于判断传输层使用的是 TCP 还是 UDP 协议的信息

image.png

  • 接收数据包(接收数据包是发送数据包的逆过程)
    • 网络接口(以太网驱动)的处理(数据链路层)
      • 从以太网包首部找到 MAC 地址,判断是否为自己的包,若不是则丢弃
      • 查找以太网首部包含的类型域,确定数据类型(上层使用的协议类型),如果是 IP 包,则将数据传给处理 IP 的子程序;若类型域包含的是无法识别的协议类型,则丢弃数据
    • IP 模块的处理(网络层)
      • 若包首部的 IP 地址与自己的 IP 地址匹配,则接收数据并查找上层协议,将数据交给对应的协议处理模块
      • 对于有路由器的情况,接收端地址往往不是自己的地址,需要借助路由控制表,调查应该送达的路由器或主机后再转发数据
    • TCP 模块的处理(传输层)
      • 首先计算校验和,判断数据是否被破坏
      • 然后检查是否在按照序号接收数据
      • 最后检查端口号,确定具体的应用程序
      • 数据接收完毕后,接收端发送确认回执给发送端,若回执信息未能道道发送端,发送端会重复发送
      • 数据被完整接收后,传给由端口号识别的应用程序
    • 应用程序的处理(应用层)
      • 接收端应用程序直接接收发送端发送的数据
      • 解析数据获知邮件的收件人地址
        • 若接收端主机没有该收件人的邮件信箱,则给发送端发送“无此收件地址”的报错
        • 否则,收到电子邮件,保存到硬盘,成功保存则返回“处理正常”的回执给发送端,否则返回“处理异常”的回执