CS

[CS] Http통신과 Socket통신의 차이점

검정색필통 2023. 4. 19. 10:56

1. Http 통신의 특징

- Hyper Text Transper Protocol의 약자. (데이터를 대부분 text로 주고 받음)

- 웹 서비스에서 Client - Server 간의 정보를 요청(request) / 응답(response)받기 위해 만들어진 프로토콜

- Client가 요청이 있을때만, Server에서 응답을 반환(단방향 통신)

- Statefuless protocol - Server가 Client의 상태를 저장하지 않음(데이터 1회 요청시 Connect / Close 반복)

- 반드시 DB(레디스 등 메모리 DB 포함)를 거쳐 데이터를 주고 받음

- 서버 자체의 메모리에 유저 데이터를 들고 있지 않음

 

2. Socket 통신의 특징

- 패킷이라는 형식화된 데이터 메모리 단위를 주고 받아 통신함

- Client와 Server가 특정 Port를 열어서 실시간으로 양방향 통신을 하는 방식

- Stateful Protocol - Server가  Client의 상태를 저장하고 있음(Client / Server 측에서 임의로 연결상태를 끊지 않는 한 서로 연결 유지)

- DB를 통해 데이터를 주고 받을 수도 있고, 임시로 데이터를 서버 프로그램 자체 내에서 생성해서 가지고 있을 수도 있음.

- 서버 자체의 메모리에 유저 데이터를 저장하고 있음.

 

3. Http 통신의 예시

Client <=> WAS <=> DB

 

4. Socket 통신의 예시

 

5. WebSocket의 등장

- 웹 서비스에서는 그럼 양방향 통신을 할 수 있는 프로토콜은 존재하지 않는가? (WebRTC 아님, Socket.io 아님) 

ㄴ WebSocket

- 웹 서비스에서 Client - Server 간의 정보를 양방향으로 통신하기 위해 만들어짐

- Stateful protocol - 한번 Connection을 맺으면 일정 시간 동안 Connection을 유지할 수 있음.

- 웹서버와 통신이 가능하다는 이점이 있음.

- WebRTC는 P2P(peer to peer) 방식, WebSocket은 Cleint-Server 방식

 

6. 결론

- Http 통신은 웹브라우저와 웹서버간 단방향 통신 프로토콜

- Http 통신대규모 및 비동기 통신에 적합

- 웹 통신에서 양방향으로 통신하기 위해 WebSocket, WebRTC 등의 기술 등장

- Socket 통신웹이 아닌 프로그램에서 Client와 Server가 양방향으로 통신가능한 방식

- Socket 통신은 실시간 통신 및 임시 데이터 저장이 필요한 곳에 사용(실시간 동영상 스트리밍, 임베디드 통신(콜택시 단말기 등), MMORPG, 온라인 게임 등...)