TCP/UDP 协议详细介绍

概述#

IP 地址与域名#

IP 地址是网络中的主机地址,用于两台网络主机能够互相找到彼此,这也是网络通信能够成功进行的基础。IP 地址一般以点分十进制的字符串来表示,如192.168.1.1

我们日常访问的网站,其所在的服务器主机都有唯一的 IP 地址,网络中的主机不计其数,靠记 IP 地址的方式来区分不同的主机显然比较困难,并且同一个网站可能有多个不同的 IP 地址,或者 IP 地址会因为某种原因而更换。

因此,用域名表示网站地址的方式便应运而生,如我们常见的www.baidu.com比 IP 地址更容易被记住。因为实际的网络通信报文中使用的仍然是 IP 地址,所以需要使用域名解析协议去获取域名背后所对应的 IP 地址。

下文的讲解均以 IPv4 协议为基础。

OSI 七层模型#

国际标准化组织(ISO)制定的一个用于计算机或通信系统的标准体系,一般被称为 OSI(Open System Interconnection)七层模型。它为网络通信协议的实现提供了一个标准,通信双方在相同的层使用相同的协议,即可进行通信;就同一台设备而言,下层协议为上层协议提供了调用接口,将上层协议打包为底层协议,最终发送到网络上进行传输。

这七层分别为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

为了简化协议实现或者方便理解,五层模型或者四层模型的概念也诞生了。四层模型一般被提及的比较多,包括:应用层、传输层、网络层、网络接口层。

上文中的 IP 地址则属于网络层。

网络层用于把该主机所有的网络数据转发到网卡,经由物理层电路发送到网络中去。

为了方便阐述,下文将按照四层模型来进行讲解。

传输层协议#

IP 地址解决了网络中两台主机如何能够找到彼此,进而进行报文收发的问题。

试想下,一台主机上可能运行着多个应用程序,执行着不同的网络任务。这时,某台 IP 地址的主机收到了另一台主机的报文,这个报文数据要传递给哪个应用程序呢?

为了解决这个问题,人们基于网络层协议演化出了传输层协议,传输层协议为本地的网络应用分配不同的端口。收到网络层的报文后,根据不同的端口号,将数据递交给不同的应用。

为了应对不同的场景,传输层协议分为 UDP 和 TCP 协议。

UDP 协议#

UDP 协议具有以下特点:

  • 无连接

  • 支持一对一、一对多和多对多通信

  • 不保证可靠交付

  • 全双工通信

  • 面向报文

根据不同的需求,基于 UDP 衍生出了一些应用层协议,不同的应用会默认指定一个端口号。端口号亦可根据实际情况更换。

常见的基于 UDP 的应用协议及端口如下:

熟知端口号 协议 说明
0 -- 保留
7 echo 报文回送服务器
53 nameserver 域名服务器
67 bootps BOOT 或 DHCP 服务器
68 bootpc BOOT 或 DHCP 客户端
69 TFTP 简单文件传输协议
123 NTP 网络时间协议
161 SNMP 简单网络管理协议

TCP 协议#

TCP 协议具有以下特点:

  • 面向连接

  • 每条连接只能有两个端点,即点对点

  • 提供可靠的数据交付

  • 全双工通信

  • 面向字节流

根据不同的需求,基于 TCP 衍生出了一些应用层协议,不同的应用会默认指定一个端口号。端口号亦可根据实际情况更换。

常见的基于 TCP 的应用协议及端口如下:

熟知端口号 协议 说明
0 -- 保留
7 echo 报文回送服务器
20 FTP-DATA 文件传输协议(数据)
21 FTP 文件传输协议
23 Telnet 终端连接
25 SMTP 简单邮件传输协议
53 DNS 域名服务器
80 HTTP HTTP服务器
110 POP3 邮局协议版本3
1080 SOCKS 代理服务器协议

确定TCP连接的五元组:协议类型(TCP)、本地 IP、本地端口、远端 IP、远端端口。