# TCP/IP（二）

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/21351.html | 发布：2023-06-16 | 更新：2023-06-16 | 分类：建站教程

TCP 使用字节流通信，其中 TCP 段中的数据被视为没有记录或字段边界的字节序列。下表描述了 TCP 标头中的关键字段。

 

**TCP 标头中的关键字段**

 

| 田 | 功能 |
|---|---|
| 源端口 | 发送主机的 TCP 端口。 |
| 目标端口 | 目标主机的 TCP 端口。 |
| 序列号 | TCP 段中数据的第一个字节的序列号。 |
| 确认编号 | 发送方希望接下来从连接的另一端接收的字节的序列号。 |
| 窗 | 发送此 TCP 段以存储传入段的主机上 TCP 缓冲区的当前大小。 |
| TCP 校验和 | 验证 TCP 标头和 TCP 数据的位级完整性。 |

 

TCP端口

 

TCP 端口提供用于传送 TCP 段的特定位置。低于 1024 的端口号是众所周知的端口，由互联网号码分配机构 （IANA） 分配。下表列出了一些众所周知的 TCP 端口。

 

**众所周知的 TCP 端口**

 

| TCP 端口号 | 描述 |
|---|---|
| 20 | FTP（数据通道） |
| 21 | FTP（控制通道） |
| 23 | 远程登录 |
| 80 | 用于万维网的 HTTP |
| 139 | 网络BIOS 会话服务 |

 

### TCP/IP 应用程序接口

 

为了使应用程序以标准方式访问核心 TCP/IP 协议提供的服务，Windows Server 2003 等网络操作系统提供了行业标准的应用程序编程接口 （API）。API 是由应用程序代码以编程方式调用以执行网络功能的函数和命令集。例如，连接到网站的 Web 浏览器应用程序需要访问 TCP 的连接建立服务。

 

下图显示了两个常见的 TCP/IP API，Windows 套接字和 NetBIOS，以及它们与核心协议的关系。

 

**用于 TCP/IP 的 API**

 

**windows套接字接口**

 

Windows Sockets API 是 Windows Server 2003 下的标准 API，用于使用 TCP 和 UDP 的应用程序。写入 Windows Sockets API 的应用程序在许多版本的 TCP/IP 上运行。TCP/IP 实用程序和 SNMP 服务是写入 Windows 套接字接口的应用程序示例。

 

Windows 套接字提供的服务允许应用程序绑定到主机上的特定端口和 IP 地址、启动和接受连接、发送和接收数据以及关闭连接。有两种类型的套接字：

 
 
- 流套接字使用 TCP 提供双向、可靠、有序且不重复的数据流。 
- 数据报套接字使用 UDP 提供单向或双向数据流。 

 

套接字由主机上的协议和地址定义。地址的格式特定于每个协议。在 TCP/IP 中，地址是 IP 地址和端口的组合。两个套接字（连接两端各一个）形成双向通信路径。

 

为了进行通信，应用程序指定协议、目标主机的 IP 地址和目标应用程序的端口。连接应用程序后，可以发送和接收信息。

 

**网络简介接口**

 

NetBIOS 允许应用程序通过网络进行通信。NetBIOS 定义了两个实体：会话级接口和会话管理和数据传输协议。

 

NetBIOS 接口是用户应用程序向底层网络协议软件提交网络输入/输出 （I/O） 和控制指令的标准 API。使用 NetBIOS 接口 API 进行网络通信的应用程序可以在支持 NetBIOS 接口的任何协议软件上运行。

 

NetBIOS 还定义了一个在会话/传输级别运行的协议。这是由底层协议软件（如NetBIOS FramesProtocol NBFP——NetBEUI或NetBIOS over TCP/IP（NetBT）的一个组件）实现的，该软件执行适应NetBIOS接口命令集所需的网络I / O。基于 TCP/IP 的 NetBIOS 在 RFC 1001 和 1002 中定义。默认情况下启用 NetBT，但 Windows Server 2003 允许您为不包含基于 NetBIOS 的网络客户端或应用程序的环境禁用 NetBT。

 

NetBIOS 为 NetBIOS 名称管理、NetBIOS 数据报和 NetBIOS 会话提供命令和支持。

  

**网络 BIOS 名称管理**

 

NetBIOS 名称管理服务提供以下功能：

 
 
- **名称注册和发布**。当 TCP/IP 主机初始化时，它通过将 NetBIOS 名称注册请求广播或定向到 NetBIOS 名称服务器（如 WINS 服务器）来注册其 NetBIOS 名称。如果另一台主机注册了相同的 NetBIOS 名称，则该主机或 NetBIOS 名称服务器将以否定名称注册响应进行响应。因此，启动主机会收到初始化错误。当主机上的工作站服务停止时，当其他人尝试使用该名称时，主机将停止广播负名称注册响应，并将名称释放发送到 NetBIOS 名称服务器。据说 NetBIOS 名称已发布并可供另一台主机使用。 
- **名称解析**。当一个 NetBIOS 应用程序想要与另一个 NetBIOS 应用程序通信时，必须解析 NetBIOS 应用程序的 IP 地址。NetBT 通过在本地网络上广播 NetBIOS 名称查询或将 NetBIOS 名称查询发送到 NetBIOS 名称服务器来执行此功能。 

 

