TCP/IP协议族详解(一)

写在最前面:大学时,自己所学的专业就是网络工程,奈何自己对这方面兴趣不大,一心想要开发游戏,所以学的也是乱七八糟,谁曾想,毕业后真的入了游戏这一行,而且还是服务器,网络方便的知识多少还是要掌握一下,遂依照网易云课堂上的教程又重新复习了一遍TCP/IP结构。

本系列文章是教程:TCP、IP协议族详解的学习笔记。

该系列大概分为下面几个部分:

  • 1、TCP/IP协议4层结构以及每层的作用
  • 2、IP协议详解
  • 3、ARP协议和RARP协议详解
  • 4、ICMP协议详解
  • 5、TCP协议详解
  • 6、UDP协议详解

本文主要介绍TCP/IP网络体系四层结构,以及每层的作用。

在介绍TCP/IP四层结构之前,先介绍一下OSI七层参考模型。

1、ISO/OSI

英文全称为Open Systems Interconnection Reference Model(开放式通信系统互联参考模型),它是国际标准化组织ISO(International Organization for Standardization)提出的一个框架,注意的是,OSI只是一个参考模型,现在的厂商并不是完全按照这个标准,而是参考了这个标准,所以才有现在比较常用的TCP/IP四层网络体系结构,它简化了OSI模型。

7层模型的功能

OSI标准分为7层,从下往上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,同时规定了这个7层结构需要遵循的一些准则。见下图: OIS/RM 七层模型

下面介绍下OSI七层模型每层的作用:

  1. 应用层:是应用程序访问网络服务的窗口,提供应用程序运行的环境、负责管理和执行应用程序,它是直接面向应用程序的
  2. 表示层:确定计算机之间交换数据的格式,为数据在传输之前,对加密、解密、压缩、解压缩以及终端数据格式提供一套规则和约定(它不对数据做操作,只是提供一套规则)
  3. 会话层:允许不同计算机上的两个应用程序建立、使用和结束会话,对对话的双方进行资格审查和验证的规则,同时规定发送时的单双工模式,用来使不同应用程序的数据与其他应用程序的数据保持隔离
  4. 传输层:确保报文无差错、有序、不丢失、无重复的传输,它主要负责分割与重组数据、按端口号寻址、连接管理、差错控制和流量控制

    传输层在7层体系中起到了一个承上启下的作用,它相当于一个纽带,连接上面三层(偏软件)与下面三层(偏硬件),它是七层中最重要、最关键的一层。它传输的数据称为数据段(Segment)

  5. 网络层:负责信息寻址(IP协议)和将逻辑地址和名字转换为物理地址(ARP协议),负责建立、保持、终止通过中间设备的连接,同时负责通讯子网内路径选择和拥挤控制,它传输的数据称为数据包(Packet)
  6. 数据链路层:负责从网络层向物理层发送数据帧,它将数据组装成帧,处理数据在传输过程中出现的差错,调节发送速率,它传输的数据称为数据帧(Frame)
  7. 物理层:发送和接收比特流

注意要区别点到点端到端这两个概念:

  • 点到点,是物理层面的概念,比如上图中,两个中间结点就是点到点的连接
  • 端到端,是逻辑层面的概念,可以理解是设备A的某个端口与远程设备B的某个端口的连接

7层模型的使用

加入计算机A通过一个进程向计算机B发送数据,那么发送的数据每经过一层(发送方从上到下),就会在数据的头部加上该层的头部,到达计算机B后,每过一层(从下到上),又减去该层头部,最后计算机B收到A发送的原始数据。

注意:数据链路层,除了会加上头部,还会在数据末尾加上尾部,而其他层,只会加上头部。

OIS数据传输

2、TCP/IP四层结构

因为OSI七层参考模型也有缺点,比如开发成本大、功能重叠,实现复杂等,所以TCP/IP协议体系在OSI的基础上做了一些简化,它分为四层,从上到下分别为:应用层、传输层、网络层、网络接口层(或者叫数据链路层)。 TCP/IP四层模型

它与OSI七层模型的对应关系如下图: TCP/IP四层模型与OSI七层模型对应关系

另外,TCP/IP协议实际上包含了大量的协议和应用,并且由多个独立定义的协议组合在一起,因此说,TCP/IP是一个协议族而不是一种协议。

每一层传输数据格式

TCP/IP协议族主要协议

  • 应用层:各种服务及应用程序通过该层利用网络。常用协议:HTTP(基于TCP)、FTP(文件传输,基于TCP)、SMTP、TELNET(终端仿真,基于TCP)、DNS(域名解析)等。
  • 传输层:确认数据传输及进行纠错处理,常用协议:TCP、UDP。
  • 网络层:负责数据的传输,路径及地址选择。常用协议:IP、ICMP(互联网控制消息协议)、ARP(地址解析协议)、RARP(反向地址解析协议,已不常用)。
  • 网络接口层:是针对不同物理网络的连接形式的协议。例如:Ethernet(以太网,目前最常用的局域网中使用网络接口层协议)、FDDI、ATM、PPP(点对点协议,广域网)。

每层对应的主要协议: 主要的协议

网络接口层

这里顺便介绍一下网络接口层(数据链路层),因为我主要想学习的并非偏硬件层的知识,所以,也不作过多的学习和研究。

在早期,IEEE 802委员会(1980年2月,所以称为802委员会)将局域网的数据链路层拆分了两个子层:

  • MAC子层(Media Access Control),介质访问控制
  • LLC子层(Logical Link Control),逻辑链路控制

现在已经不再使用了,取而代之的是以太网(Ethernet)。

以太网和互联网的区别

以太网是一种局域网,只能连接附近的设备,属于数据链路层,因特网是广域网,而且是一个最大的广域网。因此可以说互联网是包含以太网的。