본문 바로가기
운영체제&네트워크/Network

소켓 프로그래밍에서의 연결과 비연결 프로토콜(TCP, UDP)

by GangDev 2024. 3. 28.

 

소켓 프로그래밍은 네트워크 통신을 위한 프로그래밍 기술로, 컴퓨터나 장치 간에 데이터를 주고 받는 데 사용된다.

 

소켓 프로그래밍은 네트워크 애플리케이션의 개발과 통신을 담당하며, 다양한 프로그래밍 언어에서 지원된다.
클라이언트와 서버 간의 통신을 구현하고 데이터를 안전하게 전송하기 위한 용도로 사용된다고 보면 된다.

 

소켓의 개념:
소켓은 네트워크 통신의 기본 단위로, IP 주소와 포트 번호의 조합으로 정의된다. 이 조합을 통해 특정 네트워크 장치와 해당 장치에서 실행 중인 애플리케이션을 식별한다.
소켓은 데이터를 주고받는 데 사용되며, 클라이언트와 서버 간에 데이터를 교환할 때 주로 활용된다.

 

클라이언트와 서버 모델:
소켓 프로그래밍은 주로 클라이언트와 서버 간의 통신 모델로 사용된다. 서버는 특정 포트에서 연결을 수신 대기하고, 클라이언트는 서버의 IP 주소와 포트 번호를 사용하여 연결을 요청한다.
서버는 클라이언트의 요청을 받아들이고, 클라이언트와 데이터를 교환하며, 클라이언트의 요청에 대한 응답을 제공한다.

 

TCP 소켓:
TCP(Transmission Control Protocol) 소켓은 연결 지향적인 프로토콜을 사용한다. 이는 클라이언트와 서버 간의 안정적인 연결을 설정하고, 데이터가 순서대로 전송되며 무결성이 보장됨을 의미한다.
TCP 소켓은 스트림 기반 통신을 제공하며, 데이터의 흐름이 연결된 소켓을 통해 실시간으로 전달된다.
(예를 들어, 웹 브라우저가 웹 서버에 HTTP 요청을 보내는 과정에서 TCP 소켓이 사용된다)

 

UDP 소켓:
UDP(User Datagram Protocol) 소켓은 비연결형 소켓으로, 연결 설정 없이 데이터를 전송한다. 이는 TCP보다 빠른 전송 속도를 제공하지만, 데이터의 신뢰성과 순서가 보장되지 않는다.
UDP 소켓은 데이터그램(Datagram) 단위로 데이터를 주고받으며, 실시간 통신에서 사용된다.
(예를 들어, 실시간 오디오나 비디오 스트리밍에 UDP 소켓이 적용될 수 있다)

 

---

24년 1월 29일 작성된 글입니다