NetBIOS 名称服务使用 UDP 端口 137。

  

网络BIOS 数据报

 

NetBIOS 数据报服务提供无连接、无序和不可靠的数据报。数据报可以定向到特定的NetBIOS名称或广播到一组名称。传递是不可靠的，因为只有登录到网络的用户才能收到消息。数据报服务可以启动和接收广播消息和定向消息。NetBIOS 数据报服务使用 UDP 端口 138。

 

网络BIOS 会话

 

NetBIOS 会话服务提供面向连接、按顺序排列且可靠的 NetBIOS 消息的传递。NetBIOS 会话使用 TCP 连接并提供会话建立、保持连接和终止。NetBIOS 会话服务允许使用 TCP 端口 139 在两个方向上并发数据传输。

 

## IPv4 寻址

 

对于 IP 版本 4，每个 TCP/IP 主机都由一个逻辑 IP 地址标识。IP 地址是网络层地址，不依赖于数据链路层地址（例如网络适配器的 MAC 地址）。使用 TCP/IP 进行通信的每个主机和网络组件都需要唯一的 IP 地址，可以手动分配，也可以使用动态主机配置协议 （DHCP） 进行分配。

 

IP 地址标识系统上的系统位置，就像街道地址标识城市街区上的房屋一样。正如街道地址必须标识唯一的住所一样，IP 地址对于互联网络必须是全局唯一的，并且具有统一的格式。

 

每个 IP 地址都包含一个网络 ID 和一个主机 ID。

 
 
- 网络 ID（也称为网络地址）标识位于由 IP 路由器绑定的同一物理网络上的系统。同一物理网络上的所有系统必须具有相同的网络 ID。网络 ID 对于互联网络必须是唯一的。 
- 主机 ID（也称为主机地址）标识网络中的工作站、服务器、路由器或其他 TCP/IP 主机。主机地址对于网络 ID 必须是唯一的。 

 

### IPv4 地址语法

 

IP 地址由 32 位组成。标准做法是将 IPv4 地址的 32 位划分为四个称为*八位字节*的 2 位字段，而不是使用二进制表示法 （Base32） 一次表示 4 位。每个八位字节都转换为 8–10 之间的十进制数（以 0 为基数），并用句点（点）分隔。这种格式称为*点分十进制表示法*。下表提供了二进制和点分十进制格式的 IP 地址示例。

 

**二进制和点分十进制格式的 IP 地址**

 

| 二进制格式 | 点分十进制表示法 |
|---|---|
|  |  |

 

例如，4的 IPv11000000101010000000001100011000 地址为：

 
 
- 分为 8 位块：11000000 10101000 00000011 00011000。 
- 每个块转换为十进制：192 168 3 24 
- 相邻的八位字节由句点分隔：192.168.3.24。 

 

*表示法 w.x.y.z* 用于指代通用 IP 地址，如下图所示。

 

### IPv4 地址的类型

 

互联网标准定义了以下类型的 IPv4 地址：

 
 
- *单播*。分配给位于网络上特定子网上的单个网络接口，用于一对一通信。 
- *多播*。分配给位于网络上各个子网上的一个或多个网络接口，用于一对多通信。 
- *广播*。分配给位于网络上子网上的所有网络接口，用于子网上的每个人之间的通信。 

 

以下各节详细介绍了这些类型的地址。

 

IPv4 单播地址

 

IPv4 单播地址标识接口在网络上的位置，其方式与街道地址标识城市街区上的房屋的方式相同。正如街道地址必须标识唯一的住宅一样，IPv4 单播地址对于网络必须是全局唯一的，并且具有统一的格式。

 

每个 IPv4 单播地址都包含一个网络 ID 和一个主机 ID。

 
 
- 网络 ID（也称为网络地址）是 IPv4 单播地址的固定部分，用于标识位于与 IPv4 路由器边界相同的物理或逻辑网段上的接口集。TCP/IP 网络上的网段也称为子网。同一物理或逻辑子网上的所有系统必须使用相同的网络 ID，并且该网络 ID 对于整个 TCP/IP 网络必须是唯一的。 
- 主机 ID（也称为主机地址）是 IPv4 单播地址的可变部分，用于标识子网上网络节点的接口。主机 ID 对于网络 ID 必须是唯一的。 

 

如果网络 ID 对于 TCP/IP 网络是唯一的，并且主机 ID 对于网络 ID 是唯一的，则由网络 ID 和主机 ID 组成的整个 IPv4 单播地址对于整个 TCP/IP 网络都是唯一的。

 

**IPv4 组播地址**

 

