[네트워크] 소켓이란

네트워크 소켓이란

  • 네트워크 소켓(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)

주요 프로토콜 번호(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)

참고

links

social