새소식

반응형
CS 지식/네트워크

[네트워크] 23. Introduction to Transport Layer

2023.02.13
  • -
반응형

Logical Connection at the Transport Layer

  • Located between the application layer and the network layer.
  • Provides a process-to-process communication between two application layers

transport layer는 layer 1,2,3 와는 달리 통신망 상에 존재하는 것이 아니라 end system(host computer)에만 존재한다.

 

Process-to-Process Communications

  • Network layer versus. transport layer
    • Network layer: host-to-host(집에서 집)
      • computer level
    • Transport layer: computer level이 아니라 process level (특정 사람: 엄마 or 아들 or ...)

Client-Server Paradigm

  • Most common process-to-process communication is the client-server paradigm
    • client의 request -> server의 response
  • Operating systems support multiuser and multiprogramming environments.
  • Local host, local process, remote host, remote process must be defined

Addressing

  • Address required for delivery
  • Transport layer address: port number
    • 특정 process를 identify 가능

 

Addressing: Port Numbers

  • 16 bits
    between 0 and 65535: ephemeral(일시적인) port number
  • ICANN (Internet Corporation for Assigned Names and Numbers) range: well-known ports, registered ports, dynamic ports

  • 0~1023: well-knwon port(자주 쓰이는)
    • http, ftp, ...
  • 1024~49151: registered(등록해 놓고 쓸 수 있는)
    • 중복을 막기 위해 통보하고 쓴다.
  • 나머지: 동적으로(임의로) 할당하고 회수하여 자유롭게 사용하는
    • 일반 컴퓨터들이 사용

 

IP Addresses vs. Port Numbers

  • 녹색: destination address
    • 이를 보고 packet을 보냄
  • 주소가 맞으면 편지봉투(network layer header)는 벗겨지고 그 안에 있는 것을 transport layer에서 확인
    • transport layer header에는 13이라는 port number가 있다.
    • 특정인: 예를 들어 홍길동
  • 그러면 13번 port에 해당하는 프로세스에게 데이터를 전달한다.

 

Socket addresses

  • Process-to-process delivery needs two identifiers -> IP address and the port number
  • Socket address is the combination of an IP address and a port number
  • A transport-layer protocol needs a pair of socket addresses; the client and server socket address
    • pair가 딱 있으면 socket programming 가능!!

Encapsulation and Decapsulation

  • The packets at the transport layer are called user datagram, segments, or packets

  • original message를 transport layer에서 받아서 header를 붙여서 보냄
    • port number를 붙임
  • udp에서는 user datagram이라 부르고
  • tcp에서는 segments라고 부른다.

 

Multiplexing and Demultiplexing 기능

  • Addressing mechanism allows multiplexing and demultiplexing by the transport layer
    • mux의 default 그림은 여러 메세지를 받아서 하나로 내보내는 느낌이다.

  • mux: 여러개의 source로부터 나온 process들을 하나로 묶어주는 것
    • many to one
  • demux

 

Flow Control

  • producer가 생산해 내는 data를 consumer가 소비하는 data를 압도하는 경우 -> unbalanced
  • pushing: 데이터가 만들어지면 consumer의 의지 없이 그냥 보내는데 consumer가 자기가 handling하기 너무 빡세다 싶으면 stop 하라고 flow control 요청!
  • pulling: consumer가 request하여 데이터를 받는
    • consumer가 request를 할 때만 데이터를 받음, 말 그대로 pulling 방식
  • Flow control at transport layer: two buffers at sending and receiving transport layer

  • sender - transport layer 와 trasport layer - transport layer 간 flow control이 필요함.
  • sender는 편지를 보내려는 사람이고 transport layer는 우체국인데 우체국이 편지하나 보내주세요 라고 하지 않기 때문에 message를 sender 입장에서 그냥 push 한다.
  • push 형태의 message 전송이 일어나는 곳에서는 지나치게 빠른 속도로 오면 flow control이 필요 할 수 있다.
    • 그러나 pull 형태의 구간에서는 flow control이 필요하지 않음

 

