十一章
11.1客户端-服务器编程模型
1.一个应用由一个服务器进程和一个或者多个客户端进程组成
2.客户端-服务型模型中的基本操作是事务
11.2网络
1.客户端和服务器通常运行在不同的主机上,并且通过计算机网络的硬件和软件资源来通信
2.网络是一个按照地理远近组成的层次系统,最底层是LAN,最流行的局域网技术是以太网
3.一个以太网段包括一些电缆+一个叫做集线器的盒子
4.一台主机可以发送一段位,称为帧,到这个网段内任何主机,这个帧包括一些固定数量的头部位,用来标识此帧的源和目的地址以及长度
5.使用一些电缆和网桥,多个以太网段可以连接成较大的局域网,称为桥接以太网,多个不兼容的局域网可以通过叫做路由器的特殊计算机连接起来
6.解决源主机跨过所有这些不兼容的网络发送数据到另一台主机的方法:实现一种协议;这种协议必须具有两种能力:命名机制和传送机制
7.八个步骤P617
11.3全球IP因特网
1.每台因特网主机都运行实现TCP/IP协议,因特网的客户端和服务器混合使用套接字接口函数和unixI/O函数进行通信
2.TCP是建立在IP上的复杂协议,提供了进程间可靠的全双工连接(UDP是不可靠数据包协议)
3.IP地址通常以一种点分十进制表示法来表示
4.Inet_aton,inet_nota函数实现IP地址和点分十进制的转化
5.域名层次树状图P621
6.域名集合和IP地址集合的映射通过DNS维护,因特网通过调用gethostbyname和gethostbyaddr从DNS数据库中检索任意的主机条目
7.每台因特网主机都有本地定义的域名localhost,这个域名总是映射为本地送回地址127.0.0.1
8.映射关系P623
9.因特网上客户端和服务器通过在连接上发送和接收字节流来通信,连接是点对点的,是全双工的,也是可靠的。
11.4套接字接口
1.一个套接字是连接的一个端点,每个套接字都有相应的套接字地址,是由因特网地址和一个16位整数端口组成。当客户端发送一个连接请求时,客户端套接字地址中的端口由内核自动分配,称为临时端口
2.服务器套接字地址的端口通常是某个知名的端口,和这个服务相对应
3.一个连接是由它两端的套接字地址唯一确定的,称为套接字对
4.套接字接口是一组函数,它们和unixI/O函数结合起来,用以创建网络应用
5.套接字就是有一个相应的描述符的打开文件
6.客户端和服务器使用socket函数创建一个套接字描述符
7.客户端通过调用connect函数来建立和服务器的连接
8.Blind函数缟素内核将my_addr中服务器套接字地址和套接字描述符sockfd联系起来
9.Listen函数将sockfd从一个主动套接字转化为一个监听套接字,接收来自客户端的连接请求
10.Accept函数等待来自客户端的连接请求到达listenfd,然后在addr中填写客户端的套接字地址,并返回一个已连接描述符
11.监听描述符和已连接描述符的区别P630
12.简单的echo服务器一次只能处理一个客户端,这种类型的服务器一次一个地在客户端间迭代,称为迭代服务器
11.5web服务器
1.web客户端和服务器之间的交互用的是一个基于文本的应用级协议,叫做HTTP,超文本传输协议
2.Web服务器以两种不同的方式向客户端提供内容:
取一个磁盘文件,并且将它的内容返回给客户端。磁盘文件称为静态内容,而返回文件给客户端的过程叫做服务静态内容
运行一个可执行文件,并将它的输出返回给客户端。动态内容,服务动态内容
3.HTTP事务:请求+响应
4.CGI标准提供了一组规则,管理客户端将程序参数传递给服务器
学习心得:本章知识点和网络安全编程基础类似,易理解