概述#
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、远端端口。


