TCP/IP 协议
TCP/IP (Comer 1988, 2001; RFC1180 1991 )是互联网的基础。TCP代表传输控制协议。 IP代表互联网协议。目前有两个版本的IP,即IPv4和IPv6o IPv4使用32位地址,IPv6则 使用128位地址。本节围绕IPv4进行讨论,它仍然是目前使用最多的IP版本。TCP/IP的 组织结构分为几个层级,通常称为TCP/IP堆栈,图13.1所示为TCP/IP的各个层级以及每 一层级的代表性组件及其功能
主机是支持TCP/IP协议的计算机或设备。
IP地址分为两部分,即NetworkID字段和HostID字段。
IP协议用于在IP主机之间发送/接收数据包,IP协议尽最大努力交付数据包。
IP数据包由IP头、发送方IP地址和接收方IP地址以及数据组成。每个IP数据包的大小最大为64KB
路由器是接收和转发数据包的特殊IP主机。如果有的话, 一个IP数据包可能会经过许多路由器,或者跳跃到达某个目的地。
UDP
UDP是用户数据报协议。
UDP在IP上运行,用于发送/接收数据报。与IP类似,UDP不能保证可靠性,但是快速高效。它可用于可靠性不重要的情况。
ping使用的是UDP协议。
TCP
TCP(传输控制协议)是一种面向连接的协议,用于发送/接收数据流。TCP也可在IP上运行,但它保证了可靠的数据传输。通常,UDP类似于发送邮件的USPS,而TCP类似于电话连接。
网络编程
服务器-客户机计算模型:大多数网络编程任务都基于服务器-客户机计算模型。
套接字:

struct sockaddr_in ( sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr;
);
struct in_addr {
uint32_t s_addr;
在套接字地址结构中,

TCP/IP 网络的 sin_family 始终设置为 AF_INET。
sm_port包含按网络字节顺序排列的端口号。
sin_addr是按网络字节顺序排列的主机IP地址。
Lint套接字(int域,int类型,int协议)

int udp_sock = socket(AF_INET, SOCK_DGRAM, 0);
将会创建一个用于发送/接收UDP数据报的套接字。
int tcp_sock = socket(AF_INET, SOCK_STREAM, 0);
将会创建一个用于发送/接收数据流的面向连接的TCP套接字。