[What]图解TCPIP_TCPIP概览

理解了OSI模型后,再来看TCPIP的总体结构。

OSI_2_tcpip.jpg

tcp/ip 标准化

精髓

tcp/ip的标准化具有两大特点:

  • 开放性:tcpip协议通过邮件组的形式允许任何人进行讨论,而邮件组可以由任何人随时订阅
  • 注重实用性:在某个协议最终详细规范出炉的同时,其中一些协议已在设备中存在

基于以上两点其协议的产生过程与应用是同时进行相互迭代的,这有点类似软件工程中的敏捷开发。

RFC

在指定标准化协议的过程中,这些演进中的标准被列入RFC(Request For Comment)文档。

  • 当协议有扩展,那就需要生成一个全新编号的RFC文档
  • 当协议内容有所修改,那就需要重发一个新的RFC文档,并且老文档作废。

为了避免每次产生新RFC编号的问题,人们也采用STD(standard)方式打包管理RFC编号, 同一个协议内容发生了变化但STD编号不会发生变化。

RFC的具体内容可以在官网查询

流程

tcp_std.jpg

互联网基础知识

定义

互联网(The Internet) : 由ARPANET发展而来、互连全世界的计算机网络。

  • Internet 指网际网,指将小规模范围的网络互连起来。
  • Intranet 指内部网,指将企业内部连接起来形成一个封闭的网络。

互联网与TCP/IP的关系

互联网使用TCP/IP协议栈完成通信。

互联网的结构

互联网中的每个网络都是由骨干网(BackBone)和末端网(Stub)组成的,每个网络之间通过网络操作中心(NOC,Network Operation Center)相连.

  • 企业和一般家庭都是通过向ISP提出申请来获取接入互联网的服务。

tcp/ip分层模型

物理层

tcp/ip中的物理层对应OSI模型中的物理层和数据链路层,此层包括:

  • 用于连接通信设备的物理硬件
  • 用于驱动该物理硬件的底层驱动(此部分位于内核)

网络层

tcp/ip中的网络层与OSI中的网络层一一对应,此层中常见的协议如下:

  • IP : IP协议通过IP地址,数据包可以到达互联网的任何位置。
    • IP不具有重发机制,当分组数据包未能到达对端主机也不会重发,所以其属于非可靠性传输协议。
  • ICMP : ICMP用于当IP数据包没有到达对端主机时,给发送端发送一个异常通知。
    • 所以ICMP可以用来诊断网络的健康状况
  • ARP : 从分组数据包的IP地址中解析出物理地址(MAC)

传输层

tcp/ip中的传输层与OSI中的传输层一一对应,通过端口号来区分不同的进程,此部分一般由操作系统提供,此层常见的协议为:

  • TCP : 面向有连接的传输层协议,保证不丢数据。
    • 但由于其协议复杂,会浪费一部分流量在其协议信息上
  • UDP : 面向无连接的传输层协议,不保证对方一定能收到数据。
    • 但协议简单,网络利用率高,所以多用于音频、视频等领域。

应用层

tcp/ip中的应用层对应OSI模型中的会话层、表示层和应用层,此部分一般是用户根据自身需求而设定应用程序。

  • tcpip架构一般都是CS(client server)模式
  • www : 万维网服务使得用户通过浏览器即可访问丰富信息
    • 浏览器与服务端之间的通信协议是 HTTP(HyperText Transfer Protocol)
      • 属于OSI中的应用层
    • 之间传输的数据格式是HTML(HtperText Markup Language)
      • 属于OSI中的表示层
  • E-Mail
    • 电子邮件的通信协议叫SMTP(Simple Mail Tranfer Protocol)
    • 之间传输数据的格式是MIME
  • FTP(File Transfer Protocol):FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时的控制连接和传输数据的数据连接
  • TELNET & SSH : 远程登录常用的两种协议
  • SNMP(Simple Network Management Protocol) : 通过网络管理网络上的设备
    • 使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent)
    • 管理员操作的设备称为管理器(Manager)
    • 管理器与代理之间的信息通过MIB(Management Information Base)访问,属于OSI的表示层

数据包首部

tcpip_head.jpg
  • 每层都会对所发送的数据附加一个首部以包含该层必要的信息,接收端对应分析该层头以正确取出数据

最终在数据链路层的数据如下所示:

phy_data_brief.jpg
  • 每个协议分层时,都有发送端和接收端信息
    • 应用层是最上层的发件人和收件人
    • 传输层是端口号
    • 网络层是IP地址
    • 物理层是MAC地址
  • 每个分层包首部还有一个识别位,标识上一层协议的种类
    • 应用层标签识别数据类型
    • 传输层端口号识别应用协议类型
    • 网络层协议类型识别传输层协议
    • 物理层以太网类型识别IP/ARP等类型

接收端的逆向处理流程为:

  • 物理层处理
    • 判断物理层包中的MAC地址是否与自己匹配,若不匹配则丢弃数据。
    • 匹配后根据物理包中的以太网类型标记将包中数据传递给IP或ARP等其他协议
  • 网络层处理
    • 分析IP包中的IP地址是否与自己匹配,如果不匹配(比如路由器),则通过路由表转发数据
    • 匹配后根据网络包中协议类型标记来将数据传递给TCP或UDP等其他协议
  • 传输层处理
    • 判断传输层的数据是否被破坏,是否按照序号接收等,再者根据端口号将数据发送给对应的应用程序
    • 数据接收完毕后,接收端需要发送一个“确认回执”给发送端
      • 如果发送端没有收到这个确认,那么发送端将重复发送这个包,这就是传输层的可靠传输性
  • 应用层处理
    • 解析应用包的标识,确定数据类型后显示给用户
    • 如果数据处理出现异常,也会返回异常给发送端的应用层
Last Updated 2018-10-14 日 19:32.
Render by hexo-renderer-org with Emacs 26.1 (Org mode 9.1.14)