网络编程
客户端-服务器编程模型
- 每个网络应用都是基于客户端-服务器模型的。
- 客户端-服务器模型中的基本操作是事务。
网络
- 对于主机,网络是一种I/O设备,作为数据源和数据接收方。
- 一个以太网段,包括电缆和集线器;每根电缆都有相同的最大位带宽;集线器不加分辩地将一个端口上收到的每个位复制到其他所有的端口上。因此,每台主机都能看到每个位。
- 使用电缆和网桥,多个以太网段可以连接成较大的局域网,称为桥接以太网。这些电缆的带宽可以是不同的。
- 网络具备两种基本能力:命名机制、传送机制。
全球IP因特网
-
TCP/IP协议(协议族)。
-
因特网的客户端和服务器混合使用套接字接口函数和Unix I/O函数进行通信。
** IP地址**
-
一个IP地址就是一个32位无符号整数。
-
IP地址通常以点分十进制表示法来表示。
因特网域名
- 因特网应用程序通过调用gethostbyname函数和gethostbyaddr函数,从DNS数据库中检索任意的主机条目。
gethostbyname函数:返回和域名name相关的主机条目。
gethostbyaddr函数:返回和IP地址相关联的主机条目。
因特网链接
-
套接字是连接的端点。
-
每个套接字都有相应的套接字地址,由一个因特网地址和一个16位的整数端口组成的,用“地址:端口”来表示。
-
一个连接是由它两端的套接字地址惟一确定的。这对套接字地址叫做套接字对。
套接字接口
- 套接字接口是一组用来结合unit I/O函数创建网络应用的函数。
4.1套接字地址结构 - 从unit内核的角度来看,套接字就是通信的端点;从unix程序的角度来看,套接字就是一个有相应描述符的打开文件。
4.2 函数 -
sockte函数
创建一个套接字描述符。 -
connect函数
建立和服务器的连接。 -
open_clientfd函数
将socket和connect函数包装而成。客户端可以用它来和服务器建立连接。 - bind函数
- listen函数
-
accept函数
均被服务器用于和客户端建立连接。 -
open_listenfd函数
socket、bind和listen函数结合。用于服务器创建一个监听描述符。
Web服务器
Web基础
- 客户端和服务器之间一个交互用的是基于文本的应用级协议——HTTP
- Web服务和常规文件检索服务区别
Web内容可以用一个叫做HTML的语言来编写。
5.2Web内容 - 以两种不同方式向客户端提供内容
服务静态内容
服务动态内容
5.3HTTP事务
- 响应
- HTTP请求(方法:GET POST OPTIONS HEAD PUT DELETE TRACE)
- HTTP响应
5.4服务动态内容 - 客户端如何将程序参数传递给服务器
- 服务器如何将参数传递给子进程
- 服务器如何将其他信息传递给子进程
- 子进程将它的输出发送到那儿