프로세스 간 통신, 주소 지정, 멀티플렉싱 및 디 멀티플렉싱, 오류, 흐름 및 혼잡 제어와 같이 전송 계층에서 일반적으로 필요한 일반 서비스.
전송 계층 프로토콜은 비 연결 및 연결 지향의 두 가지 범주로 나뉩니다.
실제 전송 계층 프로토콜에서 제공하는 흐름 및 오류 제어 서비스.
전송 계층은 애플리케이션 계층과 네트워크 계층 사이에 위치한다.
로컬 호스트와 원격 호스트의 두 응용 프로그램 계층간에 프로세스 간 통신을 제공합니다.
논리적 연결을 사용하여 통신이 입증됩니다.
전송계층 서비스
전송 계층은 네트워크 계층과 애플리케이션 계층 사이에 위치한다.
전송 계층은 애플리케이션 계층에 서비스를 제공 할 책임이 있으며;
네트워크 계층에서 서비스를받습니다.
이 섹션에서는 몇 가지 전송 계층 프로토콜에 대해 설명합니다.
네트워크 계층과 전송 계층
전송층 프로토콜: 프로세스-대-프로세스 통신 제공
프로세스: 전송층의 서비스를 사용하는 응용층 객체(동작하는 프로그램)
포트 넘버
클라이언트 프로그램은 임시 포트 번호라 부르는 포트 번호를 스스로 정의한다.
서버 프로세서를 위한 공통의 포트 번호를 결정해 놓았다.
잘 알려진 포트번호라고 한다.
IP addresses versus port numbers(IP주소와 포트주소)
목적지 IP주소: 여러 호스트 중의 특정 호스트를 정의한다.
포트번호: 이 특정 호스트에 있는 프로세스들 중에 하나를 정의한다.
ICANN 범위
인터넷 할당 범위 관리 기관(ICANN,Internet Corporation
for Assigned Nameds and Numbers)은 포트 번호를 세 구간으로 나누었다.
-Well-known 포트: 0~1023사이의 번호가 할당
ICANN에 통제 된다.
-Registered 1024~49,151 범위.
ICANN에 의해 할당되거나 통제 받지 않는다.
중복 방지를 위해 단지 ICANN에 등록만 되어 있다.
-Dynamic or private 49,152~65,535 범위.
통제도 안 되고 등록도 되어 있지 않다.
어떤 프로세스에 의해서도 사용이 가능하고 이들을 임시 포트라고 한다.
UNIX에서 잘 알려진 포트는 / etc / services 라는 파일에 저장됩니다.
grep 유틸리티를 사용하여 원하는 응용 프로그램에 해당하는 줄을 추출 할 수 있습니다.
SNMP 는 각각 다른 목적으로 두 개의 포트 번호 (161 및 162)를 사용합니다.
소켓 주소
IP 주소와 포트 번호의 조합을 소켓 주소라고 한다.
서버 소켓 주소: 유일하게 서버 프로세스를 정의
클라이언트 소켓 주소: 유일하게 클라이언트 프로세스를 정의
캡슐화와 비캡슐화
캡슐화 : 어플리케이션층에서 메시지를 보낼 때 전송층의 payload에 메시지를 삽입하는 방법을 캡슐화라고 한다,
송신자는 전송층 프로토콜에 따라 상위계층인 응용층으로부터 데이터를 pyaload에 받아 캡슐화하고 전송한다.
역캡슐화 : 상대방에서 논리적 채널을 이용하여 보낸 메시지를 전송층에서 받고 전송층이 payload에 저장된 메시지를 어플리케이션층으로 보내는 방법을 역캡슐화라고 한다.
수신자의 전송층에 도착하면 헤더를 제거해 캡슐을 해제하고 응용층으로 전달한다.
프로세스가 전송할 메시지를 가지면, 이것은 소켓 주소의 쌍과 전송층 프로토콜에 종속되는 다른 정보의 조각을 가지고 메시지를 전송층에 전달한다.
송신 소켓 주소는 수신된 메시지에 응답할 필요가 있는 경우를 위해 프로세스에게 전달된다.
UDP -> user datagram, TCP -> segment
다중화와 역다중화
송신자는 다중화 수행 -> 응용층의 여러 응용 프로그램에서 전송할 패킷을 하나의 흐름으로 모음.
수신자는 역다중화 수행 -> 패킷을 해당 응용 프로그램으로 나누어준다.
->여러 개의 소켓으로부터 들어오는 패킷을 서로 공유하는 네트워크 계층을 통해 전송
: 다중화 필요
->하나의 IP로 들어온 패킷을 여러 개의 소켓 중 어느 소켓으로 전달할 것인지?
: 역다중화 필요
흐름제어:
송신자가 수신자가 수신할 수 있는 속도보다 빨리 정보를 보내면 수신자는 일부 정보를 폐기할 필요가 있다.
이 때 흐름제어가 필요하다.
정보 배달 방법:
(1)Pushing: 송신자가 수신자에게 계속 메시지를 보낸다.
따라서 수신자가 필요하지 않을 때도 계속 메시지를 보낼 수 있으므로 흐름제어가 필요하다.
(2)Pulling: 송신자가 수신자에게 먼저 메시지를 보내지 않고 수신자가 요청을 하면 그 때 메시지를 보낸다.
따라서 흐름제어가 필요하지 않다.
전송 층에서의 흐름제어
Sender:
어플리케이션층(송신자)에서 메시지를 생성하고 전송층에게 메시지를 push한다. (캡슐화)
전송층이 수신자 역할을 못하게 될 수도 있으므로 흐름제어를 해준다.
전송층은 송신자 혹은 수신자 역할을 할 수 있다. 왜냐하면 상대방에게 메시지를 보낼 때 전송층에서 메시지를 보내기 때문이다.
Receiver
상대방에게 메시지를 받은 전송층에서 메시지를 어플리케이션층에 pull한다. (역캡슐화)
이 때는 흐름제어가 필요없다.
2개의 버퍼를 이용하는 흐름 제어 구현
송신 전송층에 버퍼 하나
수신 전송층에 버퍼 하나
송신 전송층의 버퍼가 가득 차면, 송신 전송층은 메시지 경유를 멈추도록 응용층에게 알린다.
버퍼에 빈 공간이 생기면, 송신 전송층은 응용층에게 메시지가 다시 지나갈 수 있다고 알린다.
수신 전송층의 버퍼가 가득 차면, 수신 전송층은 패킷의 전송을 멈추도록 송신 전송층에게 알린다.
버퍼에 빈 공간이 생기면, 수신 전송층은 송신 전송층에게 패킷을 다시 전송해도 된다고 알린다.
두 당사자가 하나의 슬롯으로 만 버퍼를 사용하면 통신이 더 쉬워 질 수 있습니다.
각 전송 계층이 하나의 단일 메모리 위치를 사용하여 패킷을 보유한다고 가정하십시오.
전송 전송 계층의이 단일 슬롯이 비어 있으면 전송 전송 계층은 다음 청크를 전송하기 위해 응용 프로그램 계층에 메모를 보냅니다.
수신 전송 계층의이 단일 슬롯이 비어 있으면, 다음 전송 패킷을 전송하기 위해 확인을 전송 전송 계층에 보냅니다.
그러나 나중에 보 겠지만, 송신자와 수신자에서 단일 슬롯 버퍼를 사용하는 이러한 유형의 흐름 제어는 비효율적입니다.
네트워크층에서의 오류 제어
네트워크층에서 신뢰성을 제공하지 않기 때문에 응용층에서 신뢰성을 요구하는 경우에는 전송층에서 신뢰성을 제공할 수 있어야 한다.
신뢰성은 전송층에 오류 제어 서비스를 추가함으로써 제공할 수 있다.
전송층의 오류 제어에서 제공하는 기능은 다음과 같다.
1. 훼손된 패킷의 감지 및 폐기
2. 손실되거나 제거된 패킷을 추적하고 재전송
3. 중복 수신 패킷을 확인하고 폐기
4. 분실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷을 버퍼에 저장
흐름 제어와는 다르게 오류 제어에는 송신 전송층과 수신 전송층만이 관여한다.
응용층과 전송층 간에 교환되는 메시지에는 오류가 없다고 가정한다.
오류 제어를 위한 순서번호
송신 전송층:
어떤 패킷이 재전송되어야 하나?
수신 전송층:
어떤 패킷이 중복되었는지? 어떤 패킷이 순서에 어긋나게 도착했는지? -> 패킷의 순서 번호(sequence number)
m비트의 순서 번호: 0 ~ 2^(m-1) (모듈러 2^m)
오류제어를 위한 확인 응답
(1)긍정과 부정 신호 모두 사용 가능
(2)긍정 확인응답을 사용한 오류제어
수신측:
1. 오류 없이 수신된 패킷들에 대해 긍정 확인응답(ACK)전송
2. 훼손된 패킷은 단순히 버린다.
3. 중복 수신된 패킷은 조용히 폐기시킨다.
4. 순서에 어긋나게 수신된 패킷은 폐기되거나 손실된 패킷이 도착하기 전까지 버퍼에 저장된다.
송신측:
타이머를 구동하고 타이머 만료 전까지 ACK가 도착하지 않으면 패킷을 재전송한다.
흐름과 오류 제어의 결합
흐름 제어: 2개의 버퍼 사용
오류 제어: 순서 번호 사용
2개의 버퍼에 번호가 매겨지면 흐름제어와 오류 제어의 결합될 수 있음
송신측:
패킷의 순서 번호로서 버퍼 내의 비어 있는 영역의 제일 앞부분의 번호인 x를 사용한다.
패킷이 전송되면 패킷의 복사본은 메모리 영역 x에 저장되면 상대방의 확인응답을 기다린다.
확인응답이 도착하면 패킷은 제거되고 메모리 영역은 비워진다.
수신측:
순서 번호 y를 갖는 패킷이 도착하면 수신측은 응용측에서 수신할 준비가 되기 전까지는 수신된 패킷을 메모리 영역 y에 저장한다.
패킷 y의 도착을 알리기 위해 확인응답을 전송한다.
원형 형식의 슬라이딩 윈도우
이 그림에서 윈도우 사이즈는 7
(a) 4개의 패킷이 전송되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 0
보낼 다음 패킷의 순서 번호(sequence number) : 4
(b) 5개의 패킷이 전송되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 0
보낼 다음 패킷의 순서 번호(sequence number) : 5
(c) 7개의 패킷이 전송되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 0
보낼 다음 패킷의 순서 번호(sequence number) : 7
window가 가득 찼습니다.
(d) 패킷 0이 확인응답이 되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 1
보낼 다음 패킷의 순서 번호(sequence number) : 7
선형 형식의 슬라이딩 윈도우
(a) 4개의 패킷이 전송되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 0
보낼 다음 패킷의 순서 번호(sequence number) : 4
(b) 5개의 패킷이 전송되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 0
보낼 다음 패킷의 순서 번호(sequence number) : 5
(c) 7개의 패킷이 전송되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 0
보낼 다음 패킷의 순서 번호(sequence number) : 7
window가 가득 찼습니다.
(d) 패킷 0이 확인응답이 되었을 때
첫번째 미결 패킷의 순서 번호(sequence number) : 1
보낼 다음 패킷의 순서 번호(sequence number) : 7
혼잡제어
부하(load): 네트워크로 전송되는 패킷의 수
용량(capacity): 네트워크에서 처리할 수 있는 패킷의 수
혼잡제어(congestion control): 혼잡을 제어하고 부하가 용량보다 작도록 하기 위한 메커니즘과 기술
혼잡이 발생하는 이유
대기(queue)를 포함하는 어떠한 시스템에서도 발생한다.
라우터나 스위치가 패킷을 저장하기 위한 버퍼인 큐를 가지고 있기에 도착하는 패킷을 처리할 수 없으면 큐는 과부하가 되면 혼잡이 발생한다.
전송층에서의 혼잡은 실제 네트워크층의 혼잡을 초래한다.
네트워크층에서 혼잡 제어가 없는 경우 전송층에서 혼잡 제어를 구현한다.
연결
네트워크 계층 프로토콜처럼
전송 계층 프로토콜은 연결없는 연결과(비연결) 연결 지향의 두 가지 유형의 서비스를 제공 할 수 있습니다.
그러나 전송 계층에서 이러한 서비스의 특성은 네트워크 계층의 서비스와 다릅니다.
네트워크 계층에서, 비 연결 서비스는 동일한 메시지에 속하는 다른 데이터 그램에 대한 다른 경로를 의미 할 수 있습니다.
전송 계층에서의 연결없는 서비스는 패킷 간의 독립성을 의미합니다.
연결 지향은 의존성을 의미합니다.
이 두 가지 서비스에 대해 자세히 설명하겠습니다.
Connectionless Services(비연결 서비스)
발신지프로세스는 메시지를 전송층에서 수신 가능한 크기의 여러 개의 조간으로 나눈 후 데이터 조각들을 하나씩 전송층으로 전달한다.
전송층은 데이터들의 관계를 고려하지 않고 각각의 데이터 조각을 독립적인 하나의 단위로 간주한다.
순서가 바뀌어 패킷이 도착하거나 손실되어도 수신 전송층은 그 사실을 알 수 없어 수신한 그대로 수신 응용층에 전달하게 됩니다. -> 2개의 전송층이 서로 협력하지 않기 때문에 발생합니다.
따라서 비연결형 서비스에서는 흐름제어나 오류제어 또는 혼잡제어가 구현될 필요가 없습니다.
Connection-oriented Services
논리적 연결 설정 - 데이터 교환 - 연결 해제
전송층의 연결 지향 서비스는 네트워크층 연결 지향 서비스와 다르다.
네트워크층 연결 지향 서비스는 2개의 종단 호스트와 그 사이의 모든 라우터들간의 협력에 의해 이루어진다.
전송층 연결 지향 서비스는 단지 2개의 종단 호스트만을 포함하며, 서비스는 종단에서만 이루어진다.
전송층은 연결 지향 서비스는 네트워크층의 비연결형 또는 연결 지향 서비스 위에서 연결 지향 프로토콜을 구현할 수 있어야 함을 의미한다.
연결 지향 프로토콜에서는 흐름제어, 오류제어, 혼잡제어 등이 구현될 수 있다.
FSM으로 표현되는 비 연결 및 연결 지향 서비스
비 연결 전송 계층의 FSM:
양쪽 끝은 항상 설정 된 상태입니다
연결지향 전송계층의 FSM:
1. 응용프로그램(어플리케이션)층에서 연결 열기 요청을 수락했습니다. 다른 쪽 끝으로 열린 요청 패킷을 보냅니다.
2. 다른 쪽 끝에서 수신 한 ACK. 아무것도하지 마세요.
3. 공개 요청 패킷이 다른 쪽 끝에서 도착했습니다. ACK 패킷을 보냅니다.
4. 데이터 전송은 양쪽 끝이 확립 된 상태 일 때 발생합니다.
5. 근접 요청 패킷이 다른 쪽 끝에서 도착했습니다. ACK 패킷 보내기
6. 다른 쪽 끝에서 ACK가 수신되었습니다. 아무것도하지 마세요
7. 응용프로그램(어플리케이션)층에서 승인 된 연결 종료 요청. 다른 쪽 끝으로 닫기 요청 패킷을 보냅니다.
전송층 프로토콜 (Transport-Protocol)
이전 섹션에서 설명한 일련의 서비스를 결합하여 전송 계층 프로토콜을 만들 수 있습니다.
이러한 프로토콜의 동작을 더 잘 이해하기 위해 가장 간단한 프로토콜로 시작하여 점차 더 복잡해집니다.
TCP / IP 프로토콜은 이러한 프로토콜 중 일부를 수정하거나 조합 한 전송 계층 프로토콜을 사용합니다.
Simple Protocol
첫 번째 프로토콜은 흐름제어나 오류제어가 없는 간단한 비 연결 프로토콜입니다.
수신자는 수신하는 모든 패킷을 즉시 처리 할 수 있다고 가정합니다.
다시 말해, 수신자는 들어오는 패킷에 압도 될 수 없습니다.
그림 23.17은이 프로토콜의 레이아웃을 보여줍니다.
그림 23.17 ,23.18:
송신자:
요청이 어플리케이션층에서 왔습니다.
요청: 패킷을 만들어 보내십시오.
수신자:
패킷이 도착했습니다.
그것을 처리하여 전달하십시오.
6월 8일 수업
그림 23.19는이 프로토콜을 사용한 통신 예를 보여줍니다.
매우 간단합니다.
발신자는 수신자에 대해 생각하지 않고 차례로 패킷을 보냅니다.
Stop - and Wait Protocol
두 번째 프로토콜은 stop-and-wait 프로토콜이라는 연결 지향 프로토콜이며 흐름 제어와 오류 제어를 모두 사용합니다. 발신자와 수신자 모두 크기가 23 인 슬라이딩 윈도우를 사용합니다.
손상된 패킷을 감지하려면 각 데이터 패킷에 체크섬을 추가해야합니다.
패킷이 수신자 사이트에 도착하면 점검됩니다.
체크섬이 올바르지 않으면 패킷이 손상되어 자동으로 삭제됩니다.
송신자:
응용 프로그램 계층에서 요청이 발생했습니다.
seqNo = S로 패킷을 작성하고 사본을 저장 한 후 보내십시오. 타이머를 시작하십시오
타임 아웃.
창에서 패킷을 다시 보내십시오. 타이머를 다시 시작하십시오.
ackNo가있는 ACK 또는 오류가없는 ACK가 손상되었습니다.
ACK를 폐기하십시오.
노트 : 모든 산술 방정식은 모듈로 2에 있습니다.
수신자:
손상된 패킷이 도착했습니다.
패킷을 폐기하십시오.
seqNo = R 인 오류없는 패킷이 도착했습니다.
메시지를 응용 프로그램에 전달하십시오.
수신 창을 앞으로 밉니다 (R = R + 1).
ackNo = R을 사용하여 ACK를 보냅니다.
seqNo = / R의 오류없는 패킷이 도착했습니다.
패킷을 폐기하십시오 (복제 됨).
ackNo = R을 사용하여 ACK를 보냅니다.
그림 23.22는 Stop-and-Wait 프로토콜의 예를 보여줍니다.
패킷 0이 전송되고 확인되었습니다.
시간 초과 후 패킷 1이 유실되고 재전송됩니다.
재전송 된 패킷 1이 확인되고 타이머가 중지됩니다.
패킷 0이 전송되고 확인되었지만 승인은 손실됩니다.
Stop-and-Wait protocol 은 대역폭이 크면서(고속) 왕복지연시간이 긴 채널에는 비효율적이다.
송신측에서 패킷이 목적지에 도착하고 확인응답이 되기 전에는 다음 패킷을 전송할 수 없기 때문에 파이프라인 기능을 제공하지 못한다.
파이프 용량 = 대역폭 * 지연(bandwidth-delay product)
파이프 용량의 의미: 수신측으로부터의 확인응답을 기다리면서 송신측이 파이프를 통하여 전송할 수 있는 비트 수
문제:
Stop-and-Wait 시스템에서 회선의 대역폭이 1Mbps이고 1 비트가 왕복하는 데 20 밀리 초가 걸린다고 가정하십시오.
대역폭 지연 제품이란 무엇입니까?
시스템 데이터 패킷 길이가 1,000 비트 인 경우 링크의 사용률은 얼마입니까?
해답:
대역폭 지연 제품은 (1 × 106) × (20 × 10−3) = 20,000비트입니다.
시스템은 데이터가 발신자에서 수신자로 이동하고 승인이 되돌아 오는 데 걸리는 시간 동안 20,000 비트를 전송할 수 있습니다.
그러나 시스템은 1,000 비트 만 보냅니다.
링크 사용률은 1,000 / 20,000 또는 5 %에 불과합니다.
문제:
승인을 중지하고 걱정하기 전에 최대 15 개의 패킷을 보낼 수있는
프로토콜이있는 경우 예 23.5의 링크 사용률은 얼마입니까?
해결:
대역폭 지연 제품은 여전히 20,000 비트입니다.
이 시스템은 왕복 중에 최대 15 개의 패킷 또는 15,000 비트를 전송할 수 있습니다.
이는 사용률이 15,000 / 20,000 또는 75 %임을 의미합니다.
물론 패킷이 손상된 경우 패킷을 다시 보내야하기 때문에 사용률이 훨씬 적습니다.
Go-Back-N Protocol(GBN)
전송 효율성을 향상 시키려면 (파이프를 채우기 위해) 발신자가 승인을 기다리는 동안 여러 패킷이 전환 상태에 있어야합니다.
다시 말해, 발신자가 확인을 기다리는 동안 채널을 사용 중 상태로 유지하려면 둘 이상의 패킷을 처리해야합니다.
이 섹션에서는이 목표를 달성 할 수있는 하나의 프로토콜에 대해 설명합니다.
다음 섹션에서는 두 번째에 대해 설명합니다.
첫 번째는 Go-Back-N (GBN)입니다.
Go-Back-N 전송 창
순서 번호: 모듈러 2^m
확인응답 번호: 누적 값; 수신되기를 기다리는 다음 패킷의 순서 번호
윈도우 최대 크기: 2^m-1
수신 윈도의 크기는 항상 1
순서에 어긋나게 도착한 패킷은 폐기되면 재전송 될 것이다.
수신 윈도의 이동 ; Rn = (Rn+ 1) modulo 2^m
패킷 재전송:
송신측: 이미 패킷 6 전송하였지만 타이머가 완료되었다고 가정하면..
Sf =3 이면 -> 송신측은 패킷 3, 4, 5, 6까지 4개의 패킷을 재전송한다 -> Go-Back-N
그림 23.27
송신자-Ready:
요청 양식 프로세스가왔습니다.
패킷을 만듭니다 (seqNo = Sn).
사본을 저장하고 패킷을 보내십시오. 타이머가 작동하지 않으면 시작하십시오. Sn = Sn + 1.
타임 아웃.
모든 미해결 패킷을 다시 보내십시오.
타이머를 다시 시작하십시오.
손상된 ACK 또는 ackNo 외부 창이있는 오류없는 ACK가 도착했습니다.
그 패킷을 폐기합니다.
ack Sf보다 크거나 같고 Sn보다 작은 오류가없는 ACK가 도착했습니다.
슬라이드 창 (Sf = ackNo).
ackNoequals Sn이면 타이머를 중지하십시오.
ackNo <Sn이면 타이머를 다시 시작하십시오.
송신자-Blocking:
타임 아웃.
모든 미해결 패킷을 다시 보내십시오.
타이머를 다시 시작하십시오.
손상된 ACK 또는 Sack보다 작거나 Sn보다 크거나 같은 ack를 갖는 오류가없는 ACK가 도착했습니다.
버립니다.
수신자:
seqNo = Rn 인 오류없는 패킷이 도착했습니다.
메시지를 전달하십시오.
슬라이드 창 (Rn = Rn + 1).
ACK (ackNo = Rn)를 보냅니다.
손상된 패킷이 도착했습니다.
패킷을 버립니다.
seqNo = / Rn의 오류없는 패킷이 도착했습니다.
패킷을 버립니다.
Ack (ackNo = Rn)를 보냅니다.
그림 23.28
Go-Back-N의 전송 창 크기.
송신 윈도우는 2^m보다 작아야 한다.
a. 전송 창 크기가 < 2^m
마지막 패킷이 도착했을 때 올바르게 폐기
b. 전송 창 크기 = 2^m
새 데이터로 잘못 받아 들여 전달되었습니다.
그림 23.29는 Go-Back-N의 예를 보여줍니다.
이는 순방향 채널이 신뢰할 수 있지만 반대의 경우는 아닙니다.
데이터 패킷은 손실되지 않지만 일부 ACK는 지연되고 하나는 손실됩니다.
또한 승인이 지연되거나 손실 될 경우 누적 승인이 어떻게 도움이되는지 보여줍니다.
그림 23.29
그림 23.30은 패킷이 손실 될 때 발생하는 상황을 보여줍니다. 패킷 0, 1, 2 및 3이 전송됩니다.
그러나 패킷 1이 손실됩니다.
수신자는 패킷 2와 3을 수신하지만 순서가 잘못 수신되었으므로 폐기됩니다 (패킷 1이 예상 됨).
수신자가 패킷 2와 3을 수신하면 ACK1을 전송하여 패킷 1을 수신 할 것으로 예상 함을 표시합니다.
그러나 ACKNo가 Sf와 같고 Sf보다 크지 않기 때문에 이러한 ACK는 송신자에게 유용하지 않습니다.
따라서 발신자가 삭제합니다.
시간 초과가 발생하면 보낸 사람이 확인 된 패킷 1, 2 및 3을 다시 보냅니다.
그림 23.30
6/15~6/19
Go-Back-N 프로토콜은 수신기에서의 프로세스를 단순화합니다.
수신자는 하나의 변수 만 추적하므로 비 순차적 패킷을 버퍼링 할 필요가 없습니다.
그들은 단순히 버려집니다.
그러나 기본 네트워크 프로토콜이 많은 패킷을 잃으면이 프로토콜은 비효율적입니다.
단일 패킷이 손실되거나 손상 될 때마다 보낸 사람은 이러한 패킷 중 일부가 안전하고 소리는 있지만 순서가 맞지 않더라도 모든 미해결 패킷을 다시 보냅니다.
Go-Back-N protocol은 네트워크층의 혼잡으로 인해 많은 패킷이 손실된다면, 패킷 재전송으로 인해 혼잡은 더 심해지고 눈사태와 같은 네트워크 붕괴를 초래할 수 있다.
선택적 반복의 프로토콜
선택적-반복 프로토콜을위한 전송 창
선택적 반복 프로토콜의 송신 윈도우 최대 크기 : 2^m-1
수신 윈도우 크기 = 송신 윈도우 크기
신뢰성 있는 프로토콜에서는 수신측은 응용층으로 불규칙적으로 도착한 패킷을 보내면 안된다.
타이머:
선택적 반복 프로토콜: 패킷마다 개별의 타이머 사용
Go-Back-N 프로토콜: 하나 그룹으로 해서 하나의 타이머 사용
선택적 반복을 구현하는 대부분의 전송층 프로토콜은 단지 하나의 단일 타이머 사용함
선택적-반복 프로토콜 수신 창
선택적 반복 프로토콜에서 확인응답 의미:
ackNo는 오류 없이 수신된 하나의 패킷 순서 번호
문제:
발신자가 패킷 0, 1, 2, 3, 4 및 5의 6 개 패킷을 전송한다고 가정합니다.
발신자가 ackNo = 3 인 ACK를 수신한다고 가정합니다.
시스템이 GBN 또는 SR을 사용하는 경우 해석은 무엇입니까?
풀이:
시스템이 GBN을 사용하는 경우 패킷 0, 1 및 2가 손상없이 수신되었으며 수신자가 패킷 3을 예상하고 있음을 의미합니다.
시스템이 SR을 사용하는 경우 패킷 3이 손상되지 않고 수신되었음을 의미합니다.
ACK는 다른 패킷에 대해 아무 것도 말하지 않습니다.
이 예는 패킷 1이 손실 된 예 23.8 (그림 23.30)과 유사합니다.
이 경우 Selective-Repeat의 동작을 보여줍니다.
그림 3.35는 상황을 보여줍니다.
발신자에서 패킷 0이 전송되고 승인됩니다. 패킷 1이 손실되었습니다.
패킷 2와 3은 순서가 맞지 않아 승인됩니다.
타이머가 시간 초과되면 패킷 1 (확인되지 않은 유일한 패킷)이 다시 전송되고 확인됩니다.
그런 다음 전송 창이 미끄러집니다.
수신자 사이트에서 우리는 패킷 수락과 애플리케이션 계층으로의 전달을 구별해야합니다.
두 번째 도착시 패킷 2가 도착하여 저장 및 표시 (음영 슬롯)되지만 패킷 1이 누락되어 전달할 수 없습니다.
다음에 도착하면 패킷 3이 도착하여 표시 및 저장되지만 여전히 패킷을 전달할 수는 없습니다.
최종 도착시에만, 최종적으로 패킷 1의 사본이 도착할 때, 패킷 1, 2 및 3이 애플리케이션 계층으로 전달 될 수있다.
애플리케이션 계층으로 패킷을 전달하기위한 두 가지 조건이 있습니다.
첫째, 연속 패킷 세트가 도착해야합니다. 둘째, 세트는 창의 시작 부분부터 시작합니다.
그림 23.8
양방향 프로토콜
이 섹션의 앞부분에서 설명한 네 가지 프로토콜은 모두 단방향입니다.
데이터 패킷은 한 방향으로 만 흐르고 승인은 다른 방향으로 움직입니다.
실제로 데이터 패킷은 일반적으로 클라이언트에서 서버로 그리고 서버에서 클라이언트로 양방향으로 흐릅니다.
즉, 승인도 양방향으로 진행되어야합니다.
양방향 프로토콜의 효율성을 높이기 위해 피기 백 (piggybacking)이라는 기술이 사용됩니다.
패킷이 A에서 B로 데이터를 전달할 때 B에서 도착한 패킷에 대한 승인 피드백을 전달할 수도 있습니다.
'공부 > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 - 전송층 프로토콜 (0) | 2020.06.16 |
---|---|
컴퓨터네트워크-네트워크층 프로토콜(6) (0) | 2020.05.27 |
컴퓨터네트워크-네트워크층 프로토콜(5) (0) | 2020.05.27 |
컴퓨터네트워크-네트워크층 프로토콜(4) (0) | 2020.05.27 |
컴퓨터네트워크-네트워크층 프로토콜(3) (0) | 2020.05.23 |
댓글