- UDP 동작
- UDP가 하는일
1) 상위 계층 데이터 전송 : 어플리케이션이 메시지를 UDP 소프트웨어로 송신함
2) UDP 메시지 캡슐화 : 상위 계층 메시지는 UDP 메시지의 데이터 필드로 캡슐화 됨
3) 메시지를 IP로 전달함 : UDP 메시지가 전송을 위해 IP로 전달
- UDP가 하지 않는 일
: 데이터를 송신하기 전에 연결을 수립하는 것. UDP는 단지 데이터를 패키징하여 송신함
: 데이터를 수신했다는 것을 알리는 승인을 송신하는 것
: 메시지가 목적지에 도달할 것이라고 보장하는 것
: 손실 메시지를 탐지하여 재전송하는 것
: 데이터가 송신한 순서대로 수신되는 것
: 장비 간의 혼잡이나 흐름을 처리하는 방법을 제공하는 것
- 왜 일부 TCP/IP 애플리케이션이 UDP를 사용하는지?
1) 완전성보다 성능이 중요한 데이터
: 보통 멀티미디어 애플리케이션, 인터넷으로 스트리밍 비디오를 볼때 스트림이 빠르게 시작되고 지속적으로 전송되는 것이다. 몇몇 데이터 손실은 중요하지 않고 손실 데이터그램을 재전송 해도 이미 쓸모 없게 됨
: 즉 TCP의 손실 데이터 재전송이 가치가 없는 경우
2) 길이가 짧은 데이터
: 단순히 프로토콜이 애플리케이션 계층에서 IP 데이터그램 자체의 잠재적인 손실 문제를 처리할 수 있고 TCP 기타 기능이 필요 없는 경우
: 멀티캐스트, 브로드캐스트 전송을 필요로 하는 어플리케이션(TCP 에서는 지원하지 않음)
- TCP
- TCP 기능
1) 주소지정/다중화
2) 연결 수립, 유지, 종료
: TCP는 장비가 데이터를 이동시킬 수 있는 연결을 협상하고 수립하기 위해 따라야 할 절차 모음을 제공함
3) 데이터 처리와 패키징
: 상위 계층에서 데이터를 송신 할 수 있는 방법을 제공
4) 데이터 전송
5) 신뢰성과 전송 품질 서비스 제공
: TCP 애플리케이션은 송신된 데이터가 목적지에 도달하지 않거나 잘못된 순서로 나타나는것을 걱정안해도 됨
6) 흐름 제어와 혼잡 회피 기능 제공
: 두 장비 간의 데이터 흐름을 제어하고 관리할 수 있도록 함
- TCP가 수행하지 않는 기능
1) 애플리케이션 사용 명시
: TCP는 전송 프로토콜만 정의, 애플리케이션이 어떻게 TCP를 사용해야 하는지 구체적으로 명시 X
2) 보안 제공
: 전송하는 데이터의 인증이나 프라이버시를 보장하기 위한 어떤 방법도 제공 X
3) 메시지 경계 유지
: 데이터를 분리된 메시지가 아니라 연속된 스트림으로 송신함, 한 메시지가 어디서 끝나고 다음 메시지가 어디서 시작하는 지는 애플리케이션에게 달려있음
4) 통신보장
: 목적지에 도달하는것을 보장하는것과 다름, 어떤 문제로 통신이 방해될 경우 TCP가 할 수 있는것은 계속 재전송 밖에 없음, 그리고 TCP가 의존하는 IP는 신뢰성이 없음
- TCP 특성
1) 연결형 : 장비가 데이터를 송신하기전에 먼저 연결을 수립하는것을 요구함(장비간의 서킷과 비슷)
2) 양방향 : 데이터를 양방향으로 송신
3) 다중 연결과 종단 식별 : 연결된 두 장비의 소켓 쌍은 종단을 식별함, 여러 IP 장비로도 동시에 열 수 있음
4) 신뢰성 : 모든 데이터가 목적지에 도달 할 수 있도록 송신, 수신한 데이터를 추적하기 때문에 신뢰성이 있음
5) 승인
: 신뢰성을 제공하는 데 핵심이 되는 특성은 TCP가 모든 전송에 대한 승인 메시지를 보내는 것임(수신 여부 확인 가능)
6) 스트림 기반
: 대부분 하위 계층 프로토콜은 상위 계층 프로토콜이 블록 형태로 데이터를 보내도록 요구함(EX. IP, UDP)
: 반면 TCP는 어플리케이션이 연속적인 데이터 스트림을 송신 할 수 있도록 함(블록을 나눌 걱정 X)
7) 구조화되지 않은 데이터
: 스트림 내의 데이터 요소를 구분하기 어려움
8) 데이터 흐름관리
- 견고성 원칙(robustness principle)
: "자신이 수행하는 작업은 보수적으로, 다른 사람에게서 무언가를 받을 때는 관대하게"
: TCP 표준은 TCP가 견고성 원칙을 따른다고 설명함
: 이 원칙은 비정상적인 상황에서 추가적인 보호를 제공할 수 있도록 함
- TCP 데이터 취급과 처리
: TCP는 어플리케이션이 고정된 크기의 메시지가 아닌 바이트 스트림을 송신할 수 있도록 설계됨
: 이러한 특징은 다양한 어플리케이션에 응용될 수 있는 유연성 제공
: 이들 바이트는 세그먼트라는 메시지로 패키징하는 일을 담당함
- TCP 데이터 패키징 : 세그먼트
: TCP는 어플리케이션에서 오는 스트림을 IP에서 보낼 수 있는 분리된 메시지로 나눠야 함
-> 이 메시지를 TCP 세그먼트라고 부름
: IP는 TCP 세그먼트를 IP 데이터그램에 넣은 뒤 목적지 장비로 전송함
: 수신자는 세그먼트의 패키징을 풀어 TCP에게 전달하며 TCP는 그 세그먼트를 바이트 스트림으로 변환 하여 전달됨
: TCP 계층은 애플리케이션 프로세스 스트림에서 받는 데이터를 쌓아 놓은 다음 정기적으로 IP로 보낼 세그먼트를 구성함
: 세그먼트의 길이를 제어하는 주된 인자는 2개임
1) 세그먼트 크기에는 전반적으로 제약이 있음(IP 계층에서 불필요한 단편화를 막기위해서)
: TCP에서는 최대 세그먼트 크기(MSS)라는 인자가 크기를 제한 함
2) 연결이 수립되면 각 장비가 어떤 시간에든지 받을 수 있는 데이터의 크기를 상대방에게 알리도록 설계됨
- TCP 데이터 식별 : 순서 번호
: TCP가 APP 에서 오는 데이터를 옥텟 스트림으로 간주함
->프로토콜 동작에 있어서 중요함!(데이터 식별과 관련있음)
: TCP는 신뢰성이 있기 때문에 데이터를 추적할 필요가 있음
: 만약 블록형태의 메시지를 전달했다면 쉽게 추적은 가능하지만, 스트림 중심 프로토콜이기 때문에 모든 바이트를 식별해야됨(바이트 수준의 식별)
: 각 데이터 바이트는 순서 번호를 할당 받아 데이터를 추적하는데 쓰임
: 순서 번호는 슬라이딩 윈도우 체계(TCP가 신뢰성과 데이터 흐름 제어를 제공함)를 구현하는데 필수적임
- TCP 슬라이딩 윈도우 승인 체계
: 데이터 관리를 위해 두 요구 사항을 충족시켜야 함
1) 신뢰성 : 송신한 데이터가 실제로 목적지에 도달하는지를 보장하고 도달하지 않은 경우 탐지하여 재송신함
2) 데이터 흐름 제어 : 데이터를 수신하는 장비가 처리할 수 있는 속도로 데이터 송신율을 관리함
: 이를 위해 TCP는 슬라이딩 윈도우 승인 체계를 사용함
- 신뢰할수 없는 프로토콜의 문제 : 피드백이 없음
: IP 같은 프로토콜은 흐름제어 기능을 제공 안함, 도달 여부를 알 방법이 전혀 없음
- PAR을 통한 기본적인 신뢰성 제공
: 특정 시간 동안 승인이 오지 않을 경우 송신자는 메시지를 재전송 할 수 있음
: 이 방법을 재전송을 사용하는 긍정 승인(PAR, positive acknowledgment with retransmission)이라 함
: PAR은 비교적 작은 양의 데이터를 교환하는데 쓰임
: 한 가지 단점은 첫 메시지에 승인을 받기 전까지 둘째 메시지를 보낼 수 없음(느리게 동작시키는 원인)
-> 송신하는 각 메시지에 식별 정보를 추가하여 여러 메시지를 동시에 송신함으로써 해결함
-> 송신 제한값을 사용하면 흐름 제어 기능도 제공 가능
- 스트림 중심 슬라이딩 윈도우 승인 체계
: 위에 그림은 기본 PAR 방법을 개선한 것임
: 각 메시지마다 식별 번호가 있으며 개별적으로 승인 될 수 있기 때문에 여러 메시지가 송신 가능
: 정기적으로 송신 제한 인자를 전송하여 데이터 흐름을 제어함
: TCP 슬라이딩 윈도우 체계는 개선된 PAR 시스템을 수정한 것임 (TCP의 스트림 중심 기능을 지원)
: 각 장비는 바이트 스트림의 상태를 추적함
: 이를 위해 전체 바이트 스트림을 4가지로 나뉨
1) 송신했고 승인이 완료된 바이트
2) 송신했지만 아직 승인이 되지 않은 바이트
3) 아직 송신하지 않았지만 수신자가 받을 준비를 마친 바이트
4) 아직 송신하지 않았곻 수신자가 받을 준비가 안된 바이트
- 송신 윈도우와 사용 가능 윈도우
: 송신 윈도우는 전체 TCP 슬라이딩 윈도우 체계의 핵심임
: 송신 윈도우는 장비가 한 시점에 송신할 수 있는 최대 승인받지 않은 데이터의 수임
: 사용 가능 윈도우는 송신 윈도우중에서 현제 송신이 가능한 바이트의 수임
: 사용 가능 윈도우의 크기는 송신 윈도우에서 송신을 마쳤지만 아직 승인받지 않은 바이트의 수를 뺀 값과 동일
- 송신 윈도우 슬라이딩
: 특정 바이트 범위에 대한 승인을 받은 장비는 바이트들이 성공적으로 수신했다는것을 인지할 수 있음
: 장비는 송신했지만 아직 승인되지 않은 바이트를 -> 송신했고 승인이 완려된 바이트 범주로 이동 시킬 수 있음
: 그러면 송신 윈도우가 오른쪽으로 이동하게 됨
3부에서 이어서 작성