820 likes | 1.17k Views
Chapter 13. 전송층 개요. 학습목표 (OBJECTIVES):. 전송 계층에서의 프로세스 - 대 - 프로세스 통신을 정의하고 이것과 네트워크 계층에서의 호스트 대 호스트 통신을 비교한다 . 전송 계층에서의 주소 메커니즘 , 포트 번호 , 그리고 여러 가지 목적을 위하여 사용되는 포트 번호의 범위를 정의한다 . 전송 계층에서의 패킷화 문제 , 그리고 메시지의 캡슐화와 역캡슐화를 설명한다 . 전송 계층에서 제공하는 다중화 ( 다 - 대 - 일 ) 와 역다중화 ( 일 - 대 - 다 ) 를 설명한다 .
E N D
Chapter 13 전송층 개요
학습목표(OBJECTIVES): • 전송 계층에서의 프로세스-대-프로세스 통신을 정의하고 이것과 네트워크 계층에서의 호스트 대 호스트 통신을 비교한다. • 전송 계층에서의 주소 메커니즘, 포트 번호, 그리고 여러 가지 목적을 위하여 사용되는 포트 번호의 범위를 정의한다. • 전송 계층에서의 패킷화 문제, 그리고 메시지의 캡슐화와 역캡슐화를 설명한다. • 전송 계층에서 제공하는 다중화(다-대-일)와 역다중화(일-대-다)를 설명한다. • 흐름 제어와 이것이 전송 계층에서 어떻게 동작하는지를 설명한다.
학습목표(OBJECTIVES) (계속): • 오류 제어와 이것이 전송 계층에서 어떻게 동작하는지를 설명한다. • 혼잡 제어와 이것이 전송 계층에서 어떻게 동작하는지를 설명한다. • 전송 계층에서 비연결형과 연결형 서비스, 그리고 유한 상태 기기(FSM: Finite State Machine)를 이용하여 이러한 서비스들이 어떻게 구현되는지를 설명한다. • 단순 프로토콜, 정지 대기(Stop-and-Wait) 프로토콜, N-프레임-후퇴(Go-Back-N) 프로토콜, 그리고 선택적 반복(Selective-Repeat) 프로토콜 등 4개의 일반 전송 계층 프로토콜과 응용들의 동작에 대해서 설명한다. • 피기배킹(piggybacking) 방법을 이용한 전송 계층에서의 양방향 통신 방식에 대해서 설명한다.
13.1 Transport-Layer Services Chapter Outline 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)
ICANN 범위 • 잘 알려진 포트 : 0 ~ 1,023 • 등록된 포트(registered port) : 1,024 ~ 49,151 • 동적 포트(dynamic port) : 49,152 ~ 65,535
Note 잘 알려진(well-known) 포트 번호는 1,024보다 작다.
Example 13.1 UNIX 시스템에서 잘 알려진 포트들은 /etc/services라는 파일에 저장되어 있다. 이 파일의 각 줄에는 서버의 이름과 잘 알려진 포트 번호가 있다. grep 유틸리티를 사용하여 원하는 응용에 해당하는 줄을 추출할 수 있다. 다음은 TFTP 포트를 보여준다. TFTP는 UDP나 TCP의 69번 포트를 사용한다. 또한 SNMP(24장 참조)는 서로 다른 목적을 위하여 161과 162의 두 개의 포트 번호를 사용한다.
소켓 주소(Socket address) • 각 종단 점에서 연결을 만들기 위해 필요한 주소
다중화(Multiplexing)와 역(demultiplexing) TCP/IP Protocol Suite
흐름 제어(FLOW CONTROL) • 정보 생산자와 소비자간에 생성율과 소비율의 균형 중요 • 정보를 생산자로부터 소비자로 전달하는 방법: • 밀기(Pushing): 소비자 요구 없이 생산자가 전달 • 끌기(pulling): 소비자가 요구한 경우만 전달
전송층에서 흐름 제어 • 흐름 제어 구현은 버퍼(buffer) 이용
Example 13.2 위에서 언급한 내용들은 버퍼가 다 차거나 또는 버퍼에 빈 공간이 생기는 경우의 두 가지 경우에 소비자와 생산자 간에 통신이 필요하다는 것을 의미한다. 만일 두 개체가 단지 한 슬롯의 버퍼를 이용하는 경우에의 통신은 비교적 쉽다. 각각의 전송 계층이 패킷을 저장하기 위하여 하나의 단일 메모리 영역을 사용한다고 가정해보자. 송신 전송 계층의 단일 슬롯이 비게 되면, 송신 전송 계층은 다음 메시지를 전송하라는 신호를 응용 계층에서 전송한다. 반면 수신 전송 계층에서 이러한 단일 슬롯이 비게 되면, 수신 전송 계층은 다음 패킷의 전송을 위하여 송신 전송 계층에게 확인응답(acknowledgement)을 보낸다. 뒷부분에서 살펴보겠지만, 송신측과 수신측에서 단일-슬롯 버퍼를 이용하는 이러한 종류의 흐름 제어는 비효율적이다.
오류 제어 – 신뢰성 제공 • 훼손된 패킷의 감지 및 폐기 • 손실되거나 제거된 패킷 추적과 재전송 • 중복 수신 패킷 확인 및 폐기 • 손실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷을 버퍼에 저장
전송층에서 오류 제어 Packets Error Control
오류 제어 • 순서번호(sequence number) • 어떤 패킷을 재전송해야 하는지 • 어떤 패킷이 중복되었는지 • 어떤 패킷이 순서에 어긋나게 도착했는지 • 패킷에 부여된 일련번호 • 확인응답(ACK) • 긍정과 부정 신호
Note 오류 제어에서 순서 번호는 modulo 2m이며, 여기에서 m은 순서 번호의 크기를 비트로 표현한 값이다.
흐름과 오류 제어 결합 • 송신측과 수신측에 각각 버퍼 사용 • 버퍼에 번호를 부여, 순서번호와 확인응답번호로 사용 • 원형 또는 선형으로 표현 • 슬라이딩 윈도우(sliding window) 개념 이용
혼잡(congestion) 제어 • 네트워크로 전송되는 패킷의 수(load)가 네트워크에서 처리할 수 있는 용량을 초과할 때 발생 • 개방 루프(open-loop) 혼잡 제어: 혼잡 미연 방지 • 재전송 정책: 재전송 타이머 사용 • 윈도우 정책: 선택적 반복과 N-프레임 후퇴 윈도우 방식 • 확인응답 정책: 타이머 이용, 한번에 여러 개 확인응답 • 폐 루프(colsed-loop) 혼잡 제어 • 윈도우 크기 가변적으로 이용
비 연결형과 연결형 서비스 • 비 연결형 서비스 • 메시지를 전송가능한 작은 단편으로 나누어 전송 • 각각의 조각을 독립적인 단위로 간주 • 순서에 어긋나서 도착하는 경우 발생 • 연결형 서비스 • 먼저 서버와 클라이언트간 연결 설정 • 데이터 교환 완료후 연결 해제
연결형(Connection-oriented) 서비스 TCP/IP Protocol Suite
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) • 흐름 제어나 오류 제어가 없는 비연결형 프로토콜
Note 단순 프로토콜은 흐름 제어나 오류 제어를 제공하지 않는 비연결형 프로토콜이다.
Example 13.3 • 이 그림은 단순 프로토콜을 이용한 통신의 예를 보여준다. 송신측은 수신측을 고려하지 않고 패킷을 하나 씩 전송한다.
정지-대기 프로토콜 • 흐름 제어와 오류 제어를 제공하는 연결형 프로토콜 • 크기가 1인 슬라이딩 윈도우 사용 • 확인응답이 오기 전까지는 다음 패킷을 전송하지 않음 • 패킷 훼손확인을 위해 검사합 추가 • 전송시 타이머 구동, 확인응답 오면 타이머 정지 • 패킷이 훼손되거나 손실되면 재전송
정지-대기 프로토콜 • 순서번호(sequence number) • 중복 수신을 막기 위해 사용 • 패킷 헤더 부분에 순서번호 필드 추가 • x번 순서번호 수신, x+1번 확인응답번호 사용 • 확인응답번호(acknowledgement number) • 수신측에서 받기를 기대하는 다음 패킷 순서번호
Note 정지 대기 프로토콜에서는 송신측으로 하여금 확인응답을 기다리게 함으로써 흐름 제어 기능을 제공하고, 또한 훼손된 패킷을 폐기하고 송신측으로 하여금 타이머가 만료되면 확인응답되지 않은 패킷을 재전송하도록 함으로써 오류 제어 기능을 제공한다.
Note 정지 대기 프로토콜에서는 패킷의 번호를 위해서 1비트의 필드가 필요하다. 순서 번호를 modulo-2 연산으로 이루어진다.
Note 정지 대기 프로토콜에서 확인응답 번호는 항상 수신하고자 하는 다음 패킷의 순서 번호를 modulo-2 연산 방식으로 계산된 값을 표시한다.
Note 정지 대기 프로토콜에서 모든 연산은 modulo-2 방식이다.
Example 13.4 그림 13.21은 정지 대기 프로토콜의 예를 보여준다. 패킷 0이 전송되고, 확인응답되었다. 패킷 1은 손실되고, 타임-아웃 후에 재전송되었다. 재전송된 패킷 1은 확인응답되고, 타이머는 중단되었다. 패킷 0은 전송되고 확인응답되었으나 ACK가 손실되었다. 송신측은 패킷 또는 ACK가 손실되었는지를 알 수 없기 때문에 타임-아웃 후에 패킷 0을 재전송하였고, 이 패킷은 확인응답되었다.