TCP와 UDP는 전송 계층(Transport Layer)에 속하며, 네트워크 애플리케이션을 설계할 때 둘 중 하나를 선택해야한다.
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 데이터의 전달을 담당한다.
이러한 데이터 전달을 위해 사용하는 프로토콜이 TCP와 UDP이다.
UDP (User Datagram Protocol, 사용자 데이터그램 프로토콜)
UDP는 데이터를 데이터그램 단위로 처리하며 비연결형, 신뢰성 없는 전송 프로토콜이다.
UDP는 흐름제어, 오류제어 또는 손상된 데이터그램의 수신에 대한 재전송을 하지 않는다. 모두 사용자 프로세스의 몫이다.
UDP가 행하는 것은 포트를 사용하여 IP 프로토콜에 인터페이스를 제공하는 것이다.
종종 클라이언트는 서버로 짧은 요청을 보내고, 짧은 응답을 기대한다.
만약 요청 또는 응답이 손실된다면, 클라이언트는 time out 되고 다시 시도하면 된다.
코드가 간단할 뿐만 아니라 TCP처럼 초기 설정에서 요구되는 프로토콜보다 작은 메시지가 요구된다.
DNS(Domain Name Service)는 UDP를 사용한다.
어떤 호스트 네임의 IP 주소를 찾을 필요가 있는 프로그램은 DNS 서버로 호스트 네임을 포함한 UDP 패킷을 보낸다.
이 서버는 호스트의 IP 주소를 포함한 UDP 패킷으로 응답한다.
TCP처럼 연결을 유지할 필요가 없고, 요청에 대한 손실은 응용 계층에서 제어가 가능하다.
UDP의 결정적인 장점은 데이터의 신속성이다.
따라서 주로 실시간 방송과 온라인 게임에서 사용된다.
TCP (Transmission Control Protocol, 전송 제어 프로토콜)
대부분의 인터넷 응용 분야들은 신뢰성과 순차적인 전달을 필요로 한다.
UDP로는 이를 만족시킬 수 없으므로 TCP가 탄생하게 되었다.
TCP는 신뢰성이 없는 인터넷을 통해 종단간 신뢰성 있는 바이트 스트림을 전송하도록 설계되었다.
송신자와 수신자 모두가 소켓이라고 부르는 종단점을 생성함으로써 이루어진다.
모든 TCP 연결은 전이중(full-duplex), 점대점(point to point) 방식이다.
전이중이란 전송이 양방향으로 동시에 일어날 수 있음을 의미하며, 점대점은 각 연결이 정확히 2개의 종단점을 가지고 있음을 의미한다.
TCP는 멀티캐스팅이나 브로드캐스팅을 지원하지 않는다.
TCP는 흐름제어와 혼잡제어를 제공한다.
흐름제어란 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것이다.
송신하는 곳에서 감당되지 않는 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 발생하는 것을 막는다.
혼잡제어란 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 패킷 오버플로우는 방지하는 것이다.
정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.
TCP는 속도보다 신뢰성이 중요하다고 판단되는 곳에서 사용한다.
따라서 SMTP(전자메일), Telnet(원격 터미널 접속), HTTP(웹), FTP(파일 전송) 등에서 사용된다.
'CS > 네트워크' 카테고리의 다른 글
HTTP와 HTTPS (0) | 2022.09.16 |
---|---|
GET과 POST의 차이 (0) | 2022.09.15 |
HTTP (0) | 2022.09.12 |
TCP 3-way handshake & 4-way handshake (0) | 2022.09.06 |
OSI 7계층 (0) | 2022.09.04 |