IPv4 组播地址用于单数据包一对多传送。在启用了 IPv4 组播的 Intranet 上，寻址到 IPv4 组播地址的 IPv4 数据包由路由器转发到有主机侦听发送到 IPv4 组播地址的流量的子网。IPv4 组播为多种类型的通信提供高效的一对多传送服务。

 

IPv4 组播地址由 D 类因特网地址类定义：224.0.0.0/4。IPv4 组播地址的范围从 224.0.0.0 到 239.255.255.255。4.224.0.0/0 地址前缀（24.224.0.0 到 0.224.0.0）的 IPv255 组播地址保留用于本地子网组播流量。

 

**IPv4 广播地址**

 

IPv4 使用一组广播地址在子网传送服务上提供一对所有人。发送到 IPv4 广播地址的数据包由子网上的所有接口处理。以下是不同类型的 IPv4 广播地址：

 
 
- **网络广播**。通过将类地址前缀的所有主机位设置为 1 而形成。类网络 ID 131.107.0.0/16 的网络广播地址示例为 131.107.255.255。网络广播用于将数据包发送到有类网络的所有接口。IPv4 路由器不转发网络广播数据包。 
- **子网广播**。通过将无类别地址前缀的所有主机位设置为 1 而形成。无类别网络 ID 131.107.26.0/24 的网络广播地址示例为 131.107.26.255。子网广播用于将数据包发送到无类别网络的所有主机。IPv4 路由器不转发子网广播数据包。对于类地址前缀，没有子网广播地址，只有网络广播地址。对于无类别地址前缀，没有网络广播地址，只有子网广播地址。 
- **全子网定向广播。**通过将所有原始有类网络 ID 主机位设置为 1 作为无类别地址前缀而形成。将寻址到全子网定向广播的数据包定义为到达基于子网类的网络 ID 的所有子网上的所有主机。子网网络 ID 131.107.26.0/24 的全子网定向广播地址示例是 131.107.255.255。全子网定向广播是原始有类网络 ID 的网络广播地址。IPv4 路由器可以转发所有子网定向广播数据包，但是 RFC 1812 中不推荐使用全子网定向广播地址。 
- **有限播出。**通过将 IPv32 地址的所有 4 位设置为 1 （255.255.255.255） 而形成。当本地网络 ID 未知时，受限广播地址用于本地子网上的一对一传送。IPv4 节点通常仅在自动配置过程（如引导协议 （BOOTP） 或 DHCP）期间使用有限的广播地址。例如，对于 DHCP，DHCP 客户端必须对发送的所有流量使用有限的广播地址，直到 DHCP 服务器确认使用了提供的 IPv4 地址配置。IPv4 路由器不转发有限的广播数据包。 

 

### 互联网地址类

 

互联网社区最初定义了地址类，以适应不同类型的地址和不同大小的网络。地址类定义哪些位用于网络 ID，哪些位用于主机 ID。它还定义了可能的网络数和每个网络的主机数。在五个地址类别中，为 IPv4 单播地址定义了 A、B 和 C 类地址。D类地址定义为IPv4组播地址，E类地址定义为实验用途。

 

A类

 

A 类网络 ID 分配给具有大量主机的网络。A 类地址中的高阶位始终设置为零，这使得所有 A 类网络和地址的地址前缀为 0.0.0.0/1（或 0.0.0.0、128.0.0.0）。接下来的七位（完成第一个八位字节）用于枚举 A 类网络 ID。因此，A 类网络 ID 的地址前缀具有 8 位前缀长度（/8 或 255.0.0.0）。其余 24 位（最后三个八位字节）用于主机 ID。地址前缀 0.0.0.0/0（或 0.0.0.0、0.0.0.0）是保留的网络 ID，127.0.0.0/8（或 127.0.0.0、255.0.0.0）是为环回地址保留的。在总共 128 个可能的 A 类网络中，有 126 个网络，每个网络有 16，777，214 个主机。

 

**注意**

 
 
- 保留全零和全一主机 ID 
- 枚举给定网络 ID 的主机 ID 时，将保留主机 ID 中的所有位设置为 0（全零主机 ID）和主机 ID 中的所有位设置为 1（全主机 ID）的两个主机 ID，不能分配给网络节点接口。因此，在上述计算中，A 类主机 ID 有 24 位，可能的主机 ID 总数为 16，777，216 （224）。减去两个预留主机 ID 时，可用主机 ID 总数为 16，777，214。 

 

下图说明了 A 类地址的结构。

 

B类

 

B 类网络 ID 分配给大中型网络。B 类地址中的两个高阶位始终设置为 10，这使得所有 B 类网络和地址的地址前缀为 128.0.0.0/2（或 128.0.0.0、192.0.0.0）。接下来的 14 位（完成前两个八位组）用于枚举 B 类网络 ID。因此，B 类网络 ID 的地址前缀具有 16 位前缀长度（/16 或 255.255.0.0）。其余 16 位（最后两个八位字节）用于主机 ID。使用 14 位表示 B 类网络 ID，16 位表示主机 ID，这允许 16，384 个网络和每个网络 65，534 个主机。

 

下图说明了 B 类地址的结构。

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
