#include <sys/socket.h>int socket(int domain, int type, int protocol);成功时返回文件描述符,失败时返回 -1int socket_fd = socket(AF_INET, SOCK_STREAM, 0);
- domain: AF_INET, AF_INET6
 - type: SOCK_STREAM (TCP), SOCK_DGRAM (UDP)
 - protocol: 0, 使用默认实现
 
文件描述符:
- 0: stdin
 - 1: stdout
 - 2: stderr
 

服务器监听原理:
- 创建文件描述符
 - 绑定 ip? 与 port
 - 开始 listen
 
  1 0   socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
  2 +0  setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
  3 +0  bind(3, ..., ...) = 0
  4 +0  listen(3, 1) = 0
  5
  6 //TCP three-way handshake
  7 +0  < S 0:0(0) win 4000 <mss 1000>
  8 +0  > S. 0:0(0) ack 1 <...>
  9 +.1 < . 1:1(0) ack 1 win 1000
 10
 11 +0 accept(3, ..., ...) = 4
 12 +0 < P. 1:201(200) win 4000
 13 +0 > . 1:1(0) ack 201
<向内核注入数据>期待响应后面的数据

第七行含义:
- syn 包
 - 起始 seq
 - 结束 seq
 - 包长度
 - 窗口大小
 - mss
 


