-
TIL-2024.04.01 - Network - TCP & UDP> 기초/백그라운드 2024. 4. 1. 23:29
질문:
- TCP와 UDP는 무엇인가?
- 두개의 차이점은 무엇인가?
배경:
- 네트워크 계층들 중 전송 계층에서 사용하는 프로토콜
- 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 데이터의 전달을 담당
- 데이터를 보내기 위해 사용하는 2개의 프로토콜 TCP & UDP
TCP (Transmission Control Protocol):
- 연결 지향형 프로토콜 (통신하기 전에 연결을 설정하고, 통신이 완료되면 연결을 해제).
- 신뢰성 있는 데이터 전송을 보장 (데이터를 순차적으로 보내고, 손실된 데이터를 재전송하고, 중복된 데이터를 제거).
- 흐름 제어(Flow Control)와 혼잡 제어(Congestion Control) 기능을 제공하여 네트워크 혼잡을 방지하고 효율적인 통신을 유지.
- 대표적으로 웹 브라우저와 웹 서버 간의 통신, 이메일 전송 등에 사용.
- TCP는 데이터의 정확성과 순서가 중요한 애플리케이션에 사용 (예를 들어, 웹 브라우징, 이메일, 파일 전송 등에서 사용).Q) 패킷(Packet)이란?
더보기인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 합니다.
Q) TCP는 패킷을 어떻게 추적 및 관리하나요?
더보기위에서 데이터는 패킷단위로 나누어 같은 목적지(IP계층)으로 전송된다고 설명하였습니다. 예를 들어 한줄로 서야하는 A,B,C라는 사람(패킷)들이 서울(발신지)에서 출발하여 부산(수신지)으로 간다고 합시다. 그런데 A,B,C가 순차적으로 가는 상황에서 B가 길을 잘못 들어서 분실되었다고 합시다. 하지만 목적지에서는 A,B,C가 모두 필요한지 모르고 A,C만 보고 다 왔다고 착각할 수 있습니다. 그렇기 때문에 A,,B,C라는 패킷에 1,2,3이라는 번호를 부여하여 패킷의 분실 확인과 같은 처리를 하여 목적지에서 재조립을 합니다. 이런 방식으로 TCP는 패킷을 추적하며, 나누어 보내진 데이터를 받고 조립을 할 수 있습니다.
TCP 프로토콜 모음:
- HTTPS (HyperText Transfer Protocol Secure):
- HTTPS는 HTTP의 보안 버전으로, 데이터를 암호화하여 보안을 강화한 프로토콜입니다.
- TCP 위에서 동작하며, 일반 HTTP와 마찬가지로 웹 서버와 클라이언트 간의 통신을 제공합니다. 다만 데이터 전송이 암호화되어 있어 보안이 강화됩니다.
- FTP (File Transfer Protocol):
- FTP는 파일을 서버와 클라이언트 간에 전송하기 위한 프로토콜입니다.
- TCP 위에서 동작하며, 파일을 업로드하고 다운로드하는 데 사용됩니다.
- SMTP (Simple Mail Transfer Protocol):
- SMTP는 이메일 전송을 위한 프로토콜입니다.
- TCP 위에서 동작하며, 이메일 클라이언트가 이메일 서버로 이메일을 보내는 데 사용됩니다.
- POP3 (Post Office Protocol version 3):
- POP3는 이메일 클라이언트가 서버에서 이메일을 가져오기 위한 프로토콜입니다.
- TCP 위에서 동작하며, 이메일 서버로부터 이메일을 다운로드하는 데 사용됩니다.
- IMAP (Internet Message Access Protocol):
- IMAP는 이메일 클라이언트가 이메일 서버와 상호 작용하는 데 사용되는 프로토콜입니다.
- TCP 위에서 동작하며, 이메일 서버에서 이메일을 관리하고 동기화하는 데 사용됩니다.
UDP (User Datagram Protocol):
- 비연결 지향형 프로토콜 (통신하기 전에 연결을 설정하지 않고, 연결을 유지 안함)
- 신뢰성 있는 데이터 전송을 보장안함 (데이터를 전송하고, 받는 측에서 패킷의 유효성을 확인하여 데이터 손실이나 패킷의 순서가 바뀜)
- TCP보다 속도가 빠르고 오버헤드가 적음.
- 실시간 스트리밍, 온라인 게임, DNS(Domain Name System) 조회 등 신속한 데이터 전송이 중요한 응용 프로그램에 주로 사용.
- UDP는 속도와 실시간성이 중요한 애플리케이션에 사용 (예를 들어, 온라인 게임, 음성 및 비디오 통화, DNS 등에서 사용)
UDP 프로토콜 모음:
- DNS (Domain Name System):
- DNS는 호스트의 도메인 이름을 IP 주소로 변환하거나, 그 반대로 IP 주소를 도메인 이름으로 변환하는 데 사용됩니다.
- UDP를 사용하여 호스트 간에 DNS 쿼리와 응답을 전송합니다.
- DHCP (Dynamic Host Configuration Protocol):
- DHCP는 네트워크에서 호스트에게 IP 주소 및 관련 구성 정보를 동적으로 할당하는 데 사용됩니다.
- 호스트가 네트워크에 연결될 때 DHCP 서버에게 요청을 보내고, DHCP 서버는 UDP를 사용하여 해당 요청에 응답합니다.
- TFTP (Trivial File Transfer Protocol):
- TFTP는 파일을 전송하기 위한 간단한 프로토콜로, UDP를 사용하여 파일을 전송합니다. 주로 부팅 이미지를 네트워크로 전송하는 데 사용됩니다.
- VoIP (Voice over Internet Protocol):
- VoIP는 음성 통화를 인터넷을 통해 전송하는 기술로 UDP를 사용합니다. 음성 데이터는 실시간으로 전송되어야 하므로 UDP의 속도와 적은 오버헤드가 유용합니다.
- IPTV (Internet Protocol Television):
- IPTV는 인터넷을 통해 텔레비전 콘텐츠를 제공하는 서비스로, UDP를 사용하여 비디오 및 오디오 데이터를 전송합니다.
차이점:
- 연결 지향성(Connection-Oriented vs Connectionless):
- TCP는 연결 지향형 프로토콜. 통신하기 전에 세션을 설정하고, 데이터 전송 후에는 세션을 종료. 이는 데이터가 보내지기 전에 목적지와의 연결이 확립되어야 한다는 의미.
- UDP는 연결이 없는 프로토콜. 데이터를 보내기 전에 목적지와의 연결을 설정하지 않으며, 데이터를 전송하고 나면 추가적인 확인이나 연결 해제가 필요안함. - 신뢰성 (Reliability):
- TCP는 신뢰성 있는 데이터 전송을 제공. 데이터 전송 시에 에러 확인, 재전송 및 흐름 제어를 수행하여 데이터가 손실되지 않고 순서대로 전달됨을 보장.
- UDP는 데이터를 전송하고 나면 그에 대한 어떠한 확인도 받지 않음 - 헤더 크기 (Header Overhead):
- TCP는 헤더 크기가 상대적으로 큼. TCP 헤더에는 데이터 전송에 필요한 다양한 정보와 제어 정보가 포함.
- UDP는 헤더 크기가 작음. TCP보다 간단한 헤더 구조. - 전송 속도 (Transmission Speed):
- TCP는 신뢰성과 흐름 제어를 위해 많은 오버헤드가 발생하기 때문에 전송 속도가 상대적으로 느림.
- UDP는 추가적인 오버헤드가 없기 때문에 전송 속도가 더 빠름. - 사용 사례 (Use Cases):
- TCP는 파일 전송, 이메일 전송, 웹 브라우징 등 신뢰성이 중요한 애플리케이션에 적합.
- UDP는 실시간 스트리밍, 음성 통화, 온라인 게임 등에서 신속한 데이터 전송이 우선시되는 경우에 적합.
답변:
1. TCP와 UDP는 무엇인가 ?
- TCP와 UDP는 OSI 7 계층 중, 전송 계층 즉, 데이터 전달을 담당하는 프로토콜.
- TCP 는 연결지향형 프로토콜로, 연결을 유지하고 통신이 완료되어 연결을 유지안하는 프로토콜
- UDP 는 비연결지향형 프로토콜로, 통신하기 전 연결을 설정 및 유지하지 않은 프로토콜
2. TCP와 UDP의 차이점은 무엇인가?
크게 5개의 차이가 존재하며 각각은 아래와 같다.
차이점 TCP UDP 연결 지향형 연결 지향형 비연결 지향형 데이터의 신뢰성 신뢰성 있는 데이터 제공
재전송 및 흐름제어를 통해 손실 및 순서 보장신뢰성 없는 데이터 제공
데이터를 전송하고나면 확인 없음헤더의 크기 상대적으로 큼 (전송에 필요한 제어 정보) 상대적으로 작음 전송 속도 느림 (신뢰성과 흐름 제어를 위한 오버헤드) 빠름 사용 사례 파일전송, 이메일 전송, Docker RemoteAPI 실시간 스트리밍, 음성통화 등 참고 출처:
https://mangkyu.tistory.com/15 [MangKyu's Diary:티스토리]
'> 기초 > 백그라운드' 카테고리의 다른 글
TIL-2024.04.18 - Basic - Origin & Site (보험) (0) 2024.04.18 TIL-2024.04.17 - Basic - JWT - 1.5 - Token, XSS & CSRF (Refresh Token & Access Token 저장 위치) (0) 2024.04.17 TIL-2024.04.16 - Basic - JWT (JSON Web Token) (0) 2024.04.16 TIL-2024.04.12 - Basic - OOP. 객체지향프로그래밍(OOP) (0) 2024.04.12 TIL-2024.04.11 - Basic - SOLID (0) 2024.04.11