소켓 통신이란?
소켓이란 두 프로그램이 서로 데이터를 주고받을 수 있도록 양쪽에 생성되는 통신 단자입니다. 이 소켓으로 서버와
클라이언트가 양방향으로 연결이 이루어지는 통신입니다.
서버 소켓
클라이언트 소켓의 연결요청을 대기하고, 연결 요청이 오게 되면 클라이언트 소켓을 생성하여 통신을 합니다.
- socket() 함수로 소켓을 생성
- bind() 함수로 클라이언트에서 연결할 수 있도록 ip 와 port를 할당함
- listen() 함수로 클라이언트에서 요청하는 연결요청을 대기합니다
- accept() 함수는 클라이언트에서 연결요청이 들어왔을 때 연결 요청을 수락합니다.
- write/read() 함수로 데이터를 송/수신 하게 됩니다.
클라이언트 소켓
실제로 데이터 송/수신이 일어나는 클라이언트 소켓입니다..
- socket() 함수로 소켓을 생성
- connect() 함수로 소켓 통신할 서버에 설정된 ip와 port 번호로 통신을 시도합니다.
- write/read() 함수로 데이터를 송/수신 하게 됩니다.
- 소켓 종류
스트림(TCP)
- 양방향으로 바이트 스트림을 전송합니다.(연결 지향성)
- 소량의 데이터보다 대량의 데이터 전송에 적합합니다.
- 오류 수정, 정송처리, 흐름 제어가 보장됩니다.
데이터 그램(UDP)
- 비연결형 소켓
- 데이터의 크기에 제한이 있습니다.
- 확실하게 전달이 보장되지 않습니다.
Socket 통신과 HTTP 통신의 차이점
HTTP 통신
- Client의 요청이 있을 때만 서버가 응답하여 데이터를 전송한 후 연결을 끊어 버리는 단방향 통신입니다.
Socket 통신
- Server와 Client가 IP와 특정 포트를 통해 연결해 연결이 유지되며 실시간으로 통신하는 양방향 통신입니다.
정리
- 데이터를 자주 주고 받는 상황이 아니라면 Socket 통신보다 HTTP 통신을 사용하는 것이 유리합니다.
- 데이터를 실시간으로 주고받는 상황(ex)) 채팅) 이라면 Socket 통신을 사용해야 유리합니다
'Server' 카테고리의 다른 글
AWS EC2에 APM 설치하기 (1) | 2024.01.19 |
---|---|
TCP 에 대해 ( 3way handshake / 4way handshake) (0) | 2023.08.13 |
#1 서버(Server) 와 클라이언트(Client)이해하기 (0) | 2022.08.10 |
Context Switching이란? (0) | 2022.08.07 |
AWS S3(Simple Storage Service)란 무엇인가? (0) | 2022.07.11 |
댓글