閱讀970 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 盤點2012十大信息泄密事件
  下一篇:go linux下使用modprobe命令