TCP/IP란?
- Transmission Control Protocol/Internet Protocol의 줄임말
- 인터넷 통신에서 가장 표준이 되는 약속이자 규약
네트워크에서 데이터의 전송 방식
네트워크는 상호 연결된 노드의 모임으로 구성되며, 중간 노드를 경유하여 송신지 호스트에서 수신지 호스트로 데이터가 전송된다.
송신 호스트에서 수신 호스트까지 가는 다양한 이동 경로 중에 어떤 경로를 선택해서 데이터를 전송할 것인지 결정하는 방법에는 크게 회선 교환 방식과 패킷 교환 방식이 있다.
회선 교환 방식(Circuit switching)
- 통신하고자 하는 두 호스트가 데이터를 전송하기 전에 미리 하나의 고정된 이동 경로를 설정하는 방식
- 미리 설정된 이동 경로는 두 호스트만이 독점적으로 사용하는 전용 경로가 되며, 통신을 종료할 때까지 변경되지 않기 때문에 모든 데이터가 같은 경로로 전달됨
- 어떤 이동 경로가 더 나을지는 데이터를 전송하는 시점의 네트워크 혼잡도 등 여러 요인에 따라 달라지는데, 회선 교환 방식은 데이터 전송 전에 미리 이동 경로를 결정하기 때문에 데이터 전송 시의 이동 경로가 효율적이지 못한 경우가 발생
- 회선 교환 방식을 사용하면 이미 설정된 이동 경로는 설정이 해제되기 전까지 데이터를 전송하지 않을 때에도 다른 호스트가 이 이동경로를 사용할 수 없게 된다는 측면에서도 비효율적
패킷 교환 방식(Packet Switching)
- 서킷 통신의 비효율성을 개선한 것이 패킷 교환 방식
- 미리 고정된 이동 경로를 설정하지 않는 대신 데이터를 패킷이라고 하는 작은 단위로 나누어 전송하는 방식
- 패킷 : 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해 전송되는 데이터 조각
- 각 패킷은 전송 당시 가장 효율적인 경로를 각자 설정해 최종 수신지까지 이동
- 패킷 교환 방식의 데이터 전송이 가능하기 위해서는 패킷을 수신한 중간 노드가 패킷의 수신지 호스트를 확인하고 수신지 호스트까지 가는 다양한 경로 중 그 당시 가장 좋다고 판단되는 경로를 따라 다음 중간 노드로 패킷을 전송하는 기능, 즉 라우팅을 수행해야 함. ->
라우터
라는 네트워크 장비가 이러한 라우팅을 수행하는 중간 노드.
- 패킷이 전송될 때마다 최적의 경로를 찾아 이동하기 때문에 전송 효율이 높다
- 노드와 노드 간의 링크를 다수의 패킷이 공유하기 때문에 링크를 독점하는회선 교환 방식보다 효율적
TCP/IP 등장
컴퓨터를 이용한 패킷 통신의 경우 각 사용자들이 사용하는 컴퓨터들의 운영체제도 다르고, 사용하는 프로그램들을 구현하는 언어들도 다르기 때문에 서로 통신을 하기 위해서는 통일 된 하나의 약속이 필요하게 됨. -> IP의 등장
IP : 인터넷 프로토콜 -> 인터넷 통신을 하기 위한 규약
IP는 패킷이라는 데이터 조각들을 최대한 빨리 목적지로 보내는 역할을 함. 이때, 효과적으로 목적지에 도달한 데이터 조각들을 분석해 오류를 검사하고 재전송 요구 등의 제어를 담당하는 전송계층의 한 가지 방식인 TCP와 함께 묶어 TCP/IP라는 표준을 만들게 됨.
(데이터의 정확성 확인은 TCP가, 패킷을 목적지까지 전송하는 일은 IP가 담당)
즉, IP를 통해 패킷들을 목적지로 빠르게 전달하고, TCP로 대표되는 전송계층을 통해 패킷을 점검 및 컨트롤하는 일련의 과정들에 대해 규정한 체계가 TCP/IP 이다.
TCP & UDP
TCP/IP는 응용(Application), 전송(Transport), 인터넷(Internet), 네트워크 접근(Network Access) 4개의 계층으로 세분화할 수 있다.
TCP와 UDP는 3계층인 전송계층에서 사용되는 두 종류의 프로토콜.
TCP
-
Transmission Control Protocol의 약자
-
데이터를 메세지의 형태로 보내기 위한 규약
-
신뢰도 높은 데이터를 보내야할 때 주로 사용하는 프로토콜
-
각각의 데이터 조각, 패킷들을 전달할 때마다 확인 절차를 거침
-
목적지에 도착해서도 패킷에 부여된 번호를 점검, 추적해 패킷의 누락과 오류 등을 찾아내어 이에 대한 재전송 요청을 할 수 있는 연결형 서비스
-
패킷의 손실을 최소화할 수 있고, 높은 신뢰성을 확보해야 하는 서비스에 사용하기 적합
-
송신지와 수신지의 데이터 처리 속도를 조절해 수신자의 오버플로우를 방지하는 흐름제어 가능
-
정보의 소통량이 과다할 때 전송하는 패킷의 양을 조절하여 붕괴를 막는 혼잡제어 등도 가능
-
단점 : 모든 패킷에 대한 응답이 필수적이므로 시간이 지연되고, 속도가 느려지며, CPU의 소모량이 많음 -> 이는 곧 성능의 저하로 이어짐
-
따라서 TCP는 1:1통신, 이메일, 파일 전송 등 속도나 연속성보다는 신뢰성 있는 전송이 중요할 때에 사용하는 프로토콜
UDP
- User Datagram Protocol의 약자
- 독립적인 패킷(데이터그램)을 단위로 하여 통신하는 규약
- TCP와 달리 연결을 위해 할당되는 논리적 경로가 없고, 각각의 패킷이 다른 경로로 전송, 처리되는 비연결형 프로토콜
- 정보의 송수신에 대한 신호 절차가 없고, 최소한의 오류만을 검증하여 패킷의 손실이 상대적으로 많은 편
- TCP와 비교하여 신뢰성 있는 데이터의 전송을 보장할 수 없는 방식
- 장점
- UDP는 굉장히 빠른 속도로 데이터를 전달할 수 있음
- 패킷에 순서나 번호를 부여해 재조립하거나, 흐름제어 혹은 혼잡제어 같은 작업들도 처리하지 않기에 엄청나게 빠른 속도로 데이터를 전송할 수 있음
- 비연결형 서비스로서 1:1 통신 뿐만 아니라 1:N, N:N 통신에서도 쉽게 사용할 수 있음
- 때문에 UDP는 WebRTC를 이용한 실시간 스트리밍을 통해 음성이나 동영상 데이터를 전송하는 등 정보의 신뢰성보다는 실시간성과 연속성, 속도 등이 더 중요한 경우에 널리 사용됨
WebRTC란?
WebRTC(Web Real-Time Communication)는 웹 브라우저 간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API
- 브라우저에서 별도의 소프트웨어 없이 비디오, 음성 및 일반 데이터가 피어간에 실시간으로 전송 가능하게 해주는 오픈 프레임워크
- 보통 브라우저에서 실행할때 JavaScript API를 통해 실행할 수 있어 개발자들로 하여금 쉽게 RTC web app을 실행하는 것이 가능
- W3C와 IETF에서 API레벨과 Protocol 레벨을 표준화함
Reference
TCP/IP
TCP vs UDP
WebRTC란