客户端 - 服务器网络编程模型
每个网络应用都是基于客户端 - 服务器网络编程模型的,采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成的。服务器管理某种资源,并且通过操作这种资源来为客户端提供某种服务。
客户端 - 服务器网络编程模型中基本操作是事务(不是数据库事务,没有数据库事务的任何特性),由图所示四步组成。
重点:客户端和服务器都是进程,而不是常提到的机器或主机
TCP/IP协议和端口
协议主要用来解决不同不兼容技术的网络之间数据传输问题
几乎每个现代计算机系统都支持TCP/IP协议(传输控制协议/互联网络协议)。因特网的客户端和服务器混合使用套接字接口函数和UnixI/O函数来进行酒信,通常套接字函数实现为系统调用,这些系统调用会陷入内核,并调用各种内核模式的TCP/IP 函数。
TCP/IP实际是一个协议族,其中每一个都提供不同的功能。在 TCP/IP 协议栈中,IP 用来表示网络世界的地址。
一个连接可以通过客户端 - 服务器端的 IP 和端口唯一确定,这叫做套接字对。当一个客户端发起连接请求时,客户端的端口是由操作系统内核临时分配的,称为临时端口。服务器端的端口通常是一个众所周知的端口。
计算机的 IP 地址是唯一的,每个连接的端口号是不同的。
全球域名系统
域名(DNS)也记录了网站和 IP 的对应关系。
数据报和字节流
传输层其实是有两种协议的,一种是大家广为熟悉的 TCP, 而另一种就是 UDP。
TCP,又被叫做字节流套接字(Stream Socket),Stream sockets 是可靠的、双向连接的通讯串流。
UDP 也有一个类似的叫法, 数据报套接字(Datagram Socket)。Datagram Sockets 有时称为“无连接的 sockets”(connectionless sockets)。
一般分别以“SOCK_STREAM”与“SOCK_DGRAM”分别来表示 TCP 和 UDP 套接字。
TCP 通过诸如连接管理,拥塞控制,数据流与窗口管理,超时和重传等一系列精巧而详细的设计,提供了高质量的端到端的通信方式。
UDP速读快,向网络中的多个节点同时发送信息时,选择 UDP 更是非常合适的