Network Socket
Network Socket
Network Host & Port
- 네트워크에 연결된 장치를 네트워크 노드, 그 중에서도 IP 주소가 있는 노드를 호스트라고 함
- 호스트 내의
프로세스
들은 데이터를 주고 받으면서 통신함 Port
혹은port number
란 프로세스를 식별하기 위해 호스트에서 프로세스에 할당해주는 정수 값
Socket
Socket
이란 네트워크를 통해 데이터를 송수신하는 프로세스간의 종단점 역할을 하는 소프트웨어 (인터페이스)- 데이터를 보내는 프로세스와 받는 프로세스 모두
socket
을 열어서 데이터를 주고 받음 Socket
의 주소는호스트의 IP 주소
,port number
,Protocol
세 가지 정보로 구성됨- 그러나 소켓의 주소 하나당 한 개의
socket
만 열 수 있는 것은 아님 - 서버의 경우 하나의 소켓 주소에 해당하는 여러 socket을 열 수 있음
- 많은 사용자가 하나의 서버에 동시 접속이 가능한 이유
- 그러나 소켓의 주소 하나당 한 개의
Socket System Call
Socket은 다음과 같은 system call을 제공
socket()
- 소켓을 생성하고 소켓의 디스크립터를 반환
- 소켓에서 사용할 프로토콜의 도메인과 프로토콜의 타입을 입력으로 받음
bind()
- 생성된 소켓에 소켓 주소를 부여
listen()
- 소켓에서 받을 수 있는 연결 요청의 개수를 지정
- 인자로 주어진 만큼 한 번에 연결을 받을 수 있음
accept()
- 서버 소켓에서 클라이언트의 연결 요청을 대기하는 함수
- 요청이 들어오면 실행되고, 이 함수를 통해 클라이언트의 소켓 주소를 받을 수 있음
connect()
- 클라이언트가 서버에게 연결하기 위한 요청을 수행하는 함수
- 서버의 소켓 주소를 인자로 받음
send() / sendto()
send
는 연결이 된 상태에서 데이터를 송신sendto
는 연결이 안 된 상태에서 데이터를 송신. 받는 소켓의 주소가 필요
recv() / recvfrom()
recv
는 연결이 된 상태에서 데이터를 수신recvfrom
은 연결이 안 된 상태에서 데이터를 수신. 보내는 소켓의 주소가 필요
close()
: 소켓을 닫음
References
- https://en.wikipedia.org/wiki/Network_socket
- https://blog.naver.com/myca11/221389847130
- https://copycode.tistory.com/115
기타
2022-08-22에 작성된 Socket
문서의 내용을 정리 및 보완