Error Control(중요)

  • The underlying network layer, IP, is unstable
    • IP protocol은 주소는 잘 찾아가지만 error control이나 flow control이 없음
      • 내가 보내는 과정에서 error가 생길 수 있음
  • Error control at the transport layer is responsible for
    • Detecting and discarding corrupted packets(손상된 것을 detect하고 버림)
      • checksum or error check
    • Keeping track of lost and discarded packets and resending them(추적해서 재전송)
    • Recognizing duplicate packets and discarding them(중복 제거)
    • Buffering out-of-order packets until the missing packets arrive(늦게 온 packet을 위한 buffering 과정으로 순서 맞추기)
  • For error control, the sequence number are module 2m, where m is the size of the sequence number field in bits
    • sequence number 반드시 필요 - 4bit면 0~15 인데 modular 됨.
      • 만약 친구한테 편지가 100통 왔는데 그 중 하나가 도착하지 않았다면 다시 100통을 보내달라 할 수 없음 -> 그 중 몇 번째 편지가 오지 않았는데 판단하고 만약 13번째라면 13번째 편지만 다시 보내줘! 요청
    • If m is 4, the sequence numbers are 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4, ….
    • 이를 통해 packet이 corrupted, out-of-order, duplicated 되었는지를 파악하고 처리 가능

  • receiver는 잘 받았다는 ACK를 보낸다.(sequence number와 상응하는)
  • 만약 손상을 입었다면 버리고 ACK를 보내지 않음.
    • sender 입장에서 timer를 구동시켜 일정 시간 내에 ACK가 오지 않으면 retransmission 요구
  • traffic 문제나 등등의 상황에서는 답장이 늦기 때문에 ACK가 도착하기 전에 timer out되는 경우 sender는 그 사실을 모르고 또 보내버릴 것이기 때문에 receiver는 두 개의 duplicate data를 받게되는 상황.
    • sequence number로 판정하여 discard
  • out of order
    • 프로토콜에 따라 문제가 발생했다 판단하여 버리는 경우도 있고,
    • 올 때까지 기다렸다가 순서대로 주는 프로토콜도 존재

 

Combination of Flow and Error Control

  • Sliding window in circular format

  • m=4 -> 0~15 = mod 16
  • window size = 7
    • sender가 receiver 쪽으로부터 잘 받았다는 ack를 받지 않아도 보낼 수 있는 양
      • 저쪽에서 응답이 오지 않아도 계속 보내는데 그 양이 정해져 있음(꽉차면 더 이상 못 보냄)
  • window size를 채울 정도로 packet을 보냈음에도 receiver로부터 잘 받았다는 ack가 오지 않으면 지우지 못하고 계속 보관하고 있어야 함.(copy)
    • ACK가 오지 않아서 time-out 시에 재전송을 위한 copy를 가지고 있어야 함
  • outstanding - 미해결된
    • 편지를 보내 놓긴 했는데 그 편지에 대한 답장이 아직 오지 않아 기다리고 있는 상태
  • c에서 window가 다 채워졌고 그 후 receiver로부터 0번을 잘 받았다는 ack가 오게 되면 window는 이제 더 이상 0번 window를 보관할 필요가 없기 때문에 sliding 한다.
    • 그제서야 이제 7번 sequence No에 해당하는 packet을 보낼 수 있게 된다.
  • window size = 1 -> stop and wait

 

  • Sliding window in linear format

  • modular 16
  • window size = 7
  • window size가 꽉 차있는 경우(아무런 ack 없이 7개의 packet을 보낸 경우)에서 ack가 와야 sliding
  • 대부분의 경우 꽉차기 전에 ack가 오기 때문에 smoothly sliding 한다.

 

Congestion Control(혼잡 제어)

  • Mechanisms and techniques that control the congestion and keep the load below the capacity
    • capacity(처리 능력) 이하로 부하를 control
  • Congestion in networks occurs because routers and switches have queues-buffers that hold the packets before and after processing(실시간으로 처리할 수 없기 때문에)
    • queue가 너무 많이 차 있으면 혼잡
  • A router, for example, has an input queue and an output queue for each interface
  • Congestion at the transport layer is actually the results of congestion at the network layer
  • Very important issues in Internet

 

Connectionless vs. Connection-oriented

  • Connection-oriented: TCP, SCTP
    • connection establishment(connection 설정), data exchange, connection tear down: TCP and SCTP
  • Connectionless: UDP
    • 하나하나가 독립적으로 datagram 형식으로 전달
    • unreliable 하지만 연결을 맺고 끊는 과정이 없이 단순하기 때문에 실시간 통신에 유리

 

Reliable vs. Unreliable

  • data-link layer에서 CRC와 같이 이미 error check를 하는데 왜 transport layer에서 또 error control을 하는가?
    • data link를 거쳐서 error control을 했다고 해도 말단에서 error가 없을 것이라는 보장이 없음
  • 내가 편지를 보내면 우체국 끼리 어떠한 오류가 없도록 잘 보내는데 다른 사람한테 잘못 갈 수도 있음

 

Connectionless (CL) Service

  • reordering, numbering 등의 과정 없이
    • packet을 0,1,2 보내게 되면 물론 순서대로 갈 수 있지만 때로는 순서가 뒤 바뀔 수도 있을 것이다.
    • 그러나 이것을 그냥 받아들임
  • 그러나 굉장히 빠르고 단순함.
    • 실시간성이 중요한 것에서 잘 사용
  • unreliable 함.

 

