Stream은 연속적인 데이터 흐름을 의미한다. 컴퓨터 네트워크에서 Stream은 데이터가 일정한 순서로 연속적으로 전송되는 방식을 나타낸다.
연속적인 데이터 흐름
: Stream 통신에서는 데이터가 연속적인 바이트의 흐름으로 전송된다. 이는 마치 파이프를 통해 물이 흐르는 것과 유사하게, 데이터가 끊임없이 흐르는 방식이다.
바이트 스트림
: Stream은 바이트 단위로 데이터를 전송한다. 즉, 송신자는 바이트의 연속으로 데이터를 보내고, 수진자는 이 바이트를 순서대로 받는다.
연결 지향
: Stream 통신은 두 호스트 간에 연결을 설정한 후 데이터를 전송한다. 이는 송신자와 수신자 간의 안정적인 연결을 필요로 한다.
Datagram은 독립적인 데이터 패킷을 의미한다.
독립적인 데이터 패킷
: Datagram은 독립적인 데이터 패킷으로, 각 패킷은 독립적으로 전송되고 처리된다. 하나의 데이터그램이 손실되더라도 다른 데이터그램의 전송에는 영향을 미치지 않는다.
비연결 지향
: Datagram 통신은 데이터 전송 전에 연결을 설정하지 않는다. 송신자 간에 별도의 연결 설정 과정이 없으므로 전송이 빠르다.
비신뢰서
: UDP는 데이터의 순서와 무결성을 보장하지 않는다. 데이터그램이 손실되거나 순서가 뒤바뀔 수 있으며, 이러한 오류를 처리하기 위한 매커니즘이 없다.
Stream Socket과 Datagram Socket은 네트워크 통신에서 사용되는 두 가지 주요 유형의 소켓이다.
연결 지향(Connection-oriented)
: Stream Socket은 통신을 시작하기 전에 두 호스트 간에 연결을 설정한다. 연결이 설전된 후에 데이터 전송이 가능하다.
신뢰성(Reliability)
: 데이터가 전송되는 동안 손실되거나 손상된 데이터는 자동으로 감지되고 재 전송된다. 따라서, 데이터의 순서와 무결성을 보장한다.
프로토콜
: 주로 TCP(Transmission Control Protocol)를 사용한다.
애플리케이션 예시
: 웹 브라우저, 이메일 클라이언트, 파일 전송 프로그램 등
데이터의 순서 보장
데이터 전송의 신뢰성
초기 연결 설정에 시간 소요
데이터 전송 중 오버헤드 증가 (신뢰성을 위한 추가 제어 정보)
비연결 지향(Connectionless)
: Datagram Socket은 데이터를 전송하기 전에 연결을 설정하지 않는다. 데이터를 보내기만 하면 되고, 상대방이 이를 받을지 여부는 보장되지 않는다.
비신뢰성(Unreliability)
: 데이터가 손실되거나 손상될 수 있으며, 순서가 뒤바뀔 수 있다. 데이터의 무결성이나 순서를 보장하지 않는다.
프로토콜
: 주로 UDP(User Datagram Protocol)를 사용한다.
메시지 전송
: 데이터를 고정된 크기의 독립된 메시지(데이터그램)로 전송한다.
애플리케이션 예
: 스트리밍 서비스, 온라인 게임, VoIP 등
연결 설정 과정이 없어 빠른 전송 가능
오버헤드가 적어 효율적
데이터 전송의 신뢰성 부족
데이터의 순서 보장 안됨
특징 | Stream Socket(TCP) | Datagram Socket (UDP) |
---|---|---|
연결방식 | 연결 지향 (Connection-oriented) | 비연결 지향 (Connectionless) |
신뢰성 | 신뢰성 있음 (Reliable) | 비신뢰성(Unreliable) |
데이터 전송 방식 | 바이트 스트림 (Byte stream) | 데이터그램 (Datagram) |
전송 순서 보장 | 순서 보장 | 순서 보장 안됨 |
전송 효율성 | 오버헤드 큼 | 오버헤드 적음 |
주요 프로토콜 | TCP | UDP |
사용 예 | 웹 브라우징, 이메일, 파일 전송 | 스트리밍, 온라인 게임, VoIP |