-
Notifications
You must be signed in to change notification settings - Fork 0
Study : socket : 프로토콜 패밀리 | 주소 패밀리
KIM JEONGJUN edited this page Mar 31, 2022
·
1 revision
항목 | 내용 |
---|---|
일자 | 빈칸 |
작성자 | 빈칸 |
제목 | 프로토콜 체계와 주소 체계 |
한줄요약 | protocol family와 address family에 대해서 알아보고 차이점을 알아보자 |
socket() 함수를 넣어줄 때 해당 소켓이 어떤 영역에서 작동되는지 도메인 파라미터에 그 유형을 넣어줄 수 있습니다. 하지만 이를 넣어줄 때에 AF_* 플래그를 사용하기도하고 PF_* 플래그를 사용하기도 합니다.
PF | AF | 의미 |
---|---|---|
AF_INET | PF_INET | IPv4 기반의 인터넷 프로토콜 지원 |
AF_UNIX | PF_UNIX | 머신 내부 통신 지원, file 기반 통신 |
AF_LOCAL | PF_LOCAL | AF_UNIX와 상동 |
...
struct sockaddr_in addr;
int sock_fd;
...
//
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
...
sock_fd = socket(PF_INET, SOCK_STREAM, 0);
...
그렇다면 둘 사이에는 무슨 차이가 있을까요? 사실은 아무것도 차이가 없답니다 :)
// linux/kud/include/linux/socket.h
/* Protocol families, same as address families. */
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
#define PF_AX25 AF_AX25
#define PF_IPX AF_IPX
#define PF_APPLETALK AF_APPLETALK
#define PF_NETROM AF_NETROM
#define PF_BRIDGE AF_BRIDGE
#define PF_AAL5 AF_AAL5
초기 설계시에는 단일 프로토콜이 다양한 주소체계를 지원하고자 하였지만 그런 일은 일어나지 않았고, 지금은 둘 중 어느 하나만 써도 무방합니다.
Linux man에서는 둘 다 섞어 쓰는 게 아니라 AF_*를 쓰는 것을 권고하고 있습니다.
already the BSD man page promises: "The protocol family generally is the same as the address family", and subsequent standards use AF_* everywhere.
이미 BSD 매뉴얼 페이지에서 서술한 바와 같이 "protocol family는 address family와 동일하며," 이후 표준은 모든 곳에 AF_*를 쓰는 것을 권합니다.
// uploaded 220330