Connection-Oriented (CO) Service

  • client가 connection을 open 해달라는 요청
  • Connection establishment(연결 설정 단계)
  • 메세지 전송
    • sequence number로 ordering 및 number을 하기 때문에 순서가 섞이지 않음.
  • connection closes request
  • connection teardown

 

CL and CO Service as FSMs

  • 양방향으로 각자 연결 맺거나 끊자고 요청
    • 나 -> 서버
    • OK
    • 서버 -> 나
    • OK
  • 4-way handshake

 

Transport-Layer: Simple Protocol

  • A simple connectionless protocol with neither flow nor error control

sender는 그냥 header 붙여서 보내기만 하고

receiver는 그냥 받기만 함.

 

  • delay되어 도착

 

Stop-and-Wait Protocol

  • A connection-oriented protocol which uses both flow and error control.
    • connection을 맺고 끊는 과정은 없어 connection less에 가깝긴 함.
    • sequence number를 썼다는 이유로 교재에서는 connection-oriented로 분류하는 것 같음.
  • Both the sender and the receiver use a sliding window of size 1.
    • 하나 보내고 ack 기다렸다가 ack 오면 sliding 후 다시 또 하나 보내고
      • 하나 보내면 저쪽에서 그거에 대한 ACK가 와야 다른 걸 보낼 수 있음.
  • The sender sends one packet at a time and waits for an acknowledgment before sending the next one.
  • To detect corrupted packets, we need to add a checksum to each data packet.

  • To prevent duplicate packets, the protocol uses sequence numbers and acknowledgement (ACK) number.
  • The ACK number always announces, in modulo-2(0,1,0,1....) arithmetic, the sequence number of the next packet expected

  • 아래 그림 오류
    • Error-free packet with seqNo ≠ R arrived

 

ACK 1: 0번을 잘 받았고 1번을 기대한다.

receiver의 window에는 1번이 올것으로 되어 있었는데 0번 packet이 옴 -> 다시 보내!(ACK 1)

  • 중복된 pakcet은 discard

 

Efficiency: Stop-and-Wait Protocol

  • Very inefficient if our channel is thick (large bandwidth or high data rate) and long (long round-trip delay).
    • 서울에서 부산까지 버스로 한명 보내고 한명 돌아오는 게 ...
  • Bandwidth-delay product: the volume of the pipe in bits when we think of the channel as a pipe
    • A measure of the number of bits a sender can transmit through the system while waiting for an acknowledgement from the receiver
  • (Pipelining: a task is begun before the previous task has ended)
    • No pipelining in Stop-and-Wait protocol
  • 공부한다는 측면에서 stop-and-wait을 배운 것이지 사실상 매우매우 비효율적임
    • channel이 매우 길다면 packet을 보내고 다시 받기 까지 굉장히 오래걸릴 것이기 때문에 ack를 받는 것과 상관없이(window size > 1) 보낼 수 있는 다른 프로토콜에 비해 사용성이 매우 떨어진다.

 

GBN, SR

Go-Back-N (GBN) Protocol

  • To improve the efficiency of transmission (to fill the pipe), multiple packets must be in transition while the sender is waiting for acknowledgment.
  • In other words, we need to let more than one packet be outstanding(시중에 나가 있는 packet) to keep the channel busy while the sender is waiting for acknowledgment

  • seqNo, checksum(error detection) for packet
  • ackNo, checksum for ACK
  • channel을 좀 더 busy하게 만들 수 있음 -> 더 효율적
  • GBN은 send window가 여러 개가 될 수 있음
    • window size 내에서는 여러개의 packet을 보낼 수 있음
  • receiver 쪽에서는 window size가 1 !!!!!!
    • 받는 거는 하나만 받겠다는 의미
  • 1, 2 ,3 ,4 .... 쭉쭉 보내다가 중간에 3번 packet이 lost되거나 corrupted되면 go-back-3 , 즉 3으로 다시 돌아가서 3번부터 다 다시 보내라고 하는 방식
    • 그 뒤의 4, 5,... 는 3번이 안 왔기 때문에 다 버리고 다시 보내야 함.
  • SR은 error 없이 잘 오면 일단 받아놓고 순서대로 다 오면 한 번에 다 보내버림

 

