[네트워크] TCP & UDP
cs-study에서 스터디를 진행하고 있습니다.
전송 계층 (Transport Layer)
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당한다. 이 계층에서는 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 수행한다. 전송 계층에서 데이터를 전달하기 위해 사용하는 프로토콜이 있는데, 그 프로토콜들이 오늘 설명할 TCP와 UDP다.
TCP
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립하기 위해 연결을 설정하여 신뢰성을 보장하는 연결형 서비스다. TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 패킷을 안정적으로 순서대로 에러 없이 교환할 수 있게 된다.
TCP의 특징
- 연결형 서비스로 가상 회선 방식을 제공한다.
- 3-way handshake 과정을 통해 연결을 설정한다.
- 4-way handshake 과정을 통해 연결을 해제한다.
- 흐름 제어
- 송신자의 데이터 전송 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 기법이다. 흐름 제어 기법 중 하나인 슬라이딩 윈도우를 사용해 수신자의 버퍼에 남은 공간만큼 데이터를 전송받는다.
- 혼잡 제어
- 네트워크 내의 패킷 수가 넘쳐 네트워크를 혼잡하게 만드는 것을 방지하는 기법이다.
- 신뢰성이 높은 전송
- 송신 측에서 보낸 패킷을 수신 측에서 받지 못하면 재전송한다.
- Triple-Duplicate-ACK-based retransmission: 송신 측에서 여러 개의 세그먼트를 전송했는데, 수신된 세그먼트의 순서가 틀렸을 경우 수신 단말이 다시 보내 달라는 의미의 ACK을 보낸다. 송신 측에서 동일한 ACK을 3개 이상 받았을 경우 해당 패킷은 손실됐다고 판단해 재전송을 요청한다.
- Timeout-based retransmission: 송신자는 일정 시간동안 수신자로부터 ACK를 받지 못하면 손실됐다고 판단해 재전송을 요청한다.
- 송신 측에서 보낸 패킷을 수신 측에서 받지 못하면 재전송한다.
- 점이중, 점대점 방식
- 점이중: 데이터 전송의 흐름 방향이 항상 양 방향으로 동시에 전송할 수 있다.
- 점대점: 각 연결이 정확히 2개의 종단점을 가지고 있다.
TCP의 단점
- 데이터로 보내기 전에 반드시 연결이 형성되어야 한다.
- 1:1 통신만 가능하다.
- 고정된 통신 선로가 최단선(네트워크 길이)이 아닐 경우 상대적으로 UDP보다 데이터 전송 속도가 느리다.
TCP 헤더 정보
TCP 제어 비트 (Flag Bit) 정보
UDP
데이터를 데이터그램 단위로 처리하는 프로토콜 데이터 그램: 독립적인 관계를 지니는 패킷
UDP는 전송 계층의 비연결 지향적 프로토콜이다. 비연결 지향적이란 연결을 위해 할당되는 논리적인 경로가 없고 각각의 패킷은 다른 경로로 전송되어 독립적인 관계를 지니게 되는 것을 말한다. 이렇게 데이터를 서로 다른 경로로, 독립적으로 처리하는 프로토콜을 UDP라고 한다.
UDP를 왜 사용할까?
- TCP는 신뢰성을 보장하지만 연결을 통해 시간 손실이 발생할 수 있다.
- TCP는 패킷이 누락되면 재전송을 해야 한다.
- 사진 또는 영상은 데이터의 일부가 누락되어도 문제가 발생하지 않기 때문에 TCP는 합리적인 방법이 되지 못한다.
- 위와 같은 경우 전송 속도가 빠른 UDP를 사용한다.
UDP의 특징
- 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다.
- 정보를 주고 받을 때, 정보를 보내거나 받는다는 신호 절차를 거치지 않는다.
- 신뢰성 없는 데이터를 전송한다.
- 패킷 관리가 필요하다.
- 패킷 오버헤드가 적어 네트워크 부하가 감소된다는 장점이 있다.
- 상대적으로 TCP보다 전송 속도가 빠르다.
UDP의 단점
- 데이터의 신뢰성이 없다.
- TCP와는 다르게 데이터를 쪼개 주지 않아 애플리케이션 단에서 패킷을 쪼개야 한다.
UDP 헤더 정보
TCP와 UDP 비교
공통점
- 포트 번호를 이용하여 주소를 지정한다.
- 데이터 오류 검사를 위한 체크섬이 존재한다.
차이점
예상 면접 질문 및 답변
TCP란?
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립하기 위해 연결을 설정하여 신뢰성을 보장하는 연결형 서비스다. TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 패킷을 안정적으로 순서대로 에러 없이 교환할 수 있게 된다.
TCP의 특징은?
연결형 서비스로 가상 회선을 제공하고, 흐름 제어 및 혼잡 제어 역할을 한다. 또한, 신뢰성이 높은 전송을 하며 점이중, 점대점 방식을 지원한다.
TCP의 단점은?
데이터로 보내기 전에 반드시 연결이 형성되어야 하며, 1:1 통신만 가능하다. 또한, 고정된 통신 선로가 최단선(네트워크 길이)이 아닐 경우 상대적으로 UDP보다 데이터 전송 속도가 느리다.
UDP란?
UDP는 전송 계층의 비 연결 지향적 프로토콜이다. 비연결 지향적이란 연결을 위해 할당되는 논리적인 경로가 없고 각각의 패킷은 다른 경로로 전송되어 독립적인 관계를 지니게 되는 것을 말한다. 이렇게 데이터를 서로 다른 경로로, 독립적으로 처리하는 프로토콜을 UDP라고 한다.
UDP가 어디에 사용되고, 왜 사용되는가?
UDP는 비연결형 서비스이기 때문에, 연결을 설정하고 해제하는 과정이 존재하지 않는다. 서로 다른 경로로 독립적으로 처리함에도 패킷에 순서를 부여하여 재조립을 하거나 흐름 제어 또는 혼잡 제어와 같은 기능도 처리하지 않기에 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있다. 다만 신뢰성 있는 데이터의 전송을 보장하지는 못하므로 신뢰성보다는 연속성이 중요한 실시간 스트리밍 서비스에 자주 사용된다.
UDP의 단점은?
데이터의 신뢰성이 없고, TCP와는 다르게 데이터를 쪼개주지 않아 애플리케이션 단에서 직접 패킷을 쪼개 일일이 관리해야 하는 단점이 있다.
'스터디 > CS 스터디' 카테고리의 다른 글
[운영체제] Deadlock (0) | 2021.11.28 |
---|---|
[운영체제] 뮤텍스와 세마포어 (0) | 2021.11.27 |
[네트워크] TLS & SSL Handshake (2) | 2021.11.23 |
[운영체제] CPU 스케줄링 (0) | 2021.11.19 |
[운영체제] IPC (1) | 2021.11.18 |
댓글