본문 바로가기
CS

웹 소켓(SOCKET)통신 이란?

by Shark_상어 2023. 3. 23.
728x90

소켓통신

 

소켓(SOCKET)이란?

소켓(Socket)은 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다.

 
소켓은은 프로토콜, IP 주소, 포트 넘버로 정의된다.

다시말해 소켓은 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스의 역할을 하는데 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어 진다. 이러한 소켓은 역할에 따라 서버 소켓, 클라이언트 소켓으로 구분된다.

 

소켓통신의 흐름

 
 
 
서버 (Server)
 
클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다
 
1) socket() 함수를 이용하여 소켓을 생성
2) bind() 함수로 ip와 port 번호를 설정하게 됩니다.
3) listen() 함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정
4) accept() 함수를 사용하여 클라이언트와의 연결을 기다림
 
클라이언트 (Client)
 
실제로 데이터 송수신이 일어나는 것은 클라이언트 소켓이다.
 
1) socket() 함수로 가장먼저 소켓을 연다.
2) connect() 함수를 이용하여 통신 할 서버의 설정된 ip와 port 번호에 통신을 시도
3) 통신을 시도 시, 서버가 accept() 함수를 이용하여 클라이언트의 socket descriptor를 반환
4) 이를 통해 클라이언트와 서버가 서로 read(), write() 를 하며 통신 (이 과정이 반복)

 

소켓종류

스트림 (TCP)
 
- 양방향으로 바이트 스트림을 전송, 연결 지향성
- 오류 수정, 전송처리, 흐름제어 보장
- 송신된 순서에 따라 중복되지 않게 데이터를 수신 → 오버헤드가 발생
- 소량의 데이터보다 대량의 데이터 전송에 적합 → TCP를 사용
 
데이터그램 (UDP)
 
- 비연결형소켓
- 데이터의 크기에 제한이 있음
- 확실하게 전달이 보장되지 않음, 데이터가 손실돼도 오류가 발생하지 않음
- 실시간 멀티미디어 정보를 처리하기 위해 주로 사용 ex) 전화
SOCKET 통신의 특징
 
- Server와 Client가 계속 연결을 유지하는 양방향 통신이다.
- Server와 Client가 실시간으로 데이터를 주고받는 상황이 필요한 경우에 사용된다.
- 실시간 동영상 Streaming이나 온라인 게임 등과 같은 경우에 자주 사용된다.

 

728x90

'CS' 카테고리의 다른 글

프록시 서버란 무엇인가?  (0) 2023.03.16
MVP 패턴 과 MVVM 패턴  (0) 2023.01.31
MVC 패턴이란??  (0) 2023.01.28
이터레이터 패턴이란 무엇인가?  (0) 2023.01.26
프록시 패턴 과 프록시 서버  (0) 2023.01.24