1. UDP
1-1. UDP에 대해 설명해주세요.
가이드: TCP와 비교해서 UDP의 특성을 설명
TCP 문제점을 해결하기 위해 나온 개념이 UDP(User Datagram Protocol)입니다.
TCP는 전송의 신뢰성은 보장하지만 매번 3-way handshake를 사용하여 Connection을 연결하기 때문에 시간 손실이 발생합니다. 그리고 패킷을 조금만 손실해도 재전송을 해야한다는 문제점이 있습니다.
UDP는 TCP보다 신뢰성이 떨어지지만 전송 속도가 일반적으로 빠른 프로토콜입니다. TCP와 다르게 Connection을 끊은 상태로 통신을 하는, 즉 일방적으로 데이터를 발신하는 비연결성 프로토콜이기 때문입니다. 그리고 순차 전송, 흐름 제어, 혼잡 제어를 하지 않고, UDP 체크섬을 사용하여 에러만 검출합니다. 비교적 데이터의 신뢰성이 중요하지 않은 실시간 스트리밍에서 자주 사용됩니다.
UDP는 데이터그램 방식으로 작동합니다. 데이터그램 메세지 하나는 IP 패킷 하나에 완전히 포함되기 때문에, 애플리케이션이 패킷을 하나 읽을 때마다 메세지 전체가 수신됩니다. 데이터그램은 TCP에서처럼 조각난 상태로 운반되는 경우는 없습니다.
전송 계층(Transport Layer)
end point 간 신뢰성있는 데이터 전송을 담당하는 계층입니다. TCP, UDP는 OSI 7 계층의 4계층인 Transport Layer에 해당합니다.
- 신뢰성: 데이터를 순차적, 안정적인 전달
- 전송: 포트 번호에 해당하는 프로세스에 데이터를 전달
전송 계층이 없다면 결과적으로 데이터 손실이 발생하게 됩니다. 원인으로는 데이터의 순차 전송이 원활하게 되지 않아서(순차 전송), 송수신자 간의 데이터 처리 속도 차이로 인해 수신자가 처리할 수 있는 데이터량을 초과해서(흐름 제어), 네트워크가 혼잡하여 데이터를 받지 못하는 등의 원인이 있습니다.(혼잡 제어)
HTTP3.0
# 조금 더 디테일한 질문
1-2. UDP 체크섬에 대해 설명해주세요.
가이드: UDP 오류 검출의 목적으로 사용되는 체크섬에 대해 설명
UDP는 데이터 전송을 위한 경량화된 프로토콜로서, 오류 검사 기능을 포함하지 않습니다. 그러므로 UDP 데이터그램이 제대로 전달되었는지 확인하기 위해서 UDP 체크섬을 사용합니다.
체크섬은 송신할 세그먼트를 16비트 단위로 나누고, 모두 더한 다음 1의 보수를 취해서 만들어 집니다. 이제 이 체크섬을 세그먼트와 함께 전송합니다.
수신자는 수신된 세그먼트에 대해 동일한 방식으로 체크섬을 만들고, 헤더의 체크섬과 일치 하는지 비교함으로써 수신된 세그먼트의 오류를 검출할 수 있습니다. 만약 오류가 발생한 경우에는 데이터 패킷이 재전송됩니다.
UDP 체크섬은 오류 검사 기능을 제공하기 때문에 데이터의 무결성을 보장할 수 있습니다. 그러나 체크섬은 보안 기능을 제공하지는 않으므로 중요한 데이터의 경우 암호화 등의 추가적인 보안 조치가 필요합니다.
추가로, TCP와 달리 UDP는 오류가 감지되면 자동으로 데이터를 재전송하지 않습니다. 전송 중에 오류가 발생하면 오류를 감지하고 데이터를 다시 보낼지 여부를 결정하는 것은 응용 계층의 몫입니다.
2. 신뢰적 데이터 전송의 원리
2-1. 전송 후 대기 프로토콜이 뭘까요?
가이드: 패킷 송수신 측면에서 설명해보기. 전송 속도에 대해 설명해보기.
전송 후 대기 프로토콜은 Stop-and-Wait 프로토콜로 컴퓨터 네트워크에서 데이터를 안정적으로 전송하기 위한 프로토콜 중 하나입니다.
이 프로토콜은 송신자가 데이터 프레임을 전송하고, 이를 수신자가 받았는지 확인을 기다립니다. 수신자는 데이터 프레임을 받으면 이를 확인 메세지 ACK로 응답합니다. 이후, 송신자는 이 확인 메세지를 받으면 다음 데이터 프레임을 전송합니다.
만약 수신자가 확인 메세지를 보내지 않거나, 송신자가 확인 메세지를 받지 못한 경우 이전 데이터 프레임을 다시 전송합니다.
Stop-and-Wait 프로토콜은 간단하고 구현하기 쉽지만, 데이터의 양이 많거나 전송 거리가 멀어지면 전송 지연 시간이 길어지는 단점이 있습니다. 따라서 더 많은 데이터를 전송하고 전송 시간을 단축하기 위해 Go-Back-N 프로토콜이나 Selective Repeat 프로토콜과 같은 다른 프로토콜이 개발되었습니다.
2-2. 파이프라인 프로토콜이 뭘까요?
가이드: 패킷 송수신 측면에서 설명해보기. 전송 속도에 대해 설명해보기.
네트워크 상에서 데이터 전송 시 충돌을 최소화하면서 효율적인 데이터 전송을 가능하게 하는 프로토콜입니다.
Stop-and-wait 방식의 프로토콜에서는 패킷 전송 후 수신측으로부터 ACK 신호를 받아야만 다음 패킷을 전송할 수 있으나, 파이프라인 프로토콜에서는 여러개의 패킷이 동시에 전송되기 때문에 중간에 대기하지 않고 전송됩니다.
이를 위해 수신측에서는 수신 가능한 최대 데이터 양을 선언하여 전송 측에서는 해당 양만큼의 데이터를 전송합니다. 이를 통해 전송 지연 시간을 최소화하고 대역폭 효율을 향상시킬 수 있습니다.
# 조금 더 디테일한 질문
2-3. 슬라이딩 윈도우가 뭘까요?
가이드: 패킷 전송을 언급하며 설명
슬라이딩은 패킷을 순서번호에 따라 순차적으로 전송할 때 윈도우가 옆으로 이동한다는 의미를 뜻합니다.
윈도우는 파이프라인 프로토콜에서 ACK를 받지 않고 전송할 수 있는 패킷 순서번호 범위를 나타냅니다.
이 두가지 의미를 합쳐서 슬라이딩 윈도우라고 합니다. Go Back N 프로토콜을 슬라이딩 윈도우 프로토콜이라고 부릅니다.
슬라이딩 윈도우는 네트워크 통신에서 데이터를 전송할 때 사용되는 방식 중 하나입니다. 이 방식은 송신측과 수신측 사이에서 데이터를 안정적으로 전송하고 흐름 제어를 수행하기 위해 사용됩니다.
송신자와 수신자 간에 정해진 크기의 윈도우가 있으며, 송신자는 윈도우 크기 내에서 데이터를 전송할 수 있습니다. 수신 측은 윈도우 크기를 조절하여 데이터를 안정적으로 수신할 수 있습니다. 이를 통해 데이터 전송 시간을 단축하고, 대역폭을 효과적으로 활용할 수 있습니다.
추가로 전송되는 데이터에 일련번호를 할당하고, 수신자는 일련번호를 기반으로 전송되지 않은 데이터를 다시 요청합니다.
조금 더 디테일 한 설명
슬라이딩 윈도우에서 송신측과 수신측 사이에서 통신을 위한 버퍼(윈도우)를 설정합니다. 송신측은 이 버퍼 안에 전송할 데이터를 저장하며, 수신측은 이 버퍼 안에서 수신할 데이터를 저장합니다. 송신측이 ACK 응답을 받으면 윈도우를 이동시켜 가면서 데이터를 전송하게 됩니다. 만약 수신측에서 전송된 데이터 중 일부가 손실되었다면, 송신측은 재전송을 요청하고 윈도우를 다시 설정하여 데이터를 재전송합니다.
2-4. Go Back N에 대해 설명해주세요.
가이드: 송신자 수신자 응답 흐름 설명해보기
Go Back N은 네트워크 통신에서 오류 복구를 위한 기법 중 하나로, 슬라이딩 윈도우 방식을 확장한 방식입니다. 이 방식에서는 송신측에서 일정한 크기의 윈도우를 설정하고, 이 윈도우 안에서 전송되는 데이터에 대한 ACK를 수신측에서 받게 됩니다.
송신자는 패킷 수신에 대한 확인 응답을 받지 않고, 최대 N개 만큼 패킷을 전송할 수 있습니다. 이 N이란 범위를 윈도우로 표현합니다.
패킷이 올바르게 수신되면 이 윈도우를 앞으로 이동시켜 다음 패킷을 전송합니다.(슬라이딩 윈도우)
송신측에서는 전송했지만, 아직 확인 응답을 받지 못한 패킷에 대해 타이머를 작동 시킵니다. 만약 패킷이 손실되어 타임아웃이 발생하면 해당 패킷부터 N개의 패킷들을 재전송합니다.
수신측에서는 올바르게 수신한 패킷에 대해 누적 확인 응답을 보내어 해당 패킷까지 올바르게 수신되었음을 송신자에게 알립니다. 만약 수신측에서 잘못된 데이터를 받은 경우, 해당 데이터 이후에 전송된 모든 데이터를 재전송합니다. 모든 데이터를 재전송하기 때문에 복잡도가 높아진다는 단점이 있습니다.
Go Back N 방식을 사용하면 전송 중 발생하는 오류나 손실 상황 등에 대응하여 데이터를 안전하게 전송할 수 있다는 장점이 있습니다. 하지만 복잡도가 높기 때문에 전송량이 많은 경우 전송 속도가 느려진다는 단점이 있습니다.
2-5. Selective Repeat에 대해 설명해주세요.
가이드: 송신자 수신자 응답 흐름 설명해보기
Selective Repeat은 Go Back N과 유사한 오류 복구 기법 중 하나로, 슬라이딩 윈도우 방식을 기반으로 합니다.
송신자는 패킷 수신에 대한 확인 응답을 받지 않고, 최대 N개 만큼 패킷을 전송할 수 있습니다. 이 N이란 범위를 윈도우로 표현합니다.
패킷이 올바르게 수신되면 이 윈도우를 앞으로 이동시켜 다음 패킷을 전송합니다.(슬라이딩 윈도우)
송신측과 수신측 사이에서 일정한 크기의 윈도우를 설정하고, 이 윈도우 안에서 전송되는 데이터에 대한 ACK를 수신측에서 받게 한다는 점에서 Go Back N과 동일합니다. 하지만 오류가 발생한 데이터에 대해서만 재전송을 수행하므로 Go Back N 방식에 비해 효율적입니다. 패킷마다 논리적 타이머가 존재하기 때문에 선택적인 재전송이 이루어 집니다.
수신측은 윈도우 범위내의 순서번호를 가지는 패킷을 수신하면 순서 번호가 올바르지 않더라도 버퍼링합니다. 만약, 수신한 패킷의 번호가 수신 윈도우의 베이스와 일치하면 해당 패킷부터 연속된 패킷을 상위 계층으로 보내고 윈도우를 이동시킵니다. 그리고 해당 패킷에 대한 ACK를 송신측으로 보내서 송신 윈도우 이동이 되도록 합니다.
Selective Repeat 방식을 사용하면 전송 중 발생하는 오류나 손실 상황 등에 대응하여 데이터를 안전하게 전송할 수 있다는 장점이 있습니다. 또한 Go Back N 방식에 비해 효율적인 재전송이 가능하기 때문에 전송 속도가 빠르다는 장점이 있습니다.
참고자료
질문이나 잘못된 점은 댓글로 남겨주세요 :)💖
'CS > [JSCODE] 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크/스터디] IP Address (0) | 2023.05.07 |
---|---|
[컴퓨터 네트워크/스터디] IP Address (0) | 2023.05.01 |
[컴퓨터 네트워크/스터디] TCP (0) | 2023.04.24 |
[컴퓨터 네트워크/스터디] HTTP, HTTPS, DNS (2) | 2023.04.17 |
[컴퓨터 네트워크/스터디] 네트워크 레이어 (0) | 2023.04.13 |
댓글