340 likes | 702 Views
2013 년 05 월 01 일. 멀티미디어 통신특론. 이준영. Chapter 23 전송층의 개요. 23.1 도입 전송층 서비스 비연결형과 연결 - 지향 프로토콜 23.2 전송 계층 프로토콜들 단순프로토콜 정지 - 대기 프로토콜 Go-Back-N 프로토콜 (GBN) 선택적 반복 프로토콜 양방향 프로토콜 : 피기배킹. Transport layer. 응용층과 네트워크층 사이에 위치 응용층에 서비스를 제공하고 네트워크층으로 부터 서비스를 받는 위치 프로세스 - 대 - 프로세스 연결
E N D
2013년 05월 01일 멀티미디어 통신특론 이준영
Chapter 23 전송층의 개요 • 23.1 도입 • 전송층 서비스 • 비연결형과 연결-지향 프로토콜 • 23.2 전송 계층 프로토콜들 • 단순프로토콜 • 정지-대기 프로토콜 • Go-Back-N 프로토콜(GBN) • 선택적 반복 프로토콜 • 양방향 프로토콜: 피기배킹
Transport layer • 응용층과 네트워크층 사이에 위치 • 응용층에 서비스를 제공하고 네트워크층으로 부터 서비스를 받는 위치 • 프로세스-대-프로세스 연결 • 클라이언트 프로그램과 서버 프로그램 사이에서 프로세스-대-프로세스 연결의 연락 담당자로 동작
프로세스-대-프로세스 통신 • 전송층 프로토콜의 첫 번째 의무는 프로세스-대-프로세스(process-to-process communication)을 제공하는 것 • 실질적인 통신은 두 개의 프로세스간 이루어 지며 이는 프로세스간 전달을 필요 Processes Processes Client Server Internet Network-layer protocol Transport-layer protocol 네트워크층 대 전송층
주소지정 • Client – Server • 프로세스-대-프로세스 통신을 달성하기 위한 방법 중 가장 많이 사용하는 방법이다. • 로컬 호스트에 있는 프로세스인 client는 원격지에 있는 호스트상의 프로세스인 server로부터 서비스를 필요로 한다. • 로컬 호스트가 하나 이상의 클라이언트 프로그램을 실행할 수 있는 것처럼 원격지 컴퓨터는 여러 개의 서버 프로그램을 실행할 수 있다. • 주소지정 • 통신을 위해서는 로컬호스트, 로컬프로세스, 원격호스트, 원격프로세스를 정의해야 한다. • 로컬호스트와 원격호스트는 IP주소를 이용하여 정의한다. • 프로세스를 정의하기 위해 포트번호(port number)라 부르는 두번째 식별자가 필요하다. • 포트번호는 0과 65,535(16비트) 사이의 값을 가지는 정수이다. • 클라이언트 프로그램은 임시포트번호(ephemeral port number)라 부르는 포트번호를 스스로 정의한다. • 서버 프로세스의 포트 번호는 인터넷을 위해 정해진 공통의 포트 번호를 사용한다. 이 포트를 잘 알려진 포트번호(well-known port numbers)라 한다. Daytime client Daytime server 52,000 13 Transport layer Transport layer 포트번호
주소지정 • IP 주소는 해당 호스트를 찾아가면 포트번호를 이용하여 호스트의 여러 프로세스 중 해당 프로세스를 선택한다. Server Application Port number Selects the process Transport IP header IP address Selects the host Transport-layer header IP 주소 대 포트 번호
ICANN 범위 • 인터넷 할당 번호 관리 기관(ICANN, Internet Corporation for Assigned Names and Numbers)은 포트번호를 세 구간으로 나누었다. • Well-known port • 0~1023 사이의 번호가 할당되었고 ICANN에 의해 통제된다. • Registered port • 1024~49,151 사이의 범위를 가지며 ICANN에 의해 할당되거나 또는 통제를 받지 않고 중복방지를 위해 ICANN에 등록되어 있다. • Dynamic port • 49,152~65,535 사이의 범위를 가지며 통제도 안 되고 등록도 되어 있지 않은 어떠한 프로세스에 의해서도 사용이 가능하고 이를 임시포트라 한다. Well-known Registered Dynamic 0 1023 49,152 65,535 1024 49,151 ICANN 범위
소켓 주소 • 전송층 프로토콜은 연결을 만들기 위해서 각 종단에서 IP주소와 포트 번호의 두 가지 식별자를 필요로 한다. • IP주소와 포트번호의 조합을 소켓주소라고 한다. • 전송층 프로토콜은 한 쌍의 클라이언트 소켓 주소와 서버 소켓 주소를 필요로 한다. 200.23.56.8 69 IP adress Port number 200.23.56.8 69 Socket address 소켓주소
다중화 및 역다중화 • 다중화(Multiplexing) • 호스트에는 전송을 원하는 여러 프로세스가 존재한다. • 어느 한 시점에는 단지 하나의 전송층 프로토콜만 존재한다. • 이 프로토콜은 할당된 포트 번호에 의해 구별되는 서로 다른 프로세스로 부터 메시지들을 받아들여 헤더를 추가한 후 패킷을 네트워크 층으로 전달한다. • 역다중화(Demultiplexing) • 네트워크 층으로부터 메시지를 수신하여 포트 번호에 근거, 해당 프로세스에게 전달한다. Processes Processes Multiplexer Demultiplexer IP IP 다중화 및 역다중화
비연결형과 연결지향 프로토콜 • 네트워크층 프로토콜과 마찬가지로 전송층 프로토콜도 비연결형(connectionless)과 연결지향(connection oriented)의두 가지 형태의 서비스를 제공한다. • 네트워크층에서의 비연결형 서비스: 동일한 메시지에 속하는 서로 다른 데이터 그램이 서로 다른 경로를 거칠 수 있다는 것을 의미한다. • 전송층에서의 비연결형 서비스: 패킷의 물리 경로에 대해서는 관여하지 않는 패킷간의 독립성을 의미한다. • 전송층에서의 연결지향 서비스: 종속성을 의미한다. • 비 연결형 서비스(Connectionless service) • 전송층은 데이터들의 관계를 고려하지 않고 각각의 데이터 조각을 독립적인 하나의 단위로 간주한다. • 전송층에서는 패킷간의 연관성이 없기 때문에 패킷의 순서가 어긋나게 목적지에 도착할 수 있으며, 따라서 서버 프로세스에도 순서에 어긋나서 도착 할 것이다. • 수신 전송층은 첫 번째 패킷이 언제 도착할지 또는 모든 패킷이 다 도착 했는지에 대해서 알 수가 없다. • 비연결형 서비스에서는 흐름제어나 오류제어 또는 혼잡제어가 구현될 필요가 없다.
비연결형과 연결지향 프로토콜 • 연결지향 서비스(Connection oriented service) • 연결지향서비스에서 클라이언트와 서버는 먼저 그들간에 논리적인 연결을 설정한다. • 데이터 교환은 연결이 설정된 이후에나 가능하다. • 데이터의 교환이 완료된 후에는 연결은 해지된다. • 연결지향 프로토콜에서는 흐름제어, 오류제어, 그리고 혼잡제어 등이 구현 될 수 있다. Host A Host B 초기화 정보 Connection Request (A to B) Acknowledgment 통합가능 초기화 정보 Connection Request (B to A) Acknowledgment Time Time
비연결형과 연결지향 프로토콜 • 연결지향 서비스(Connection oriented service) • 연결 종료는 비대칭 이다. Host A Host B Connection release (A to B) Acknowledgment Connection release (B to A) Acknowledgment Time Time
Chapter 23 전송층의 개요 • 23.1 도입 • 전송층 서비스 • 비연결형과 연결-지향 프로토콜 • 23.2 전송 계층 프로토콜들 • 단순프로토콜 • 정지-대기 프로토콜 • Go-Back-N 프로토콜(GBN) • 선택적 반복 프로토콜 • 양방향 프로토콜: 피기배킹
단순 프로토콜 • 흐름 제어나 오류 제어가 없는 단순(simple) 비연결형 프로토콜이다. • 수신측은 수신한 패킷을 즉시 처리할 수 있다고 가정한다. • 송신측과 수신측 전송층은 모두 자신들의 응용층을 위한 통신 서비스 기능을 제공한다. Sender Receiver Application Transport Application Transport Logical channel 단순 프로토콜
정지-대기 프로토콜 • 송신측은 한 번에 하나의 패킷을 전송하고 확인응답이 들어오기 전까지는 다음 패킷을 전송하지 않는다. • 패킷이 훼손되었는지를 검사하기 위하여 각각의 데이터 패킷에 검사합을 추가한다. • 패킷을 수신한 수신측은 패킷을 검사하여 만일 패킷의 검사합이 틀리면 패킷이 훼손되었다고 간주하고 버린다. • 송신측은 패킷을 전송할 때마다 타이머를 구동한다. • 타이머가 만료 되기 전에 확인응답이 도착하면 타이머는 정지되고 송신측은 다음 패킷을 전송한다. • 만일 타이머가 만료되면, 송신측은 패킷이 손실되거나 훼손되었다고 간주하고 패킷을 재전송 한다. • 송신부는 S변수를수신부는 R변수를 사용한다. • 확인응답 번호는 항상 수신측에서 받기를 기대하는 다음패킷의 순서번호를 나타낸다. • 예를 들어 패킷0이 안전하게 들어오면수신측은 확인응답 번호로 1을 갖는 ACK(즉 패킷1이 다음에 수신되기를 기대한다는 것을 의미함)를 전송한다. 만일 패킷1이 안전하게 도착하면수신측은 확인응답 번호 0을 갖는 ACK(즉 패킷 0을 기대한다는 것을 의미)를 전송한다.
정지-대기 프로토콜 Packet ACK Sender Receiver Application Transport Application Transport seqNo checksum ackNo checksum Logical channels S R Next Packet to receive Timer Send window Receive window 정지-대기 프로토콜
정지-대기 프로토콜 • 순서번호 • 패킷을 중복 수신하지 않도록 하기 위하여 프로토콜은 순서번호(sequence number)와 확인응답 번호 (acknowledgment number)를 사용한다. • 패킷의 헤더에는 패킷의 순서번호를 표시 할 수 있는 필드가 추가된다. • 패킷의 크기를 최소화 하기 위해서는 모호화하지 않고 최소범위를 찾아야 한다.(x,x+1) • 순서번호 x의 패킷을 전송했다고 가정 할때(x+2가 필요없는 이유) • 패킷이 오류 없이 안전하게 수신측에 도착하면, 수신측은 확인응답을 전송한다. 확인응답이 송신측에 도착하면 송신측은 x+1의 순서 번호를 갖는 다음 패킷을 전송할 것이다. • 패킷이 훼손되어 수신측에 도착하지 않으면, 송신측은 타임아웃 후에 패킷을 재전송한다. 이 패킷을 수신한 수신측은 확인응답으로 회신한다. • 패킷이 오류 없이 안전하게 수신측에 도착하면, 수신측은 확인응답을 전송한다. 그런데 이 확인응답이 훼손되었거나 손실되었다면 송신측은 타임아웃 후에 패킷을 재전송한다. 이렇게 재전송된 패킷은 중복 패킷이다. x+1 순서번호를 갖는 패킷의 수신을 기대 했는대대신에 x순서번호를 갖는 패킷을 수신한 수신측은 이 패킷이 중복 패킷이라는 사실을 알 수 있다. • 첫 번째 경우에 x와 x+1의 순서 번호를 갖는 패킷들이 모두 확인응답이 되면, 그 다음 패킷은 다시 x의 순서 번호를 갖더라도 양쪽에서 명확하게 구분할 수 있다. • 두 번째와 세 번째의 경우에서 새 패킷의 순서 번호는 x+2가아닌 x+1이다 . • 따라서 단지 x와 x+1만이 필요하다면 x=0으로 하고 또한 x+1=1로 할 수 있을 것이다. • 0,1,0,1,0,1의 순서를 갖는 다는 것을 의미하며 다시 말하면 모듈러(modulo)2 연산을 따른다.
정지-대기 프로토콜 Req: Request from process pArr: Packet arrival aArr: ACK arrival T-Out: Time out Sender Receiver Transport layer Transport layer S Reg Start Packet 0 R pArr S ACK 1 aArr Stop S Reg Start Packet 1 Lost S T-Out Packet 1 (resent) Time-out; restart R pArr S ACK 0 aArr Stop S Reg Packet 0 R Start pArr ACK 1 S Lost T-Out Packet 0(resent) Time-out; restart R pArr Discard, duplicate ACK 1 S aArr Stop Time Time
Go-Back-N 프로토콜(GBN) • 정지-대기 프로토콜은 확인응답을 기다리는 프레임이 하나였다. 전송효율을 향상시키기 위해서는 송신측은 확인응답을 기다리는 동안에 여러 개의 패킷을 전송 할 수 있어야 한다. • Go-Back-N은 확인응답을 수신하기 전에 여러 개의 패킷을 전송할 수 있다. • 수신측은 단지 하나의 패킷을 버퍼에 저장할 수 있다. • 송신측에서는 확인응답이 도착하기 전에 전송된 패킷들에 대한 사본을 가지고 있어야 한다. seqNo checksum ackNo checksum Packet ACK Sender Receiver Application Transport Application Transport Logical channels Sn Sf Timer R First outstanding Next to send Next to receive Send window Receive window Go-Back-N 프로토콜
Go-Back-N 프로토콜(GBN) • 송신윈도 • 송신윈도는 전송 중이거나 전송될 데이터 패킷의 순서 번호를 포함하는 가상의 상자를 나타낸다. • 각윈도의 위치에서 어떤 순서 번호들은 이미 전송된 패킷을 나타내고, 또 다른 순서 번호들은 전송되고자 하는 패킷을 나타낸다. • 윈도의 최대 크기는 2m -1이다. • 순서번호는 4개의 영역으로 나누어진다. • 이미 확인 응답된 패킷에 속하는 순서번호 • 이미 전송은 되었지만 아직까지 확인 응답되지 않은 패킷에 속하는 순서번호(미해결패킷) • 전송할 수는 있지만 해당하는 데이터가 아직까지 응용층으로부터 수신되지 못한 패킷의 순서번호의 범위 • 윈도가 이동하기 전까지 비록 프로세스로부터 데이터를 수신하더라도 패킷을 전송 할 수 없는 순서번호 First outstanding Next to send ① ② ③ ④ Sn Sf S size = Send window size Go-Back-N 에서의 송신윈도
Go-Back-N 프로토콜(GBN) First outstanding First outstanding Next to send Next to send a. Window before sliding b. Window after sliding (an ACK with ackNo = 6 has arrived) Sn Sn Sf Sf 송신윈도의 이동
Go-Back-N 프로토콜(GBN) • 수신윈도 • 수신윈도는 올바른 데이터 패킷을 수신하고 또한 올바른 확인응답이 전송 될 수 있도록 한다. • Go-Back-N에서 수신윈도의 크기는 항상 1이다. • 순서에 어긋나게 도착한 패킷은 폐기되며 재전송된다. • 윈도는 올바른 패킷이 도착하는 경우에 이동하여, 이동은 한 번에 한 슬롯만 이동한다. • 타이머는 단지 하나의 타이머만 사용한다. • 첫 번째 미해결 패킷을 위한 타이머는 항상 먼저 만료되기 때문이다. • 이 타이머가 만료되면 모든 미해결 패킷은 재전송 된다. • 패킷 재전송 • 타임아웃이 발생하면 기기는 N위치만큼 후퇴하며 모든 패킷을 재전송 한다. • 현재, 6번 프레임을 전송 했으나 3번 패킷이 타임 아웃되면 3,4,5,6번 패킷을 모두 재전송 한다.(Go-Back-N) Next expected ② ① R size = 1 Go-Back-N 에서의 수신윈도 Rn
Go-Back-N 프로토콜(GBN) • 송신 윈도 크기 • 송신윈도의 크기는 2m 보다 작아야 한다. • m = 2라고 하면 윈도의 크기는 2m -1 = 3 이 된다. Sender Receiver Sender Receiver Sf Sn Start Sf Sn Start Packet 0 Packet 0 ACK 1 ACK 1 Packet 1 Packet 1 ACK 2 ACK 2 Packet 2 Packet 2 ACK 3 ACK 3 Packet 0 Packet 3 Correctly discarded Present Time-out; restart ACK 0 Packet 0 Erroneously accepted and delivered as new data Time Time Present Time-out; restart Time Time a. Send window of size < 2m b. Send window of size = 2m Go-Back-N 에서 송신 윈도 크기
Go-Back-N 프로토콜(GBN) Req: Request from process pArr: Packet arrival aArr: ACK arrival • 누적 확인 응답이 지연되거나 손실되는 경우에 어떻게 해결하는지 보여주는 예 Sender Receiver Initial Initial Sf Sn Rn Reg Reg Reg Reg Sf Sn Start timer Packet 0 Rn pArr Sf Sn ACK 1 aArr Stop timer Sf Sn Start timer Packet 1 Rn pArr Sf Sn ACK 2 Packet 2 Rn pArr Lost ACK3 Sf Sn Packet 3 Rn pArr Sf Sn aArr ACK 4 Restart Sf Sn aArr Stop timer Time Time
Sender Receiver Initial Initial Sf Sn Rn Sf Sn Start timer Reg Req: Request from process pArr: Packet arrival aArr: ACK arrival Packet 0 Rn pArr pArr pArr pArr pArr pArr Sf Sn ACK 1 Stop timer Sf Sn Start timer Reg Reg Reg Packet 1 Lost Sf Sn Packet 2 Packet discarded Sf Sn ACK1 Packet 3 Packet discarded ACK 1 ACK discarded ACK discarded Sf Sn Packet1(resent) Rn Time-out Sf Sn ACK2 Packet2(resent) Rn Sf Sn ACK3 Packet3(resent) Rn Sf Sn ACK4 Restart Sf Sn Restart Sf Sn Stop timer aArr aArr aArr aArr aArr aArr 25 Time Time
선택적 반복 프로토콜 • Go-Back-N 프로토콜은 수신측 프로세스를 간단히 한다. 수신측은 단지 하나의 변수만 관리하고 순서에 맞지 않게 들어온 패킷을 버퍼에 저장할 필요없이 단순히 폐기하면 된다. (많은 패킷이 손실되는 경우 하부 네트워크 프로토콜에 비효율적) • 선택적 반복(SR, Selective-Repeat)프로토콜에서는 이름에서 알 수 있듯이 실제로 손실된 패킷만 선택적으로 재전송한다. seqNo checksum ackNo checksum Packet ACK Sender Receiver Application Transport Application Transport Logical channels Sent, but not acknowledged Sn Sf Timer Acknowledged out of order Packet received out of order R First outstanding Next to send Next to receive Send window Receive window 선택적 반복의 동작
선택적 반복 프로토콜 • 송신,수신 윈도 • Go-Back-N 윈도와 차이가 있다. • 송신 윈도의 최대 크기는 2m-1로 상당히 작다.(2m 의 절반보다 클 수 없다.) • 수신윈도는 송신윈도와 같은 크기를 갖는다. • 송신,수신윈도의 크기의 최대값은 2m-1이다. • 예를 들어 m=4이면 순서번호는 0에서 15까지이지만, 윈도의 최대크기는 8이다. • 수신윈도의크기만큼 패킷들이 순서에 맞지 않게 도착한다면 이런 패킷들은 버퍼에 저장되며 순서에 맞는 패킷만이 응용층으로 전달된다. Next to send Receive window, Next packet expected First outstanding Outstanding packet, not acknowledged Packet acknowledged out of order Packet received out of order 선택적 반복 프로토콜에서 송신윈도 Rn Sn Sf 선택적 반복 프로토콜에서 수신윈도
선택적 반복 프로토콜 • 패킷1이 손실됬을때의 예 Sender Receiver Initial Initial Rn Sf Sf Sf Sf Sf Sf Sf Sf Sf Sf Sn Sn Sn Sn Sn Sn Sn Sn Sn Sn Reg Reg Reg Reg Rn Packet 0 Start pArr pArr pArr pArr ACK 0 aArr aArr aArr aArr Data delivered to application Stop Start Packet 1 T-Out Lost Rn Packet 2 ACK 2 Rn Packet 3 ACK 3 Rn Packet 1(resent) Restart ACK 1 Stop Data delivered to application Time Time
선택적 반복 프로토콜 • 손실된 프레임(책3버전) 전송 프레임마다 타이머 필요 타임아웃 전에 손실된 프레임을 보고하는 부정 확인 응답 (NAK) 사용
선택적 반복 프로토콜 • 윈도 크기 • 송신,수신윈도의 크기가 2m 반밖에 되지 않는 이유를 살펴보자. • m = 2라고 하면 윈도의 크기는 2m/2=2 혹은 2m-1 = 2가 된다. Sf Sf Sn Sn Sender Receiver Sender Receiver Start Start Rn Rn Packet 0 Packet 0 ACK 0 ACK 0 Packet 1 Packet 1 ACK 1 ACK 1 Packet 2 Packet 0 Correctly discarded Present ACK 2 Time-out; restart Packet 0 Erroneously accepted and delivered as new data Present Time Time Time-out; restart Time Time a. Send and receive windows of size = 2m-1 b. Send and receive windows of size > 2m-1 선택적 반복에서의 윈도 크기
양방향 프로토콜 • 양방향 전송: Piggybacking( 끼워 보내기) • 데이터 프레임에 확인 응답 프레임을 합해서 보내는 것 A B R=0 R=0 Packet 0, ACK0 Packet 1, ACK1 S=0 S=0 Packet 0, ACK1 Packet 1, ACK0 R=0 R=1 S=1 S=1 R=1 S=0 Time Time 끼워보내기