소켓 ( SOCKET )

youngkyu MIn·2023년 12월 5일

소켓

소켓은 네트워크상에서 서로 다른 두 장치(예: 컴퓨터, 서버, 네트워크 장치 등)가 데이터를 주고받기 위한 끝점(endpoint)을 의미한다. 소켓은 컴퓨터 네트워킹에서 통신의 기본 단위로 사용되며, 인터넷 또는 다른 네트워크를 통해 데이터를 교환하는 데 필수적인 역할을 한다.

소켓의 특징

  • 주소 지정: 각 소켓은 IP 주소와 포트 번호의 조합으로 구성된다. IP 주소는 네트워크상의 장치를 식별하고, 포트 번호는 해당 장치 내의 특정 프로세스 또는 서비스를 식별한다.

  • 프로토콜 사용: 소켓은 TCP(Transmission Control Protocol) 또는 UDP(User Datagram Protocol)와 같은 특정 프로토콜을 사용하여 데이터를 전송한다.

  • 통신 메커니즘: 소켓은 양방향 통신을 지원한다. 즉, 데이터를 보내고 받을 수 있다.

  • 프로그래밍 인터페이스: 대부분의 프로그래밍 언어는 네트워크 프로그래밍을 위해 소켓 API(Application Programming Interface)를 제공한다. 이를 통해 개발자는 소켓을 사용하여 네트워크 통신 기능을 구현할 수 있다.


소켓 통신

소켓 통신은 컴퓨터 네트워크에서 두 장치 간의 양방향 통신을 가능하게 하는 메커니즘이다. 이러한 통신은 소켓을 사용하여 수행된다. 소켓 통신은 주로 인터넷이나 인트라넷 환경에서 발견되며, 다양한 애플리케이션과 서비스에서 광범위하게 사용된다.

소켓 통신의 요소

  • 소켓: 네트워크 통신의 기본 단위로, IP 주소와 포트 번호의 조합으로 식별된다.

  • 클라이언트와 서버 모델: 소켓 통신에서는 일반적으로 클라이언트와 서버 모델이 사용된다. 서버는 특정 포트에서 연결 요청을 기다리고, 클라이언트는 해당 서버에 연결을 시도한다.

  • TCP/IP 프로토콜: 대부분의 소켓 통신은 TCP/IP 프로토콜을 기반으로 한다.

소켓 통신의 과정

1 서버 소켓 설정: 서버는 특정 포트에서 수신 대기 상태의 소켓을 생성한다.

2 클라이언트 연결 요청: 클라이언트는 서버의 IP 주소와 포트 번호를 사용하여 연결을 시도한다.

3 연결 수립: 서버는 클라이언트의 연결 요청을 수락하고, 양쪽 모두 데이터를 송수신할 준비가 된다.

4 데이터 전송: 클라이언트와 서버는 서로 데이터를 주고받으며, 이 데이터는 소켓을 통해 전송된다.

5 연결 종료: 데이터 전송이 완료되면, 연결은 종료된다.


TCP, UDP

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스위트의 핵심 요소다.

TCP (Transmission Control Protocol)

  • 연결 지향적: TCP는 데이터 전송 전에 먼저 두 장치 간의 연결을 설정한다. 이는 '3-way handshake' 과정을 통해 이루어진다.

  • 신뢰성 있는 데이터 전송: TCP는 데이터가 순서대로, 정확하게 전송되는 것을 보장한다. 손실된 패킷은 재전송된다.

  • 흐름 제어 및 혼잡 제어: TCP는 네트워크의 혼잡 상태를 감지하고, 데이터의 흐름을 조절하여 효율적인 전송을 지원한다.

  • 세그먼트: TCP에서 데이터는 '세그먼트'라는 단위로 전송된다. 각 세그먼트에는 순서 번호, 확인 응답 번호, 플래그 등의 제어 정보가 포함된다.

  • 사용 사례: 웹 브라우징, 이메일, 파일 전송 등 신뢰성이 중요한 애플리케이션

UDP (User Datagram Protocol)

  • 비연결 지향적: UDP는 연결 설정 없이 데이터를 바로 전송한다. 이는 더 빠른 데이터 전송을 가능하게 한다.

  • 비신뢰성 있는 데이터 전송: 전송된 데이터의 순서 보장이나 재전송이 없다. 손실된 패킷은 복구되지 않는다.

  • 효율적이고 빠른 전송: 오버헤드가 낮아 빠른 데이터 전송이 가능하다. 이는 실시간성이 중요한 애플리케이션에 적합하다.

  • 데이터그램: UDP에서는 데이터를 '데이터그램'이라는 독립적인 단위로 처리한다. 각 데이터그램은 다른 데이터그램과 독립적으로 전송된다.

  • 사용 사례: 온라인 게임, 스트리밍, VoIP(음성 통신) 등 실시간 데이터 전송이 중요한 애플리케이션


웹소켓?

"소켓"과 "웹소켓"은 비슷한 이름을 가지고 있지만, 사용 목적과 구현 방법에서 분명한 차이가 있다.

  • 목적 및 사용 환경: 소켓은 네트워크 통신을 위한 일반적인 메커니즘이며, 다양한 프로토콜과 환경에서 사용된다. 반면, 웹소켓은 웹 애플리케이션을 위한 특화된 프로토콜 및 API다.

  • 호환성: 웹소켓은 HTTP와의 호환성을 가지며, 웹 환경에 특화되어 있다.

  • 프로토콜 수준: 소켓은 보다 저수준의 통신을 다루며, 웹소켓은 이보다 높은 수준의 프로토콜을 제공한다.

간단히 말해, 소켓은 네트워크 통신의 기본 구성 요소이며 다양한 환경과 프로토콜에 적용될 수 있고, 웹소켓은 웹 환경에서 실시간 양방향 통신을 가능하게 하는 특화된 기술이다.

유튜브 자료

신입분들이 잘 모르는 지식!! 소켓이란 무엇일까?
소켓 01 00 소켓의 본질에 대한 이해 -> 이거 좀 더 자세히 한번 더 보자

[1부] 프로토콜 표준 스펙에서 정의한 Socket(소켓), Port(포트), TCP connection(연결) 개념 -> 끝까지 못봤음

profile
한 줄 소개

0개의 댓글