2.2.2 Posix API与网络协议栈

张开发
2026/4/2 18:22:19 15 分钟阅读
2.2.2 Posix API与网络协议栈
1. Posix api1.1 socket()int socket(int domain, int type, int protocol);int tcp_socket socket(AF_INET, SOCK_STREAM, 0);功能① 分配一个listenFd ② alloc一个tcptcp control blocktcp中包含了五元组【s_ip, d_ip, s_port, d_port, proto】的部分1.2 bind()int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);功能bind的pram1是sock系统会通过sock -- 找到tcb -- 将ip和port set到tcb中。1.3 listen()int listen(int sockfd, int backlog);功能① 修改tcb中的status状态tcb-status TCP_STATUS_LISTEN② alloc两个连接队列alloc tcb-syn_queuealloc tcb-accept_queueserver listen建立之后才可以发生三次握手① client发起连接SYN会有一个seq_num序列 x② server接收到之后回应client发起回应ACK , 回应ack_num x 1表示x 1前面的包我都收到了同时向客户端发起SYN和seq_num序列y③ client回应server发起回应ACK以及ack_numy1,同时携带seq_num2. reactor 的 1048576数组

更多文章