OSI

osi

传输层

tcp3

tcp4

tcp state

tcp-exchange

port

client

tcp_buffer

protocol

socket 编程

struct sockaddr_in {
    short int sin_family;           // 地址族,始终设置为 AF_INET
    unsigned short int sin_port;    // 端口号,以网络字节序表示
    struct in_addr sin_addr;        // IPv4 地址,以网络字节序表示
    unsigned char sin_zero[8];      // 未使用的字段,通常设置为全零
};

struct in_addr {
    unsigned long int s_addr;       // IPv4 地址,以网络字节序表示
};
struct sockaddr {
    unsigned short sa_family; // 地址族,如 AF_INET 表示 IPv4 地址族
    char sa_data[14]; // 地址信息
};

函数

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

socket_addr

TCP

socket_tcp

socket_family_type

TCP client / server

tcp_client

tcp_server

I/O 复用

blocking_io

nonblocking_io

io_multiplexing

sig_io

asynchronous_io

io

UDP

udp

#include <sys/types.h>
#include <sys/socket.h>

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
    struct sockaddr *src_addr, socklen_t *addrlen);

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
    const struct sockaddr *dest_addr, socklen_t addrlen);

udp_client

udp_server

高级 UDP

可靠性:

  1. 超时和重传:用于处理丢失的数据报
    1. 请求丢失
    2. 应答丢失
    3. RTO 太小
  2. 序列号:供客户验证一个应答是否匹配相应的请求

RTO: 重传超时(retransmission timeout)

timer

信号驱动 IO

  • 大部分左侧
  • NTP 网络时间协议,英文名称:Network Time Protocol 使用右侧

udp_sigio