**
前言
**
本书面向的读者是那些希望自己编写的程序能使用称为套接字(socket)的API进行彼此通信的人。有些读者可能已经非常熟悉套接字了,因为这个模型几乎已经成了网络编程的同义词,但有些读者可能仍需要从头开始学习。本书想达到的目标是向大家提供网络编程指导。这些内容不仅适用于专业人士,也适用于初学者;不仅适用于维护已有代码,也适用于开发新的网络应用程序;此外,还适用于那些只是想了解一下自己系统中网络组件的工作原理的人。
书中的所有示例都是在Unix系统上测试通过的真实的、可运行的代码。但是,考虑到许多非Unix的操作系统也支持套接字API,因而我们选取的示例与所讲述的一般性概念,在很大程度上是与操作系统无关的。几乎每种操作系统都提供了大量的网络应用程序,如网页浏览器、电子邮件客户端、文件共享服务器等。我们按常规的划分方法把这些应用程序分为客户程序和服务器程序,并在书中多次编写了相应的小型示例。
目录
**[第一部分 简介和TCP/IP
第1章 简介
1.1 概述](https://yq.aliyun.com/articles/100451)**
1.2 一个简单的时间获取客户程序
1.3 协议无关性
1.4 错误处理:包裹函数
1.5 一个简单的时间获取服务器程序
1.6 本书中客户/服务器程序示例索引表
1.7 OSI模型
1.8 BSD网络支持历史
1.9 测试用网络及主机
1.10 Unix标准
1.10.1 OSIX的背景
1.10.2 开放团体的背景
1.10.3 标准的统一
1.10.4 因特网工程任务攻坚组
1.11 64位体系结构
1.12 小结
**[第2章 传输层:TCP、UDP和SCTP
2.1 概述](https://yq.aliyun.com/articles/100557)**
2.2 总图
2.3 用户数据报协议(UDP)
2.4 传输控制协议(TCP)
2.5 流控制传输协议(SCTP)
2.6 TCP连接的建立和终止
2.6.1 三路握手
2.6.2 TCP选项
2.6.3 TCP连接终止
2.6.4 TCP状态转换图
2.6.5 观察分组
2.7 TIME_WAIT状态
2.8 SCTP关联的建立和终止
2.8.1 四路握手
2.8.2 关联终止
2.8.3 SCTP状态转换图
2.8.4 观察分组
2.8.5 SCTP选项
2.9 端口号
2.10 TCP端口号与并发服务器
2.11 缓冲区大小及限制
2.11.1 TCP输出
2.11.2 UDP输出
2.11.3 SCTP输出
2.12 标准因特网服务
2.13 常见因特网应用的协议使用
2.14 小结
**[第8章 基本UDP套接字编程
8.1 概述](https://yq.aliyun.com/articles/100641)**
8.2 recvfrom和sendto函数
8.3 UDP回射服务器程序:main函数
8.4 UDP回射服务器程序:dg_echo函数
8.5 UDP回射客户程序:main函数
8.6 UDP回射客户程序:dg_cli函数
8.7 数据报的丢失
8.8 验证接收到的响应
8.9 服务器进程未运行
8.10 UDP程序例子小结
8.11 UDP的connect函数
8.11.1 给一个UDP套接字多次调用connect
8.11.2 性能
8.12 dg_cli函数(修订版)
8.13 UDP缺乏流量控制
8.14 UDP中的外出接口的确定
8.15 使用select函数的TCP和UDP回射服务器程序
8.16 小结