Go-Back-N (GBN) Protocol

  • Sequence number: modulo 2m
    • m=3 이면 0~7까지 쓸 수 있음 -> modulo 8
  • The ACK number is cumulative(누적되는) and define the sequence number of the next packet expected to arrive
    • ACK 3 -> 3번을 잘받았다는 것이 아니라 2번까지 잘 받았다는 것임
    • 만약에 ACK 3 후에 ACK 6이 오면 그 전의 4,5,6 전부 잘 받았다는 뜻
  • The send window is an abstract concept defining an imaginary box of the maximum size = 2m – 1 with three variables: Sf, Sn, and Ssize.
    • m=8이면 window size의 최대 크기는 7 -> 나중에 설명
  • Sf: First outstanding
  • Sn: Next to send
  • Ssize: Send window size

purged: 지워진

 

Sliding Window: GBN Protocol

  • The send window can slide one or more slots /when an error-free ACK with ackNo greater than Sf and less or equal to Sn (in modular arithmetic) arrives

  • 만약 a. 상황에서 ackNo=4가 왔다면 3번까지 잘 받았단 뜻이므로 4번에 대한 ACK는 오지 않은 셈이다
    • 그렇기 때문에 sliding 할 수 없고 ackNo는 Sf와 같으면 sliding 할 수 없다!(equal이 들어가면 안됨)
  • 반대로 Sn과는 같아도 되는 이유가 바로 이것 때문임.

 

Sliding Window: GBN Protocol

  • The receive window is an abstract concept defining an imaginary box of size 1 with s single variable Rn. The window slides when a correct packet has arrived; sliding occurs one slot at a time
    • window가 5번을 보이고 있으므로 만약 5번 packet이 잘 도착하면 receiver는 ACK 6을 보냄으로써 6을 받을 준비를 하고 window를 6이 보이게 sliding한다.
    • 근데 만약 6번을 받을 준비를 하고 있는데 7번이나 8번이 오게 되면 이는 받을 수 없으므로 버려진다.

  • Timer for Sf
  • Resending packets

 

FSMs for GBN Protocol

  • process로부터 packet을 만들라는 요청이 옴
    • packet을 만들고

 

Window Size: GBN

  • The size of the send window must be less than 2m; the size of the receive window size is always 1.
  • 왜 maximum window size가 2m이 아니라2m - 1일까?

  • 만약 mod 4를 사용하고 있다면 (m=2)
    • ACK 1, 2, 3, 0이 모두 lost되면 receiver는 새로운 0을 기다리고 있는데 sender에서는 이것이 헷갈릴 것이다.
    • receiver는 새로운 0을 기다리고 있는데 sender에서는 맨처음 packet 0에 대한 timer가 time-out되어 다시 보내게 되는데 receiver는 잘 온 것으로 착각하여 그대로 진행 되어 버린다.

 

Example 23.7: GBN

ACK2가 lost된 상황에서 ACK3가 제대로 도착하여 culmulative 방식이기 때문에 ACK2도 잘 온 것으로 받아들여 그대로 문제없이 진행되버린다.

 

Example 23.8: GBN

  • 수신측에서 1번이 아직 안 왔기 때문에 2, 3번이 오면 버려버림.
  • 그러고 나서는 ACK1을 계속 보내는 것
  • 그러다 time-out되면 packet1부터 resent

 

Selective-Repeat (SR) Protocol

  • GBN보다 성능이 좋은 점이 있음.
  • The GBN is inefficient if the underlying network protocol loses a lot of packets.
  • Each time a single packet is lost or corrupted, the sender resends all outstanding packets

Window in SR Protocol

  • Send window and receive window for Selective-Repeat protocol
    • BN과 가장 큰 차이는 multiple receive window!
    • 근데 최대 크기가 2m-1임!
  • ACK number defines the sequence number of the error-free packet received
    • SR에서는 ACK6이면 6번 잘받았다는 뜻!(GBN과 다름!)

  • 순서대로 안 와도 일단 버리거나 application layer에 보내는 것이 아니라 일단 채워넣고 순서대로 오면 한 번에 sliding

 

FSMs for SR Protocol

Example 23.10: SR Protocol

SR에서는 ACK 0이 0번을 잘 받았다는 뜻이다.

1번을 다시 보낼 때 그 이후의 packet까지 다시 보내지 않는다.

 

Window Size: SR

  • The size of the send and receive window can be at most one-half of 2m

m의 절반 정도를 window size로 해야 duplicated packet에 대한 처리가 가능함

 

Bidirectional Protocols: Piggybacking

  • Data packets are normally flowing in both directions. This means that acknowledgments also need to flow in both directions.
    • ACK를 받으면서 내 packet도 같이 보낼 수 있음
    • packet+ACK
  • Piggybacking is used to improve the efficiency of the bidirectional protocols. When a packet is carrying data from A to B, it can also carry acknowledgment feedback about arrived packets from B

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.