1 /1 9 TCP/IP 通信程序设计 1、实验目的 初步掌握C 语言TCP/IP 通信程序的设计。 2、实验环境 1、Window s 2000/NT/XP操作系统。 2、TCP/IP 协议。 3、编程工具:Microsoft Visual C++ 2005。 3、相关知识 3.1 TCP/IP协议族 表 1 TCP/IP协议族 应用层(FTP, DNS, HTTP, TELNET, SMTP等) TCP UDP ICMP IGMP IP ARP RARP 网络接口层 TCP 具有以下特点: 1、面向连接。端到端的TCP 连接会关注连接的状态,而网络的中间路由器只关心 IP 分组的转发。 2、可靠数据传递。TCP 使用顺序号、采用直接应答方式,并在必要时通过重传来保证发自源端的数据能成功地被传递到目的地。 3、流量控制。接收方向发送方发送一个接收窗口值,告诉发送方接收方能够处理多少数据。在收到接收方发来的应答前,TCP 发送方最多只能发送等于该窗口值的数据量。 4、拥塞控制。用于防止 TCP 发送方发送的信息量超过网络中链路或路由器的最大处理能力。 流量控制和拥塞控制结合起来,使得 TCP 主机能迅速而公平地调整其发送速率, 2 /1 9 以达到与网络及接收方的处理能力相匹配。 3.2 端口与Socket 在进程通信的意义上,网络通信的最终地址不仅网络层提供的 IP 地址,还应包括描述进程的协议端口(protocol port)。若没有端口,传输层就无法知道数据应当交付给应用层的哪个进程。因此,端口标示了应用层的进程。 TCP 和 UDP 分别提供了 216 个不同的端口值。端口分为两类: 1、周知端口(w ell-know port),其值为 0-1023,由 ICANN 负责分配(见 RFC 1700)。其中 TCP 和 UDP 均规定小于 256 的端口作为保留端口。 2、临时端口,也称本地分配。进程需要访问传输服务时,向本地操作系统提出动态申请,操作系统返回一个本地唯一的端口号,进程通过合适的系统调用将自己和相应的端口号联系起来。 Socket 由 4BSD UNIX首先提出,目的是解决网络通信问题。Socket 的英文原义是“插座”,Socket 与电话交换机的插座非常类似,进程通信前,双方各创建一个端点,每一个 Socket 有一个本地唯一的 Socket 号,由操作系统分配。Socket 与 IP地址、IP 地址的关系如图 1 所示。 202.114.22.9 8080202.114.22.98080IP地址端口号Socket 图1 Socket与IP 地址、端口号 由于 TCP 面向连接的特性,如果多台主机或一台主机的多个进程连接同一台服务器,则必须创建多个连接,如图 2...