-
[CS] Http통신과 Socket통신의 차이점CS 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, 온라인 게임 등...)
'CS' 카테고리의 다른 글
[CS] 공통 코드 (1) 2023.05.08 [CS] 쓰레드에 대한 이해와 활용 (0) 2023.05.01 [CS] 저장 프로시저(Stored Procedure)의 정의와 활용 (1) 2023.04.27 [CS] 코딩의 DRY 법칙 (0) 2023.04.24 [CS] 메모리란? (0) 2023.04.17