ZhouJiatao's Blog

初识TCP/IP

TCP(英文:Transmission Control Protocol, 中文:传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议.
IP(英文:Internet Protocol, 中文:网际协议) 是用于报文交换网络的一种面向数据的协议。
我们可以通俗的理解为:
TCP 负责应用程序之间的通信,IP 负责计算机之间的通信。它们协同工作,发送方遵循 TCP 将应用程序数据分割并装入 IP 包,通过 IP 将包发送至接受者, 接受者遵循 TCP 将接受到的包重新组合。

实际上,我们所说的 TCP/IP 并不只单纯的指 TCP 和 IP 两种协议,而是指一整个以 TCP 和 IP 为核心的网络传输协议家族。

什么是 TCP/IP

实际上是指 互联网协议族(英语:Internet Protocol Suite,缩写IPS),是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。

TCP/IP这名称代表一整套数据通信协议的组合,这套组合得名于其中两项最重要的协议:传输控制协议(TCP)与网际协议(IP)。之所以强调这一点,是为了强调TCP/IP其实还包含TCP和IP之外的其他成员,只不过这两项是其中最具代表性的协议。因此,TCP/IP协议组也被称为互联网协议族(IPS),这两个名称是同义的。”

  • Craig Hunt著《TCP/IP网络管理》第一章〈TCP/IP概论〉

TCP/IP 参考模型

TCP/IP 参考模型是一个抽象的分层模型,该模型依据各协议的功能的不同,将所有的 TCP/IP 系列网络协议分别划分于 4 个层级(layer)中。

1
2
3
4
5
6
7
8
9
10
11
12
13
|-------------------|
| 应用层 |
| application layer | 4
|-------------------|
| 传输层 |
| transport layer | 3
|-------------------|
| 网际层 |
| internet layer | 2
|-------------------|
| 网络接口层 |
| link layer | 1
|-------------------|

各层使用它的直接下层提供的服务去实现自身功能,同时也为它的直接上层提供服务。
因此一种协议总是运行于另一种更为低层的协议之上。比如 应用层的 http(Hypertext Transfer Protocol,超文本传输协议)运行于传输层的 TCP(Transmission Control Protocol, 传输控制协议) 之上。

应用层

应用层是应用程序间通信所使用的层。该层包括应用程序间交换数据所需的协议。

常用的应用层协议有:

  • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
  • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
  • FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
  • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
  • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
  • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
  • NTP(Network Time Protocol,网络时间协议),用于网络同步。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

传输层

传输层的协议能够解决诸如端到端可靠性(“数据是否已经到达目的地?”)和保证数据按照正确的顺序到达这样的问题。它为需要通讯的应用程序打开一条通道。

该层的常见协议有:

  • TCP(Transmission Control Protocol,传输控制协议)
  • UDP(User Datagram Protocol,用户数据包协议)
  • SCTP(Stream Control Transmission Protocol,串流控制传输协议)
  • RTP(Real-time Transport Protocol,实时传输协议)

网际层

网际层负责跨越潜在的多个网络,将数据包送达目标网络。通过互联的网络把信息从源地址传输到目的地址的活动成为路由(routing)。

该层的协议执行两个基本功能:

  • 主机寻址和识别:通过分层IP寻址系统来实现。
  • 分组路由:将分组的数据从源转发到最为靠近目标的下一个路由器,一步步转发,直到将数据传送到目标网络。

该层主要的协议是 IP(网际协议,或称互联网协议,Internet Protocol),IP 是在 TCP/IP 协议中网际层的主要协议,该协议任务仅仅是根据源主机和目的主机的地址传送数据。

网络接口层

网络接口层负责将数据包从源主机的网络层转移到目标主机的网络层。
常见的技术有:以太网、Wi-Fi、MPLS。

封装与拆封

完成一些特定的任务需要各层的协议协同工作,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此这些协议又被称为 TCP/IP 协议栈。
发送数据时需要自上而下,层层封装。接收数据时需要自下而上,使用对等的协议层层拆封。

图片

  • 图片来自 Wikipedia

在发送方(也称为源主机),当应用程序使用TCP或UDP传送用户数据时,用户数据就开始在TCP/IP协议栈自上而下地逐个通过每一层,直到被当做一串比特流送入网络。其中每一层对收到的数据都需要增加一些首部信息,有时还需要增加尾部信息。这个过程为封装
当接收方(也称目标主机)收到一个以太网帧时,数据就开始在协议栈中自下而上传送。各层协议利用报文首部所携带的协议控制信息做相应的处理,然后去掉各层协议数据单元的首部,将拆封的数据交给上层协议。每层协议都要检查协议首部中的协议标识,以确定让哪一个协议接收数据,这个过程称为拆封

附:OSI模型

OSI模型(Open System Interconnection Reference Model,开放式系统互联通信参考模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。
OSI模型有 7 个层级:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|--------------------|
| 应用层 |
| application layer | 7
|--------------------|
| 表示层 |
| presentation layer | 6
|--------------------|
| 会话层 |
| session layer | 5
|--------------------|
| 传输层 |
| transport layer | 4
|--------------------|
| 网络层 |
| network layer | 3
|--------------------|
| 数据链路层 |
| data link layer | 2
|--------------------|
| 物理层 |
| physical layer | 1
|--------------------|

TCP/IP模型 和 OSI模型 都是分层的网络模型,结构非常相似,因此 TCP/IP模型 常被视为简化的七层 OSI模型。
TCP/IP模型 并不能精确地映射到 OSI模型,但通常人们认为:

  1. 应用层对应着OSI的应用层,表示层,会话层;
  2. 传输层对应着OSI的传输层;
  3. 网际层对应着OSI的网络层;
  4. 网络接口层对应着OSI的数据链路层和物理层。

参考链接: