[데이터 통신과 네트워킹] Transport Layer Introduction

YJ·2024년 6월 1일
0

Introduction

  • Logical Connection at Transport Layer

Transport Layer Service

Transport Layer

  • 두 응용 계층 사이에 process-to-process communication을 제공한다.
  • 하나는 local host에 다른 하나는 remote host에 있다.
  • Communication은 logical connection을 사용해서 제공된다.

Service
1. Proecess-to-Process Communication
2. Addressing : Port Numbers
3. Encapsulation and Decapsulation
4. Multiplexing and Demultiplexing
5. Flow Control
6. Error Control
7. Congestion Control

1. Process-to-Process Comunication

  • process는 aplication layer entity이다. (실행중인 program)
  • 적절한 procees에 message를 전송할 책임이 있다.

Client-Server paradigm

  • local client는 remote server에 service를 요청한다.
  • Server는 request에 응답한다.

2. Addressing of a process : Port Numbers
.

  • local and remote host는 IP 주소로 정의된다.
  • local and remote process는 port 번호로 정의된다.

Port Number의 범위

  • ICANN은 port를 세 범위로 나눈다.
    • Well-known ports :
      • System ports, ICANN에 의해 할당됨
    • Registered ports :
      • 중복을 막기 위해 ICANN에 등록된다.
    • Dynamic, private or ephemeral ports :
      • application에 의해 동적으로 사용된다.


Socket Address

  • Transport Layer는 각 end에 socket address를 사용해서 logical connection을 만든다.
  • Socket address : IP address와 port number의 조합

3. Encapsulation and Decapsulation

  • Encapsulation
    • socket address의 쌍과 몇몇의 information이 message에 추가된다.
    • Encapsulation은 송신측에서 발생한다.
  • Decapsulation은 수신측에서 발생한다.

4. Multiplexing and Demultiplexing

  • Multiplexing : entity는 하나 이상의 source로 부터 item을 받는다.
  • Demultiplexing : entity는 하나 이상의 source에게 item을 준다.

5. Flow Control

  • 한 entity는 item을 만들고 다른 entity는 그것들을 소비한다.
    • consumer에서 data item의 손실을 막는다.
    • production과 consumpstion 속도의 균형을 맞춘다.
  • producer로 부터 consumer에게 item을 전송한다.
    • Pushing
    • Pulling

Transport layer에서 Flow Control

  • flow control을 위한 consumer(송신측)과 producer(수신측)의 두 buffer

    pusing : 데이터를 만들면 계속 내보냄
    pulling : 필요한 데이터를 가져감

Buffer를 이용한 flow Control

6. Error Control

  • Network layer (IP)는 unreliable하다.
    • 만약 application이 reliablity가 필요하면, transport layer가 reliable할 필요가 있다.
    • 오류가 있는지 없는지, 패킷이 loss가 되었는지 transport layer에서 책임진다.
  • Sender
    • 손실되거나 버려지는 packet을 추적하고 그것들을 다시 보낸다.
  • Receiver
    • 손실되고 중복되는 packet을 감지하고 버린다.
    • buffer에 순서가 올바르지 않은 패킷은 저장해두고 순서가 올바르게 올때까지 기다린다. (or 버릴 수도 있음)

Sequence Number는 2^m의 나머지이다.

  • m은 bit에 있는 sequence number field에 사이즈이다.

수신측은 안전하게 도착한 각 packet들에 대해 ACKnowledgement를 보낸다.

  • 송신측은 timer를 사용한다면 packet 손실을 감지할 수 있다.
  • 수신측은 손상되거나 중복된 packet을 버린다.
  • 순서가 잘못된 packet은 버리거나 잃어버린 것이 도착할때까지 저장한다.

Two numbered buffer

  • 송신측
    • 버퍼에서 다음 위치 번호를 packet의 sequence number로 사용한다.
    • packet이 보내질때, copy를 저장한다.
  • 수신측
    • packet이 도착할때, memory에 저장된다.
    • Acknowledgment는 보내질 수 있다.

Combination of Flow & Error control :
-> Sliding Window

