Chapter 13 전송층 개요
학습목표(OBJECTIVES): 전송 계층에서의 프로세스-대-프로세스 통신을 정의하고 이것과 네트워크 계층에서의 호스트 대 호스트 통신을 비교한다. 전송 계층에서의 주소 메커니즘, 포트 번호, 그리고 여러 가지 목적을 위하여 사용되는 포트 번호의 범위를 정의한다. 전송 계층에서의 패킷화 문제, 그리고 메시지의 캡슐화와 역캡슐화를 설명한다. 전송 계층에서 제공하는 다중화(다-대-일)와 역다중화(일-대-다)를 설명한다. 흐름 제어와 이것이 전송 계층에서 어떻게 동작하는지를 설명한다.
학습목표(OBJECTIVES) (계속): 오류 제어와 이것이 전송 계층에서 어떻게 동작하는지를 설명한다. 혼잡 제어와 이것이 전송 계층에서 어떻게 동작하는지를 설명한다. 전송 계층에서 비연결형과 연결형 서비스, 그리고 유한 상태 기기(FSM: Finite State Machine)를 이용하여 이러한 서비스들이 어떻게 구현되는지를 설명한다. 단순 프로토콜, 정지 대기(Stop-and-Wait) 프로토콜, N-프레임-후퇴(Go-Back-N) 프로토콜, 그리고 선택적 반복(Selective-Repeat) 프로토콜 등 4개의 일반 전송 계층 프로토콜과 응용들의 동작에 대해서 설명한다. 피기배킹(piggybacking) 방법을 이용한 전송 계층에서의 양방향 통신 방식에 대해서 설명한다.
Chapter Outline 13.1 Transport-Layer Services 13.2 Transport-Layer Protocols
13-1 전송층 서비스 2장에서 설명한 것과 같이 전송 계층은 네트워크 계층과 응용 계층 사이에 위치한다. 전송 계층은 응용 계층에게 서비스를 제공할 의무가 있다. 이를 위하여 전송 계층은 네트워크로부터 서비스를 제공받는다. 이 절에서는 전송 계층에서 제공하는 서비스에 대해서 살펴보고, 다음 절에서 여러 가지 전송 계층 프로토콜들의 원리에 대해서 살펴본다.
Topics Discussed in the Section Process-to-Process Communication Addressing: Port Numbers Encapsulation and Decapsulation Multiplexing and Demultiplexing Flow Control Error Control Congestion Control Connectionless and Connection-Oriented Services
네트워크 계층과 전송 계층
전송 계층 서비스 프로세스-대-프로세스 통신 제공 응용계층 엔티티(실행 중인 프로그램)가 서비스 이용 메시지를 적절한 프로세스에 전달 책임
주소 체계 포트 번호 프로세스-대-프로세스 통신 방법 : 클라이언트 / 서버 클라이언트와 서버 프로세스는 같은 이름을 가짐 Daytime client process / daytime server 원격 컴퓨터는 여러 개의 서버 프로그램 실행 로컬 컴퓨터로 여러 개의 클라이언트 프로그램 수행
프로세스 통신을 위해 필요한 사항 로컬 호스트(local host) 로컬 프로세스(local process) 원격 호스트(remote host) 원격 프로세스(remote process)
프로세스 통신에서 포트 번호의 역할 로컬 호스트와 원격 호스트 : IP 주소 프로세스 : 포트 번호 포트 번호 범위 : 0 ~ 65,535 사이 정수 잘 알려진 포트 번호(well-known port number) 임시 포트 번호(ephemeral port number)
포트 번호(Port numbers)
IP 주소 대 포트 번호
ICANN 범위 잘 알려진 포트 : 0 ~ 1,023 등록된 포트(registered port) : 1,024 ~ 49,151 동적 포트(dynamic port) : 49,152 ~ 65,535
잘 알려진(well-known) 포트 번호는 1,024보다 작다. Note 잘 알려진(well-known) 포트 번호는 1,024보다 작다.
Example 13.1 UNIX 시스템에서 잘 알려진 포트들은 /etc/services라는 파일에 저장되어 있다. 이 파일의 각 줄에는 서버의 이름과 잘 알려진 포트 번호가 있다. grep 유틸리티를 사용하여 원하는 응용에 해당하는 줄을 추출할 수 있다. 다음은 TFTP 포트를 보여준다. TFTP는 UDP나 TCP의 69번 포트를 사용한다. 또한 SNMP(24장 참조)는 서로 다른 목적을 위하여 161과 162의 두 개의 포트 번호를 사용한다.
소켓 주소(Socket address) 각 종단 점에서 연결을 만들기 위해 필요한 주소
캡슐화(Encapsulation)와 역 캡슐화(decapsulation)
다중화(Multiplexing)와 역(demultiplexing) TCP/IP Protocol Suite
흐름 제어(FLOW CONTROL) 정보 생산자와 소비자간에 생성율과 소비율의 균형 중요 정보를 생산자로부터 소비자로 전달하는 방법: 밀기(Pushing): 소비자 요구 없이 생산자가 전달 끌기(pulling): 소비자가 요구한 경우만 전달
전송층에서 흐름 제어 흐름 제어 구현은 버퍼(buffer) 이용
Example 13.2 위에서 언급한 내용들은 버퍼가 다 차거나 또는 버퍼에 빈 공간이 생기는 경우의 두 가지 경우에 소비자와 생산자 간에 통신이 필요하다는 것을 의미한다. 만일 두 개체가 단지 한 슬롯의 버퍼를 이용하는 경우에의 통신은 비교적 쉽다. 각각의 전송 계층이 패킷을 저장하기 위하여 하나의 단일 메모리 영역을 사용한다고 가정해보자. 송신 전송 계층의 단일 슬롯이 비게 되면, 송신 전송 계층은 다음 메시지를 전송하라는 신호를 응용 계층에서 전송한다. 반면 수신 전송 계층에서 이러한 단일 슬롯이 비게 되면, 수신 전송 계층은 다음 패킷의 전송을 위하여 송신 전송 계층에게 확인응답(acknowledgement)을 보낸다. 뒷부분에서 살펴보겠지만, 송신측과 수신측에서 단일-슬롯 버퍼를 이용하는 이러한 종류의 흐름 제어는 비효율적이다.
오류 제어 – 신뢰성 제공 훼손된 패킷의 감지 및 폐기 손실되거나 제거된 패킷 추적과 재전송 중복 수신 패킷 확인 및 폐기 손실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷을 버퍼에 저장
전송층에서 오류 제어 Packets Error Control
오류 제어 순서번호(sequence number) 확인응답(ACK) 어떤 패킷을 재전송해야 하는지 어떤 패킷이 중복되었는지 어떤 패킷이 순서에 어긋나게 도착했는지 패킷에 부여된 일련번호 확인응답(ACK) 긍정과 부정 신호
오류 제어에서 순서 번호는 modulo 2m이며, 여기에서 m은 순서 번호의 크기를 비트로 표현한 값이다. Note 오류 제어에서 순서 번호는 modulo 2m이며, 여기에서 m은 순서 번호의 크기를 비트로 표현한 값이다.
흐름과 오류 제어 결합 송신측과 수신측에 각각 버퍼 사용 버퍼에 번호를 부여, 순서번호와 확인응답번호로 사용 원형 또는 선형으로 표현 슬라이딩 윈도우(sliding window) 개념 이용
원형(circular) 형태의 슬라이딩 윈도우
선형 (linear) 형태의 슬라이딩 윈도우
혼잡(congestion) 제어 네트워크로 전송되는 패킷의 수(load)가 네트워크에서 처리할 수 있는 용량을 초과할 때 발생 개방 루프(open-loop) 혼잡 제어: 혼잡 미연 방지 재전송 정책: 재전송 타이머 사용 윈도우 정책: 선택적 반복과 N-프레임 후퇴 윈도우 방식 확인응답 정책: 타이머 이용, 한번에 여러 개 확인응답 폐 루프(colsed-loop) 혼잡 제어 윈도우 크기 가변적으로 이용
비 연결형과 연결형 서비스 비 연결형 서비스 연결형 서비스 메시지를 전송가능한 작은 단편으로 나누어 전송 각각의 조각을 독립적인 단위로 간주 순서에 어긋나서 도착하는 경우 발생 연결형 서비스 먼저 서버와 클라이언트간 연결 설정 데이터 교환 완료후 연결 해제
비 연결형 서비스(Connectionless service)
연결형(Connection-oriented) 서비스 TCP/IP Protocol Suite
FSM으로 표현된 연결형과 비연결형 서비스
13-2 전송 계층 프로토콜 이 절에서는 앞 절에서 설명한 일련의 서비스들을 결합함으로써 전송 계층 프로토콜이 어떻게 만들어지는지를 살펴보고자 한다. 이러한 프로토콜들의 동작을 좀 더 잘 이해할 수 있도록 하기 위하여 먼저 가장 간단한 프로토콜부터 시작하여 점진적으로 좀 더 복잡한 기능을 추가하도록 한다. TCP/IP 프로토콜은 이러한 프로토콜들을 수정하거나 결합한 전송 계층 프로토콜을 이용한다.
Topics Discussed in the Section Simple Protocol Stop-and-Wait Protocol Go-Back-N Protocol Selective-Repeat Protocol Bidirectional Protocols: Piggybacking
단순 프로토콜(Simple protocol) 흐름 제어나 오류 제어가 없는 비연결형 프로토콜
단순 프로토콜에 대한 FSM(finite state machine)
단순 프로토콜은 흐름 제어나 오류 제어를 제공하지 않는 비연결형 프로토콜이다. Note 단순 프로토콜은 흐름 제어나 오류 제어를 제공하지 않는 비연결형 프로토콜이다.
Example 13.3 이 그림은 단순 프로토콜을 이용한 통신의 예를 보여준다. 송신측은 수신측을 고려하지 않고 패킷을 하나 씩 전송한다.
정지-대기 프로토콜 흐름 제어와 오류 제어를 제공하는 연결형 프로토콜 크기가 1인 슬라이딩 윈도우 사용 확인응답이 오기 전까지는 다음 패킷을 전송하지 않음 패킷 훼손확인을 위해 검사합 추가 전송시 타이머 구동, 확인응답 오면 타이머 정지 패킷이 훼손되거나 손실되면 재전송
정지-대기(Stop-and-wait) 프로토콜
정지-대기 프로토콜 순서번호(sequence number) 확인응답번호(acknowledgement number) 중복 수신을 막기 위해 사용 패킷 헤더 부분에 순서번호 필드 추가 x번 순서번호 수신, x+1번 확인응답번호 사용 확인응답번호(acknowledgement number) 수신측에서 받기를 기대하는 다음 패킷 순서번호
Note 정지 대기 프로토콜에서는 송신측으로 하여금 확인응답을 기다리게 함으로써 흐름 제어 기능을 제공하고, 또한 훼손된 패킷을 폐기하고 송신측으로 하여금 타이머가 만료되면 확인응답되지 않은 패킷을 재전송하도록 함으로써 오류 제어 기능을 제공한다.
정지 대기 프로토콜에서는 패킷의 번호를 위해서 1비트의 필드가 필요하다. 순서 번호를 modulo-2 연산으로 이루어진다. Note 정지 대기 프로토콜에서는 패킷의 번호를 위해서 1비트의 필드가 필요하다. 순서 번호를 modulo-2 연산으로 이루어진다.
Note 정지 대기 프로토콜에서 확인응답 번호는 항상 수신하고자 하는 다음 패킷의 순서 번호를 modulo-2 연산 방식으로 계산된 값을 표시한다.
정지 대기 프로토콜에서 모든 연산은 modulo-2 방식이다. Note 정지 대기 프로토콜에서 모든 연산은 modulo-2 방식이다.
정지-대기 프로토콜의 FSM
Example 13.4 그림 13.21은 정지 대기 프로토콜의 예를 보여준다. 패킷 0이 전송되고, 확인응답되었다. 패킷 1은 손실되고, 타임-아웃 후에 재전송되었다. 재전송된 패킷 1은 확인응답되고, 타이머는 중단되었다. 패킷 0은 전송되고 확인응답되었으나 ACK가 손실되었다. 송신측은 패킷 또는 ACK가 손실되었는지를 알 수 없기 때문에 타임-아웃 후에 패킷 0을 재전송하였고, 이 패킷은 확인응답되었다.
Example 13.4
Example 13.5 전송-대기 시스템에서 회선의 대역폭이 1 Mbps이고, 1 비트가 왕복하는 데 20 msec가 걸린다고 가정해보자. 대역폭 지연 곱은 얼마인가? 시스템의 데이터 패킷이 1,000 비트의 길이이면, 링크의 이용율은 얼마인가? Solution 대역폭 지연 곱은 (1 × 106) × (20 × 10–3) = 20,000 비트이다. 즉, 시스템은 송신측에서 수신측으로 데이터가 전송되고 그 반대의 방향으로 확인응답이 돌아오는데 걸리는 시간 동안 20,000 비트를 전송할 수 있다. 그런데 이 시간 동안 시스템은 1,000비트만 전송할 수 있다. 따라서 회선의 이용율은 1,000/20,000 또는 5퍼센트라고 할 수 있다. 이러한 이유로 인하여 고속 또는 긴 지연을 갖는 회선에서 정지 대기 프로토콜을 사용하는 것은 링크의 용량을 낭비하는 것이다.
Example 13.6 예제 13.5에서 확인응답에 대한 고려하지 않고 최대 15개의 패킷을 전송할 수 있는 프로토콜을 이용하면 회선의 이용률은 얼마인가? Solution 대역폭 지연 곱은 여전히 20,000 비트이다. 시스템은 왕복 시간동안 15개의 패킷인 15,000 비트를 전송할 수 있다. 이것은 이용율이 15,000/20,000 또는 75퍼센트라는 것을 의미한다. 물론 훼손된 패킷이 있는 경우에는 패킷의 재전송으로 인하여 이용률은 상당히 낮아질 것이다.
N-프레임-후퇴(Go-Back-N) 프로토콜 전송효율을 높이기 위해 송신측은 확인응답을 기다리는 동안 여러 개의 패킷 전송 가능
N-프레임-후퇴 프로토콜에서 순서 번호는 modulo 2m이며, m은 순서 번호 필드의 비트 수이다. Note N-프레임-후퇴 프로토콜에서 순서 번호는 modulo 2m이며, m은 순서 번호 필드의 비트 수이다.
N-프레임-후퇴 프로토콜에서 확인응답 번호는 누적 값이며 수신되기를 기대하는 다음 패킷의 순서 번호를 의미한다. Note N-프레임-후퇴 프로토콜에서 확인응답 번호는 누적 값이며 수신되기를 기대하는 다음 패킷의 순서 번호를 의미한다.
Go-Back-N에 대한 송신 윈도우
Note 송신 윈도우는 Sf, Sn 그리고 Ssize 등 세 개의 변수를 가지고 최대값이 2m− 1인 가상 상자를 나타내는 추상적인 개념이다.
Note ackNo가 (모듈로 연산 방식으로) Sf와 Sn 사이의 값을 갖는 오류 없는 ACK를 수신하는 송신 윈도우는 하나 이상의 슬롯을 이동한다.
송신 윈도우 이동
Go-Back-N에 대한 수신 윈도우
수신 윈도우는 단지 하나의 변수 Rn을 갖는 크기 1인 가상 상자를 나타내는 추상적인 개념이다. Note 수신 윈도우는 단지 하나의 변수 Rn을 갖는 크기 1인 가상 상자를 나타내는 추상적인 개념이다. 윈도우는 올바른 패킷이 도착하는 경우에 이동하며, 이동은 한 번에 한 슬롯만 이동한다.
Go-Back-N에 대한 FSM
Go-Back-N에 대한 송신 윈도우 크기
N-프레임-후퇴 프로토콜에서 송신 윈도우의 크기는 2m보다 작아야 한다. 반면 수신 윈도우의 크기는 항상 1이다. Note N-프레임-후퇴 프로토콜에서 송신 윈도우의 크기는 2m보다 작아야 한다. 반면 수신 윈도우의 크기는 항상 1이다.
Example 13.7 그림 13.28은 N-프레임-후퇴의 예를 보여준다. 여기에서는 포워드 채널은 신뢰성이 있지만 백워드 채널은 그렇지 않다고 가정한다. 즉, 데이터 패킷은 손실되지 않지만, ACK의 일부는 지연되거나 손실된다. 이 그림은 또한 누적 확인응답이 지연되거나 손실되는 경우에 어떻게 해결하는지를 보여준다.
Example 13.7
Example 13.8 그림 13.29는 패킷이 손실된 경우를 보여준다. 패킷 0, 1, 2, 그리고 3이 전송된다. 그런데 패킷 1이 손실되었다. 수신측에서는 패킷 2와 3을 수신하였지만, 수신된 패킷이 모두 순서에 어긋나게 들어왔기 때문에(수신측은 패킷 1의 수신을 기대) 수신측은 수신한 패킷을 모두 폐기한다. 수신측에서 패킷 2와 3을 수신하면, 수신측은 자신이 패킷 1의 수신을 기다리고 있다는 것을 알리기 위하여 ACK 1을 전송한다. 그렇지만 이러한 ACK는 송신측에서는 쓸모가 없다.
Example 13.8
선택적-반복(Selective-Repeat)의 동작 순서에 어긋난 패킷만 재전송
선택적-반복(Selective-Repeat) 프로토콜에 대한 송신 윈도우
선택적-반복 프로토콜에 대한 수신 윈도우
선택적 반복 프로토콜에서 확인응답 번호는 오류 없이 수신된 패킷의 순서 번호를 나타낸다. Note 선택적 반복 프로토콜에서 확인응답 번호는 오류 없이 수신된 패킷의 순서 번호를 나타낸다.
Example 13.9 송신측에서 패킷 0, 1, 2, 3, 4, 5의 6개의 패킷을 전송한다고 가정해보자. 송신측이 ackNo = 3의 ACK를 수신하였다. 시스템이 GBN 또는 SR을 사용하는 경우에 ACK 수신은 무엇을 의미하는가? Solution GBN을 이용하는 시스템에서는 패킷 0, 1, 2가 훼손되지 않고 잘 수신되었다는 것을 의미하며 수신측에서 패킷 3의 수신을 기다리고 있다는 것을 의미한다. SR을 이용하는 시스템에서는 패킷 3이 훼손되지 않고 잘 도착했다는 것을 의미하며, 다른 패킷에 대해서 더 이상에 대한 정보는 없다.
선택적-반복 프로토콜에 대한 FSM
Example 13.10 이 예제는 패킷 1이 손실된 예제 3.8(그림 13.29)의 경우와 유사하다. 이 경우에 선택적 반복이 어떻게 동작하는지 살펴본다. 그림 13.34는 이 상황을 보여준다. 송신측에서 패킷 0이 전송되고 확인응답되었다. 패킷 1은 손실되었다. 패킷 2와 3은 순서에 어긋나게 도착하였고 확인응답되었다. 타이머가 만료되면, 패킷 1(확인응답되지 않은 유일한 패킷)은 재전송되고 또한 확인응답되었다. 이제 송신 윈도우는 이동한다.
Example 13.10
선택적-반복 윈도우 크기
선택적 반복에서 송신 윈도우와 수신 윈도우의 크기는 기껏해야 2m의 반이다. Note 선택적 반복에서 송신 윈도우와 수신 윈도우의 크기는 기껏해야 2m의 반이다.
Go-Back-N에 대한 피기배킹(piggybacking) 설계
알림 연습문제 풀이해서 Report로 다음주까지(일주일 후) 제출해 주세요!