Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스프링 부트
- 자바
- CS
- HTTP
- 스프링 시큐리티
- 백엔드
- Java
- web server
- CI/CD
- mysql
- 스프링
- Container
- 도커
- 가상화
- spring batch
- virtualization
- 스프링 배치
- 배포
- 영속성 컨텍스트
- spring cloud
- spring boot
- 컨테이너
- ORM
- 데이터베이스
- vm
- computer science
- JPA
- 웹 서버
- Spring Security
- Spring
Archives
- Today
- Total
개발 일기
[Computer Network] 실시간 웹 통신 - 2. 소켓 통신 본문
Computer Science/Computer Network
[Computer Network] 실시간 웹 통신 - 2. 소켓 통신
개발 일기장 주인 2024. 10. 9. 19:56앞 게시글에서 Polling, Long Polling 그리고 SSE에 대해 정리해봤는데 채팅 기능을 구현하기 위한 웹 소켓에 대해 정리해보고자 한다.
우선 소켓(Socket)에 대해 알아보자.
소켓(Socket)
- 소켓은 네트워크 상에서 데이터를 송수신하는 두 호스트의 프로세스를 연결하는 종착점
➜ 한쪽 프로세스가 데이터를 소켓에 쓰면, 네트워크를 통해 반대쪽 소켓으로 전달된다. - OSI 7계층 중 Application Layer에 속하는 프로세스들은 데이터 송수신을 위해 반드시 소켓을 거쳐 Transport Layer으로 데이터를 전달해야한다. ➜ 즉, 소켓은 전송 계층과 응용 프로그램 사이의 인터페이스 역할을 하며 떨어져 있는 두 호스트를 연결해준다.
- HTTP 통신도 소켓 통신이지만 반대로 소켓 통신을 HTTP 통신이라고는 할 수 없다.
- IP 주소, 프로토콜 그리고 포트 번호로 정의된다.
스트림 소켓(Stream Socket)과 데이터그램 소켓(Datagram Socket)
소켓은 두 가지로 구분할 수 있다.
Stream Socket
- 프로토콜: TCP (Transmission Control Protocol)
- 연결 지향적: 데이터 전송 전에 통신할 상대방과 연결을 맺는다. 이 연결은 데이터 전송이 끝날 때까지 유지된다.
➜ 양방향 - 속도보다 신뢰성 중시: 데이터의 정확한 전송을 보장하기 위해 필요한 오버헤드 때문에 Datagram Socket보다 상대적으로 느리지만 데이터는 순서대로, 오류 없이 전송됩니다. 손실된 데이터는 재전송된다.
- 주로 사용되는 예시: HTTP, FTP, 이메일 전송 등 신뢰성이 중요한 데이터 전송에 사용
Datagram Socket
- 프로토콜: UDP (User Datagram Protocol)
- 비연결 지향적: 연결을 맺지 않고 데이터를 전송하기 때문에 데이터를 보내기 전에 수신자와의 연결을 설정할 필요가 없습니다.
➜ 단방향 - 신뢰성 보다 속도 중시: 연결 설정 과정이 없고, 오버헤드가 적기 때문에 상대적으로 빠른 데이터 전송이 가능하지만 전송된 데이터의 도착을 보장하지 않으며, 데이터가 순서대로 도착한다는 보장 없다.
- 주로 사용되는 예시: 실시간 멀티미디어 스트리밍(영상, 음성), 온라인 게임, VoIP(인터넷 전화) 등 속도가 중요한 실시간 서비스에 사용
위 그림에서도 알 수 있듯이 datagram socket은 accept의 과정 없이 없다.
인터넷을 보면 소켓 통신과 HTTP 통신을 비교하는 글이 많던데 올바른 비교인지 모르겠다.
나는 현재까지 공부했을때 소켓 통신과 웹소켓도 별도로 느껴지며 웹소켓과 HTTP통신 이 두 개를 비교하는 것은 같은 같은 Layer에서 발생하는 것 같지만 소켓 통신과 HTTP 통신은 서로 다른 Layer에서 동작하는 개념이라 비교가 되는지 모르겠다.
1. 소켓 통신(Socket Communication) vs. HTTP 프로토콜
- 소켓 통신은 전송 계층(Transport Layer)에서 이루어지지만 HTTP 프로토콜은 응용 계층(Application Layer)에서 발생한다.
- 웹에서 클라이언트와 서버 간에 요청과 응답을 주고받기 위한 애플리케이션 계층 프로토콜로 주로 웹 페이지를 요청하고 전달하는 데 사용되는데 HTTP가 데이터를 전송할때 TCP 소켓(Stream Socket)을 사용하는 것이다.
➜ HTTP 프로토콜은 Stream Socket을 통해 데이터를 전송하지만, 각 요청은 무상태적입니다. 따라서 HTTP는 연결 지향적인 소켓을 사용하더라도 각 요청과 응답은 서로 독립적이다.
'Computer Science > Computer Network' 카테고리의 다른 글
[Computer Network] 실시간 웹 통신 - 4. STOMP(Simple/Stream Text Oriented Message Protocol) (2) | 2024.10.09 |
---|---|
[Computer Network] 실시간 웹 통신 - 3. 웹소켓 프로토콜(WebSocket Protocol) (0) | 2024.10.09 |
[Computer Network] 실시간 웹 통신 - 1.Polling, LongPolling 그리고 Server-Sent Events (1) | 2024.10.07 |
[Computer Network] NAT & CIDR (0) | 2024.07.07 |
[Computer Network] 서브넷, 서브넷 마스크, 서브네팅 (0) | 2024.06.28 |