unix network programming
一、發現網絡拓撲的常用方法
1、netstat -n 輸出數值地址,而不需要將其反向解析為名字
-i 輸出所有的網絡接口信息
-r 輸出路由信息,和route的輸出一致
2、ifconfig
輸出信息中的MULTICAST標誌指明該接口所在主機是否支持多播
-a 輸出所有已配置接口的信息
3、找出本地主機中眾多ip地址的一個方法是:ping本地接口的廣播地址
ping -b 廣播地址
二、BSD支持網絡的曆史
openbsd netbsd freebsd
https://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則將返回的秒數轉換為直觀可讀的時間形式
最後更新:2017-04-04 07:03:20