深入理解 TCP/IP 网络编程
1. IP 主机与 IP 地址
主机是支持 TCP/IP 协议的计算机或设备,每台主机由一个 32 位的 IP 地址来标识。为了方便,32 位 IP 地址通常用点分十进制表示,例如 134.121.64.1。主机也有主机名,如 dns1.eecs.wsu.edu。在实际应用中,应用程序通常使用主机名而非 IP 地址。通过 DNS(域名系统)服务器,我们可以在主机名和 IP 地址之间进行转换。
IP 地址分为两部分:网络 ID 字段和主机 ID 字段。根据划分方式,IP 地址分为 A 到 E 类。例如,B 类 IP 地址的前 16 位是网络 ID(前 2 位为 10),后 16 位是主机 ID。发往某个 IP 地址的数据报文会先发送到具有相同网络 ID 的路由器,然后路由器根据主机 ID 将报文转发到该网络中的特定主机。
每台主机都有一个本地主机名 localhost,默认 IP 地址为 127.0.0.1。localhost 的链路层是一个环回虚拟设备,它会将每个数据包路由回同一台主机。这个特性使得我们可以在不实际连接到互联网的情况下,在同一台计算机上运行 TCP/IP 应用程序。
2. IP 协议
IP 是用于在 IP 主机之间发送和接收数据包的协议。IP 以尽力而为的方式运行,IP 主机只是将数据包发送到接收主机,但不保证数据包能到达目的地,也不保证按顺序到达。这意味着 IP 不是一个可靠的协议,如果需要可靠性,必须在 IP 层之上实现。
3. IP 数据包格式
一个 IP 数据包由 IP 首部、发送方和接收方的 IP 地址以及数据组成。每个 IP 数据包