Sliding Window

  • Sequence number는 2^m의 나머지를 사용한다. m은 bit에 수이다.
    • circle number는 0부터 2^m-1까지이다.
  • 만약 m이 4 (Sequence number는 0 ~ 15) 이고 window size는 7이면:

Sliding Window - Linear Type

  • 대부분에 protocol은 linear 표현을 사용한다.

7. Congestion Control

  • Congestion은 만약 network에 load가 network에 처리할 수 있는 용량 한계보다 많으면 발생할 수 있다.
    • router와 switch는 각 interface에 queue를 가진다.
  • Congestion control mechanism은 용량보다 낮게 load를 유지한다.

Connectionless and Connection-oriented Protocols

Two types of Connection service:

  • Connectionless service
  • Connection-oriented service

Connectionless service 특징

  • Networrk layer : Connectionless는 같은 message에 속하는 다른 datagram이 다른 길로 가는 것을 의미한다.
  • Transport layer : Connectionless는 packet들이 독립적인 것을 의미한다. (순서 정렬X); Connection-oriented는 packet들이 의존적인 것을 의미한다. (순서 정렬 O)

Connectionless Service

Connection-oriented Service

Transport Layer Protocol

  1. Simple Protocol
  2. Stop & Wait Protocol
  3. Go-Back-N Protocol
  4. Selective Repeat

TCP/IP Protocol

  • Transport-layer의 TCP/IP protocol은 이러한 protocol의 수정 또는 조합해서 사용한다.

Simple Protocol

simple Protocol

  • flow control이나 error control을 하지 않는 Connectionless Protocol

Simple Protocol 예시

Stop-and-Wait Protocol

Stop-and-Wait Protocol

  • flow control과 error control을 함께 사용하는 connection-oriented protocol
  • sliding window 사이즈는 송신측가 수신측 모두 1 (하나보내고 확인해야하므로 비효율적)
  • 수신측은 packet을 보내고 다음 것을 보내기 전에 acknwoledgement를 기다린다.
  • 손상된 packet을 감지하기 위해, checksum을 각 data packet에 추가힐 필요가 있다.
    • 만약, checksum이 올바르지 않으면, packet은 손상되어졌고 버려진다.

Sequence Number

  • 중복 packet을 막기 위해, sequence number와 acknowledgement number가 사용될 수 있다.

Acknowledgement Number

  • Acknowledgement number는 수신측이 다음 받기로 예상하는 sequence number이다.

FSM for the Stop-and-Wait Protocol

Go-Back-N Protocol

transmission에 효율성을 높이기 위해

  • multiple packet은 수신측이 acknowlegement를 기다리는 동안 보내져야 한다.

Go-Back-N(GBN) Protocol

  • 몇몇의 packet은 ACK를 받기전에 보내질 수 있다.

    • 수신측은 한 packet을 buffer에 저장할 수 있다.
    • Sequence Number : 2^m의 나머지
  • Acknowledgment Number는 누적된다.

    • 다음 도착할 패킷으로 예상되는 sequence number를 정의한다.
    • 만약 ackNo가 7이면, 0~6사이의 packet이 안전하게 도착했고 수신측이 다음에 도착할 패킷을 7번으로 예상한다.

  • Sf : 수신측으로 부터 ack가 오지 않아 확인이 안된 것
  • Sn : 다음에 보낼 것

Send Window

  • send window는 전송되거나 보내질 수 있는 data packet에 sequence number를 포함하는 imaginary box이다.
  • send window의 최대 사이즈는 2^m-1이다.
    • 만약 m이 3이면, sequence number는 0~7이고 window size는 7이다.

Sliding of Send Window

  • send window는 ACK가 Sf와 Sn사이에 있는 ackNo가 도착하면 하나 이상의 slot을 오른쪽으로 slide할 수 있다.
  • 만약 ackNo가 6이면, 수신측이 sequence number가 6인 packet을 기다리는 것을 의미한다.

Receive Window

  • size는 항상 1이다.
  • 옳은 데이터 packet을 받고 옳은 ACK는 보내질 수 있다.
  • 어떤 순서가 맞지 않는 packet은 버려지고 재전송 받을 필요가 있다.
  • 다음에 받을 packet 번호인 Rn이라는 하나의 변수가 필요하다.

