unix network programming

一、发现网络拓扑的常用方法

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则将返回的秒数转换为直观可读的时间形式





你可能感兴趣的:(unix network programming)