- Today
- Total
Byeo
BSD Socket API 본문
* BSD socket API에 대한 소개와 Kernel 흐름도를 정리합니다. (linux 5.15 기준)
BSD Socket API Model
* BSD Socket API: Berkeley Software Distribution Socket API
출처: https://www.keil.com/pack/doc/mw6/Network/html/using_network_sockets_bsd.html
출처: https://en.wikipedia.org/wiki/Berkeley_sockets
1. Socket()
#include <sys/socket.h>
socket(int socket_family, int socket_type, int protocol);
Socket Systemcall: https://byeo.tistory.com/entry/socket-system-call
socket system call 1 (syscall_socket ~ __sock_create)
int socket(int domain, int type, int protocol); socket 시스템 콜의 동작을 한 번 들여다봅니다! https://man7.org/linux/man-pages/man2/socket.2.html linux 5.15 기준입니다. 1. syscall_64.tbl 이전 포스트에서 리눅스 시스템 콜
byeo.tistory.com
2. Bind()
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
bind system call: https://byeo.tistory.com/entry/bind-system-call-1
bind system call 1 (__sys_bind)
BSD socket API에서 socket을 생성한 뒤에는 server-side 측에서 bind를 실행합니다. bind는 나의 ip:port를 socket과 연결하는 역할을 수행하죠. 이 번에는 BSD socket API중에서 bind를 분석해보려고 합니다. 이전
byeo.tistory.com
3. Listen()
#include <sys/socket.h>
int listen(int sockfd, int backlog);
4. accept
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *_Nullable restrict addr, socklen_t *_Nullable restrict addrlen);
accept system call: https://byeo.tistory.com/entry/accept-system-call-1-sysaccept4
accept system call 1 (__sys_accept4)
accept system call의 개요와 관련된 내용은 이전 포스트에 정리되어 있습니다.: https://byeo.tistory.com/entry/accept-system-call-Intro accept system call 0 - Intro일반적인 BSD Socket API는 server가 socket을 생성하고 bind
byeo.tistory.com
읽어볼 자료
- SO_REUSEADDR vs SO_REUSEPORT : https://stackoverflow.com/questions/14388706/how-do-so-reuseaddr-and-so-reuseport-differ
- TCP connection repair: https://lwn.net/Articles/495304/
- TCP SYN and Accept queue concept: https://blog.cloudflare.com/syn-packet-handling-in-the-wild
'프로그래밍 (Programming) > 네트워크 스택' 카테고리의 다른 글
bind system call 2 (__inet_bind) (0) | 2024.04.28 |
---|---|
bind system call 1 (__sys_bind) (0) | 2024.04.27 |
socket system call 4 (sock_map_fd) (0) | 2024.04.14 |
socket system call 3 (tcp_v4_init_sock) (0) | 2024.04.06 |
socket system call 2 (inet_create) (0) | 2024.03.31 |