네트워크 소켓이란
- 네트워크 소켓(network socket)은 컴퓨터 네트워크를 경유하는 프로세스 간 통신(Inter-Process Communication, IPC)의 종착점
- 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓
- 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다.
- 소켓은 RFC 147에 기술사항이 정의되어 있다.
- 참고
- 네트워크 소켓 - wikipedia
socket.socket
class socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
- 지정된 주소 체계(address family), 소켓 타입(socket type), 및 프로토콜 번호(protocol number)를 사용하여 새로운 소켓을 만든다.
- 주소 체계는
AF_INET
(기본값),AF_INET6
,AF_UNIX
,AF_CAN
,AF_PACKET
또는AF_RDS
여야 한다. - 소켓 타입은
SOCK_STREAM
(기본값),SOCK_DGRAM
,SOCK_RAW
또는 기타SOCK_
상수 중 하나여야 한다. - 프로토콜 번호는 일반적으로 0이며 생략될 수도 있고, 주소 체계가
AF_CAN
일 때 프로토콜은CAN_RAW
,CAN_BCM
,CAN_ISOTP
또는CAN_J1939
중 하나여야 한다.
1. 주소 체계(address family)
- 통신을 하기 위해 통신 상태를 유일하게 지정할 수 있는 주소가 필요
- 주소 체계(address family)란 이러한 주소 지정 방법을 지칭하는 용어
- 주소 체계는 네트워크 프로토콜의 종류에 따라 달라진다.
- IPv4 기반 TCP나 UDP 프로토콜을 사용하려면
AF_INET
값을 선택 - 참고
- 소켓 생성과 닫기 - blog
- What is Address Family? - stackoverflow
Name Purpose
AF_UNIX, AF_LOCAL Local communication
AF_INET IPv4 Internet protocols
AF_INET6 IPv6 Internet protocols
AF_IPX IPX - Novell protocols
AF_NETLINK Kernel user interface device
AF_X25 ITU-T X.25 / ISO-8208 protocol
AF_AX25 Amateur radio AX.25 protocol
AF_ATMPVC Access to raw ATM PVCs
AF_APPLETALK Appletalk
AF_PACKET Low level packet interface
2. 소켓 타입(socket type)
- 사용할 프로토콜의 특성을 나타내는 값
- 소켓 타입은 네트워크 프로토콜의 종류에 따라 달라짐
- 주로 사용되는 TCP나 UDP 프로토콜을 사용하려면 주소 체계와 소켓 타입을 아래 같이 설정
사용할 프로토콜 | 주소 체계 | 소켓 타입 |
---|---|---|
TCP | AF_INET 또는 AF_INET6 | SOCK_STREAM |
UDP | AF_INET 또는 AF_INET6 | SOCK_DGRAM |
주요 소켓 타입 | 소켓 타입 | 특성 | | -- | -- | | SOCK_STREAM | 신뢰성 있는 데이터 전송 기능 제공, 연결형 프로토콜 | | SOCK_DGRAM | 신뢰성 없는 데이터 전송 기능 제공, 비연결형 프로토콜 |
3. 프로토콜 번호(protocol number)
- 프로토콜이란 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계
- 참고
- 통신 프로토콜 - wikipedia
- TCP, UDP별 프로토콜과 포트 번호 - blog
주요 프로토콜 번호(protocol number) | Decimal | Keyword | Protocol | IPv6 Extension Header | Reference | | -- | -- | -- | -- | -- | | 0 | HOPOPT | IPv6 Hop-by-Hop Option | Y | RFC8200 | | 1 | ICMP | Internet Control Message | | RFC792 | | 6 | TCP | Transmission Control | | RFC9293 | | 17 | UDP | User Datagram | | RFC768Jon_Postel |
HOPOPT
: IPv6 패킷에 더 많은 옵션을 추가할 수 있도록 하는 헤더, IPv6 패킷에는 이 헤더가 포함되어 있는 것이 일반적ICMP
: ICMP는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜, ICMP는 도착지 호스트가 없거나, 포트가 닫혀 있는 등의 에러 상황이 발생할 경우 IP헤더에 기록되어 있는 출발지 호스트로 에러에 대한 정보를 보내주는 역할을 한다- 참고
- 프로토콜 번호(Protocol Number - blog)
- Protocol Numbers - iana
- What is the HOPOPT protocol and how does socket() work? - stackoverflow
- [네트워크 ] ICMP 란? - blog](https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rbdi3222&logNo=220602423771)