昨天继续看了一会第三章,暂时不够另写一篇。
晚上OS课时顺手翻了一下十二章,发现大部分在假期做过了,于是先把这章小结。
十二章 网络编程
1. 自己动手写一个服务器, http, mail, ftp
2. 每个网络应用都是基于客户端-服务器模型,
这个模型简单的说就是请求事务,服务端处理事务,服务端响应事务,请求端响应事务。
3. 对于主机而言,网络只是一种新的I/O设备.
4. LAN (Local Area Network) 区域网,以太网(Ethernet),
集线器(hub),网桥(bridge),桥接以太网(birdged Ethernet)
路由器(router),internet
5. 互联网思想的精髓在于封装。
6. TCP/IP(Transmission Control Protocal/Internet Protocol 传输控制协议/互联网络协议)
IP协议提供命名方法,使得传输可能,不可靠。
UDP扩展传输协议,使得能在进程间传输,不可靠。
TCP全双工传输协议。可靠(relible)。
7. IP地址和DNS服务器
8. 套接字(socket)和套接字地址(socket address)
9. 套接字接口(socket interface) 是一组用来结合Unix I/O函数创建的网络应用的函数。
大多数现代操作系统都实现它。
10. 一部分的网络编程函数,这里不详细介绍。
11. Web动态内容提供涉及CGI(Common Getaway Interface, 通用网关接口)
大体上服务器收到请求后会fork子进程,设置其环境变量(QUERY_STRING, SERVER_PORT等),
子进程通过Unix dup2将标准输出重定向到和客户端相关联的连接描述符。
CGI处理Content-type和 Content-length,以及终止的空行。
12. 假如你准备写一个服务器,如果是http服务器,可以参考
轻量级 Web 服务器 http://www.ibm.com/developerworks/cn/web/wa-ltwebserv/,
其他资料继续从网上找。
13. 假如你写好了一个轻量级服务器,不要太高兴,可以尝试了解apache源码。
构建一个运行时间很长而而且不崩溃的健壮的web服务器是一件困难的任务。比如处理一些SIGPIPE信号。
14. RFC文档。