Timers

  • 하나의 timer만 첫 번째 outstanding packet을 위해 사용될 수 있다.

Resending Packets

  • timer가 만료될때(ACK가 오지 않아), 수신측은 모든 outstanding packet을 보낸다.

Send / Receive Window Size

  • Send Window Size는 2^m보다 작아야만 한다.
  • Receive Window Size는 항상 1이다.

Go-Back-N 예시

  • data packet이 손실 되지 않고, ACK가 손실 된 경우 : 문제 X

  • packet이 손실된 경우 : resend (Outstanding Packet을 다시 보냄)

FSM for GBN

Selective-Repeat Protocol

Go-Back-N Protocl은 수신측에서의 과정을 단순화한다.

  • 수신측은 오직 하나의 변수만 추적한다.
    • 순서가 맞지않는 packet을 buffer에 넣지 않는다; 단지 버린다.
  • 만약 newtork가 많은 packet을 손실한다면 비효율적이다.
    • 단일 pacekt이 손실되거나 손상될 때마다, 수신측은 모든 outstanding packet을 다시 보낸다.

Selectiv-Repeat(SR) Protcool은 실제로 잃어버린 packet만을 다시 보낸다.

Selective-Repeat(SR) Protcool

  • 순서에 맞지 않게 도착한 것 저장

Send Window

  • 최대 사이즈는 2^(m-1)로 훨씬 작다.
  • 만약 m이 4이면, sequence number는 0~15이고 send window의 최대 사이즈는 8이다.
    • GBN에서는 15이다.

Receive Window

  • receive window size는 send window size와 같다. (최대 2^(m-1)이다.)
  • 수신측은 packet을 순서대로 정렬시켜 application layer로 보낸다.

Timer

  • 각 outstanding packet마다 timer 하나씩
  • timer가 만료되면, 해당 되는 packet이 재전송된다.
  • 그러나, 대부분의 transprot layer protocol은 single timer를 사용한다. (TCP에서는 하나만 사용)

Acknowledgement

  • Acknowledgement number, ackNo는 에러 없는 sequence number를 받았다는 것을 의미한다.

Example

  • 수신측이 6개의 packet을 보냈다 : packet은 0, 1, 2, 3, 4 and 5
  • 송신측은 ackNo = 3이라는 ACK를 받았다
  • GBN과 SR을 사용하는 system이라면 어떻게 해석해야하나?

Solution

  • 만약 GBN을 사용하는 system이라면 :
    • 0, 1, 2 packet이 손상없이 잘 받았다는 것을 의미한다.
    • 수신측은 3번 packet을 받을 것을 예상한다.
  • 만약 SR을 사용하는 system이라면 :
    • packet 3번이 오류없이 잘 받았다는 것을 의미한다.
    • ACK는 다른 packet에 대해서는 말하지 않는다.

FSM for SR protocol

Flow diagram for Selective-Repeat Protocol

Window Size

  • 송신측과 수신측의 크기는 2^m의 반이다.
    • 만약 m이 2이면, window size는 2이다.
  • m = 2이고 window size가 2이면
    • 중복된 packet이 올바르게 제거 될 수 있다.
  • m = 2이고 window size가 3이면
    • 중복된 packet은 에러 없이 새로운 packet으로 인식되고 받아진다.

Bidirectional Protocol

이번 section에서 나온 4개 protocol은 모두 단방향이다 :

  • data packet은 한 방향으로만 이동한다.
  • Acknowledgement는 다른 방향으로 이동한다.

실제로는, data packet은 일반적으로 양방향이다 :

  • client로 부터 server 그리고 server로 부터 client로
  • Acknowledgment가 양방향으로 이동될 필요가 있다.

Piggybacking

  • 양방향 프로토콜의 효율성을 향상시키기 위해 사용된다.
  • packet이 A로 부터 B로 이동할때, B로 부터 도착한 packet에 대해 Acknowledgment를 같이 보낼 수 있다.

Design of piggybacking in Go-Back-N

profile
제 글이 유익하셨다면 ♡와 팔로우로 응원 부탁드립니다.

0개의 댓글

관련 채용 정보