一、发现网络拓扑的常用方法
1、netstat -n 输出数值地址,而不需要将其反向解析为名字
-i 输出所有的网络接口信息
-r 输出路由信息,和route的输出一致
2、ifconfig
输出信息中的MULTICAST标志指明该接口所在主机是否支持多播
-a 输出所有已配置接口的信息
3、找出本地主机中众多ip地址的一个方法是:ping本地接口的广播地址
ping -b 广播地址
二、BSD支持网络的历史
openbsd netbsd freebsd
http://zh.wikipedia.org/zh-cn/BSD#4.4BSD.E5.8F.8A.E5.85.B6.E5.90.8E.E8.A3.94
三、OSI模型(计算机通信开放系统互连 open system interconnection)
OSI的七层模型为:应用层、表示层、会话层(应用层)、传输层(TCP UDP)、网络层(IPv4 IPv6)、 数据链路层、物理层(设备驱动程序和网络硬件)
需要注意是的是:1500字节以太网的MTU大小
在网络中透过TCP和UDP直接和网络层进行交互是可行的,这是原始套接字(raw socket)
还可以应用层直接和数据链路层的数据帧进行交互
应用层是由用户进程,下面的三层(传输层、网络层、数据链路层)使用内核的机制来进行提供的。
四、书中的两个主要的例子
(1)、时间获取的客户端和服务器端的例子
(2)、回射客户端和服务器的程序的例子
五、获取时间的服务器的程序
(1)、使用安全的函数 snprintf(在字符串结尾处加上一个回车符合换行符) strncat strncpy fgets
(2)、迭代服务器 并发服务器
同时处理多个客户端的并发请求的方法有:
1)、为每个客户创建一个子进程(fork)
2)、为每个客户创建一个子线程
3)、在服务器启动的时候预先fork一定数量的子进程
(3)、unix的守护进程
(4)、其他
time()获取unix纪元以来的秒数 ctime则将返回的秒数转换为直观可读的时间形式