CS - Socket

이한솔·2024년 6월 20일
0

Computer Science 💻

목록 보기
1/2

Socket

소켓(Socket)은 네트워크 통신을 위한 양쪽 끝단(End Point)으로 소켓을 사용하면 두 컴퓨터 간의 데이터 전송이 가능하고, 이를 통해 다양한 네트워크 애플리케이션을 구현할 수 있다. 소켓은 TCP/IP, UDP 등의 프로토콜을 기반으로 데이터를 주고받는 데 사용된다.

💡 Socket의 역할?
네트워크 위에서 프로그램을 동작 가능하게 하기 위해 네트워크를 OSI(Open Systems Interconnection)을 7계층으로 나누어서 관리한다. 하지만 계층별 프로토콜은 일종의 통신 규약일 뿐, 구체적인 구현부 함수가 필요하다. 소켓은 이런 함수들의 body를 제공하기 때문에 일일이 구현할 필요 없이 소켓을 이용해서 통신할 수 있다.

💡 Socket 프로그래밍이란?
소켓 프로그래밍은 소켓을 사용하여 네트워크 애플리케이션을 개발하는 것이다.



Socket 종류

  1. 스트림 소켓 (Stream Socket)
    스트림 소켓은 TCP(Transmission Control Protocol)를 기반으로 한다.
    연결 지향적이며, 데이터의 순서 보장과 신뢰성을 제공하므로 데이터가 손실 없이 순서대로 도착한다. 주로 웹 브라우징, 이메일 전송 등과 같이 신뢰성이 중요한 애플리케이션에서 사용된다.

  2. 데이터그램 소켓 (Datagram Socket)
    데이터그램 소켓은 UDP(User Datagram Protocol)를 기반으로 한다.
    비연결 지향적이며, 데이터의 순서 보장과 신뢰성을 제공하지 않는다. 대신, 빠른 전송 속도를 제공한다. 주로 실시간 스트리밍, 온라인 게임 등과 같이 신속한 데이터 전송이 중요한 애플리케이션에서 사용된다.



Socket 동작 방식

소켓 통신은 클라이언트와 서버의 상호 작용을 통해 이루어진다.

  1. 서버 소켓 생성
    서버는 먼저 소켓을 생성하고, 특정 포트에서 클라이언트의 연결을 대기한다.

  2. 클라이언트 소켓 생성 및 연결 요청
    클라이언트는 소켓을 생성하고, 서버의 IP 주소와 포트 번호를 사용하여 연결을 요청한다.

  3. 서버 연결 수락
    서버는 클라이언트의 연결 요청을 수락하고, 새로운 소켓을 생성하여 클라이언트와의 통신을 처리한다.

  4. 데이터 송수신
    클라이언트와 서버는 소켓을 통해 데이터를 주고받는다.

  5. 연결 종료
    데이터 전송이 완료되면 클라이언트와 서버는 소켓을 닫아 연결을 종료한다.

0개의 댓글