[네트워크] BSD 소켓

유선·2024년 4월 26일
0

CS

목록 보기
15/25
post-thumbnail

🔍 BSD 소켓이란?

  • BSD는 "버클리 소프트웨어 배포판(Berkeley Software Distribution)"의 약자로, 네트워크 통신을 위한 소프트웨어 인터페이스
  • BSD 소켓은 BSD 운영 체제에서 개발되었으며, TCP/IP 프로토콜 기반 네트워크 통신을 가능하게 한다.
  • 일반적으로 socket이라고 하면 BSD 소켓을 말한다.

    소켓은 운영체제에서 관리하는 객체로 소프트웨어를 인터넷에 연결해주는 접점 역할을 한다. 인터넷과의 접점에 놓여서 인터넷으로 데이터를 전송하거나 또는 인터넷으로 부터 전송되는 데이터를 읽는 것이다.

🔍 소켓이 연결되는 과정

💡server

  1. Socket : 소켓 객체를 생성. 각 소켓은 file descriptor로 구분된다. 소켓은 아무런 IP 주소포트 번호와도 연결되어 있지 않는다.
  2. Bind : 1에서 생성한 소켓에게 IP 주소와 Port 번호를 연결한다.
  3. Listen : 소켓은 클라이언트의 연결 요청을 기다린다.
  4. Accept : 이 과정에서 서버는 소켓을 하나 더 생성한다. 클라이언트 소켓에서 연결 요청이 왔을 때 함수가 불려지며, Listen 소켓은 현재 클라이언트 말고 다른 클라이언트에서 올 수도 있는 요청을 대기해야 하기 때문에, 연결 요청이 온 소켓에 대해서 새로운 소켓을 만들어 연결해 준다.
  5. Send & Receive : 연결을 맺은 클라이언트 소켓과 데이터를 주고받는 과정이다.
  6. Close Socket : 클라이언트 소켓이 연결을 종료하면 연결되어 있던 소켓을 반환한다.

💡client

  1. Socket : 서버와 같이 소켓 객체를 생성하는 과정이다.
  2. Connect : 서버와는 달리 클라이언트 소켓은 bind 과정이 빠져있다. 이는 클라이언트가 연결을 요청하는 주체이기 때문에 굳이 포트 번호를 알고 있을 필요가 없기 때문이다. connect 과정에서 소켓에게는 임의의 소켓 번호가 부여되며, 서버 소켓과 연결을 맺는다(3-way handshake).
  3. Send & Receive : 연결을 맺은 서버 소켓과 데이터를 주고받는 과정이다.
  4. Close Socket : 서버와 연결을 종료하고 소켓에게 할당된 자원을 반납한다.

✔️ 위의 과정을 보면, 소켓 통신은 1:N 통신이 아닌 1:1 통신을 지원한다는 것을 알 수 있다.

profile
Sunny Day!

0개의 댓글