技术: Linux网络学习参考

以一个 c/c++ 开发者的角度谈一谈网络编程的学习过程以及注意事项.

引子

记录一下我过去学习网络编程的道路(目前还在不断探索中). 相关代码记录(或者一些基础记录), 可以参考的github库

network

正文

网络学习步骤:

有基础的1个月; 没有基础的2.5个月. 深入学习3个月.

(本文建立在你熟悉一门支持网络编程的计算机语言的基础上; 最好对于网络并发多线程; Linux系统编程有一定的了解)

  1. TCPIP模型 (网络的理论基础)
  2. 学习socket api集.
    • 创建 socket bind listen accept
    • 收发 read/recv/recvfrom write/send/sendto
    • 关闭 close shutdown
    • 参数 getsockopt/setsockopt
    • 地址 gethostbyaddr getaddrbyhost,…
      在学习这些api时候,可以先关注在函数功能,参数意义上
  3. 基本的socket编程模型(socket api的理论实践)
    • tcp socket的语法如下: socket(AF_INET, SOCK_STREAM)
    • udp socket的语法如下: socket(AF_INET, SOCK_DGRAM)
  4. 学习实现server端编程, 关注服务器
    学习socket server端编程实现简单规约比如echo, time等, 然后通过cmd中的telnet来测试.
  5. 学习linux下相关网络IO模型
    演化过程, 比如阻塞, 非阻塞, 异步, 事件IO(select,poll,epoll, kqueue, WaitForMultipleObject)等
  6. 学习Richard Stevens的 “Unix网络编程” 即unp, 深入学习其中的api原理以及服务端设计原理, 并通过代码编写
  7. 学习高性能网络框架libevent, libuv, boost.asio等
  8. 把所学知识或者经验用于工业/商业项目

以上均为个人的浅见, 不正确的地方还望指点.

尾巴

学习网络部分还是蛮有意思的, 不过深入学习可能需要几年的时间.
后续的学习推荐《Linux网络内核分析与开发》.

文章目录
  1. 1. 引子
  2. 2. 正文
  3. 3. 尾巴
|