소켓

hyenam·2022년 6월 29일

webserv

목록 보기
4/6

포트란 호스트 내부적으로 프로세스가 할당받는 고유한 값이다. 포트넘버라고도 한다.

호스트란 IP를 할당받은 네트워크 장치를 뜻한다.

소켓은 네트워크상에서 동작하는 프로세스들 간의 엔드 포인트라고 한다. 서로다른 프로세스 간에서 데이터를 주고 받기위해 사용되는 창구같은 것이다.
응용프로그램과 소켓 사이의 인터페이스를 소켓 인터페이스라고 한다.

데이터를 주고 받으려면 해당 프로세스들의 소켓은 전부 열려 있어야한다.
소켓을 열기 위해서는 호스트 IP, 포트 넘버, 프로토콜등이 필요하다.

파일을 open하게 되면 fd번호를 리턴하듯이 소켓을 만들면 fd와 같은 기능을 하는 sc(socket descriptor) 가 리턴된다.
sc는 소켓을 통해 목적지 호스트와 연결을 요구하거나 패킷을 송수신할때 사용된다.

fd와 sc의 값은 중복되지 않는다. (만약 fd의 값이 3이라면 sc는 4가된다.)
이렇듯 sc는 응용프로그램 내에서 순서대로 배정이 되고, 그 프로그램에서만 구분된다. 그래서 다른 응용프로그램에서 같은 sc를 사용해도 문제가 되지 않는다.

소켓을 이용하여 IP패킷을 주고받기 위해서는

  • 통신에 사용할 프로토콜
  • 자신의 IP
  • 자신의 포트번호
  • 상대방의 IP
  • 상대방의 포트번호
    이 5가지가 필요하다

그래서 소켓 프로그램을 할땐 가장 처음으로 통신 창구 역할을 하는 소켓을 만들어야한다.
해당 소켓은 서버와 클라이언트 모두에서 필요하다.
이를 위해 soket() 시스템콜을 호출한다.
soket()이 성공적으로 수행되면 sc를 리턴한다.

soket() 문법

int socket(domain, type, protocol);
  • domain - 프로토콜 체계
    • PF_INET - 인터넷 체계 사용
    • PF_UNIX - UNIX방식 체계 사용
    • PF_NS - XEROX 방식 체계 사용
    • TCP/IP 사용하려면 인터넷 체계인 PF_INET를 사용해야한다.
  • type - 서비스 타입
    • SOCK_STREAM - 스트림 방식 (연결형)
    • SOCK_DGRAM - 데이터 그램 방식 (비연결형)
  • protocol - 소켓을 지원하는 프로토콜
    • 0을 쓰면 시스템이 자동으로 설정

학습에 참고한 사이트

profile
공부한 걸 정리하고 있습니다.

0개의 댓글