스터디

Chapter12. 전송층 개요

ttoance 2026. 5. 17. 11:22
반응형

학습 목표

  • 전송층의 프로세스-대-프로세스-통신을 정의하고, 이것과 네트워크층의 호스트-대호스트 통신을 비교한다.
  • 전송층의 주소 메커니즘, 포트 번호, 그리고 여러 가지 목적을 위해 사용되는 포트 번호의 범위를 정의한다.
  • 전송층의 패킷화 문제, 그리고 메시지의 캡슐화와 역캡슐화를 설명한다.
  • 전송층에서 제공하는 다중화(다-대-일)와 역다중화(일-대-다)를 설명한다. 
  • 전송층에서 흐름 제어가 어떻게 동작하는지를 설명한다. 
  • 전송층에서 오류 제어가 어떻게 동작하는지를 설명한다. 
  • 전송층에서 혼잡 제어가 어떻게 동작하는지를 설명한다. 
  • 전송층의 비연결형과 연결형 서비스를 설명한다. 
  • 단순 프로토콜, 정지-대기 프로토콜, N-프레임-후퇴 프로토콜 그리고 선택적 반복 프로토콜 등 4개의 일반 전송층 프로토콜과 응용들의 동작을 설명한다.
  • 피기배깅 방법을 이용한 전송층의 양방향 통신 방식에 대하여 설명한다. 

1. 개요 

  • 전송층은 네으춰크 층과 응용층 사이에 위치한다.
  • 전송층은 두 으용층 사이에서 프로세스-대-프로세스 통신을 제공하는데, 하나는 로컬 호스트이고 하나는 원격 호스트이다. 

 

2. 전송층 서비스

2.1 프로세스-대-프로세스 통신

  • 전송층 프로토콜의 첫 번째 임무는 프로세스-대-프로세스 통신을 제공하는 것이다. 
  • 네트워크층은 컴퓨터 레벨의 통신(즉, 호스트-대-호스트 통신)만 책임을 진다. 
    • 목적지 컴퓨터에게만 메시지를 전송한다. 

2.2 주소 체계: 포트번호

  • 가장 보편적인 방법은 클라이언트 서버 패러다임을 이용하는 것이다. 
    • 클라이언트라는 로컬 호스트에 있는 프로세스는 보통 서버라는 원격 호스트에 있는 프로세스로부터 제공되는 서비스를 필요로 한다. 
  • 로컬 호스트와 원격 호스트는 IP주소를 이용하여 정의된다. 
  • 프로세스를 정의하기 위해서는 포트 번호 라는 두 번째의 식별 번호가 필요하다. 
  • TCP/IP 프로토콜 모음에서 포트 번호는 0과 65,535 사이의 정수이다. 
  • 클라이언트 프로그램은 임시 포트 번호 라는 임의의 포트 번호로 자신을 지정한다. 
    • 단명하며 일반적으로 클라이언트의 수명은 짧기 때문이다. 
  • 서버 포트 번호는 임의로 지정할 수 없다. 
    • 임의로 지정하게 된다면 서버 이용하기 원하는 클라이언트 측의 프로세스는 서버의 포트 번호를 알 수가 없다. 
  • ICANN 범위
    • 잘 알려진 포트번호 well-known port number 0~ 1023
    • 등록된 포트번호 registered port number 1024 ~ 49151 
      • INCANN에 의해서 배정되거나 제어되지 않는다. 중복 피하기 위해 ICANN에 등록될 수 있다.
    • 동적 포트번호 dynaminc port number 49152 ~695335
      • 제어되거나 등록되지 않는다. 
      • 임시 또는 사설 포트 번호로 사용될 수 있다. 
  • 소켓 주소
    • IP주소와 포트 번호의 조합을 소켓 주소라고 한다. 
    • 클라이언트 소켓 주소는 클라이언트 프로세스를 유일하게 정의하고 서버 소켓 주소는 서버 프로세스를 유일하게 정의한다. 

 

2.3 캡슐화와 역캡슐화 

  • 캡슐화는 전송 측에서 수행된다. 
    • 전송할 메시지가 있는 프로세스는 메시지와 한 쌍의 소켓 주소, 그리고 전송층 프로트콜에 필요한 정보들을 전송층으로 보낸다. 
    • 전송층은 수신한 데이터에 전송층 헤더를 붙인다. 
    • 전송층 패킷을 사용자 데이터그램, 세그먼트 , 또는 패킷이라고 한다. 
  • 역캡슐화는 수신 측에서 수행한다. 
    • 메시지가 목적지 전송층에 도착하면, 전송층은 헤더를 제거하고 메시지를 응용층에서 실행하는 프로세스로 전달한다. 
    • 수신된 메시지에 대한 응답을 보낼 경우를 대비하여 송신 측 소켓 주소가 프로세스로 전달된다. 

 

2.4 다중화와 역다중화 

  • 개체가 여러 발신지로부터 정보 수신하는 경우를 다중화 multiplexing이라고 하며, 개체가 여러 목적지로 정보를 전달하는 경우를 역다중화 demultiplexing이라고 한다. 
  • 송신측 전송층은 다중화를 수행하며, 수신 측 전송층은 역다중화를 수행한다. 

 

2.5 흐름 제어

  • 하나의 개체가 정보를 생성하고 다른 개체가 정보 소비할때 생성률과 소비율 간에 균형이 이루어져야 한다. 
  • 만일 정보가 소비되는 속도보다 더 빨리 생산된다면, 소비자 측에서 데이터 과도하게 수신되게 되어 정보의 일부가 손실될 수 있다. 
    • 흐름 제어(flow control)
  • 생성되는 정보가 소비되는 속도보다 더 늦다면, 소비자 측은 정보의 수신을 기다리게 되어 시스템의 효율성이 떨어진다. 
  • 밀기와 끌기 
    • 정보를 생산자에서 보시자로 전달하는 방법은 밀기와 끌기 중 하나로 이루어질 수 있다. 
    • pushing : 소비자의 요청 없이 정보가 생성될 때마다 전송 측에서 정보를 전달하는 경우 
      • 흐름 데어가 필요하다.
    • pulling : 소비자가 요청한 경우에만 생성자가 정보 전달하는 경우 
      • 흐름 제어가 필요하지 않다. 
  • 전송층에서의 흐름 제어

  • 버퍼
    • 흐름 제어의 여러가지 방법 중, 일반적인 방법은 버퍼를 두는 것이다. 
    • 송신 전송층에 하나, 그리고 수신 전송층에 하나 등 2개의 버퍼를 이용할 수 있다. 
    • 버퍼는 송신 측과 수신 측에서 패킷을 저장할 수 있는 메모리 영역이다. 
    • 소비자에서 생산자로 신호를 전송하는 경우에 흐름 제어 기반의 통신이 이루어진다. 

 

2.6 오류 제어 

  • 인터넷에서는 네트워크층이 신뢰성을 제공하지 않기 때문에, 응용층에서 신뢰성을 요구하는 경우에 전송층에서 신뢰성을 제공할 수 있어야 한다. 
  • 신뢰성은 전송층에 오류 제어 서비스를 추가함으로써 제공할 수 있다. 
    • 훼손된 패킷의 감지 및 폐기
    • 손실되거나 제거된 패킷을 추적하고 재선종
    • 중복 수신 패킷을 확인하고 폐기
    • 손실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷을 버퍼에 저장 
  • 순서 번호
    • 패킷의 순서 번호를 저장할 수 있또록 전송층 패킷에 한 필드를 추가해야한다. 
    • 어떤 패킷이 중복되었는지 또는 순서가 어긋나게 도착하는지 알 수 있다.
  • 확인응답
    • 오류 제어를 위하여 긍정과 부정 신호를 모두 사용할 수 있다. 
    • 수신 측에서는 오류 없이 잘 수신된 패킷들에 대해서 확인응답을 전송할 수 있다. 
    • 수신 측은 훼손된 패킷을 단순히 버린다. 
    • 송신 측에서는 타이머를 사용해서 패킷의 손실을 감지한다.
      • 패킷 전송한 후 송신 측은 타이머 구동하고, 타이머 만료되기 전까지 ACK가 도착하지 않으면 송신 측은 패킷을 재전송한다. 

 

2.8 혼잡 제어

  • 전송되는 패킷의 수를 나타내는 네트워크의 로드가 네트워크의 처리할 수 있는 패킷의 수를 넘어가는 경우에 혼잡이 발생한다. 
    • 혼잡은 라우터나 스위치가 패킷을 저장하기 위한 버퍼나 큐를 가지고 있기 때문에 발생한다. 
  • 혼잡 제어는 혼잡이 일어나지 않도록 사전에 방지하거나, 또는 만일 발생하면 호납을 제거하기 위한 기술과 메커니즘을 말한다. 
  • 개방 루프 혼잡 제어
    • 혼잡을 사전에 방지하기 위한 정책들이 적용된다.
  • 재전송 정책
  • 창 정책
    • 선택적 반복 selective-repeat 창 방식과 N-프레임-후퇴 go-back-N창 방식
  • 확인응답 정책
    • 수신 측에서 자신이 전송할 패킷이 있거나 또는 특정 타이머가 만료되는 경우에 
    • 혹은 한번에 N개의 패킷에 대해 확인 응답 처리
  • 폐 루프 혼잡 제어 
    • 혼잡이 발생한 후에 혼잡을 완화시키기 위한 방식
    • 혼잡이 발생하면 창의 크기를 조절한다. 

 

2.9 비연결형과 연결형 서비스

  • 비연결형 서비스
    • 패킷은 순서에 어긋나게 목적지에 도착할 수 있다. 
    • 동일한 메시지에 속하는 서로 다른 데이터그램이 서로 다른 경로를 겹칠 수 있다. 
    • 흐름 제어나 오류 제어 또는 혼잡 제어가 구현될 필요가 없다. 
  • 연결형 서비스
    • 클라이언트와 서버는 먼저 연결을 설정하고 데이터 교환은 연결이 설정된 이후에 가능하다. 
    • 데이터 교환이 완료된 후에야 연결은 해제된다. 

 

3. 전송층 프로토콜

3.1 단순 프로토콜

  • 흐름 제어나 오류 제어가 없다.
  • 이 프로토콜에서는 수신 측은 수신한 패킷을 즉시 처리할 수 있다고 가정한다. 

 

3.2 정지-후-대기 프로토콜

  • 흐름 제어와 오류 제어를 모두 제공한다. 
  • 송신 측과 수신 측은 모두 크기가 1인 미닫이 창을 사용한다. 
  • 송신 측은 한번에 하나의 패킷을 전송하고 확인응답이 오기 전까지는 다음 패킷을 전송하지 않는다. 
  • 패킷이 훼손되었는지 검사하기 위해 각 게이터 패킷에 검사합을 추가한다. 
  • 송신 측은 패킷을 전송할 때마다 타이머를 구동한다. 
    • 타이머가 만료되기 전에 확인응답이 도착하면, 타이머는 정지되고 송신측은 다음 패킷을 전송한다. 
    • 만일 타이머가 만료되면, 송신측은 패킷이 손실되거나 훼손되었다고 간주하고 패킷을 재전송한다. 

 

3.3 N-프레임-후퇴 프로토콜

  • 전송 효율을 향상시키기 위해서는 송신 측은 확인 응답을 기다리는 동안에 여러 개의 패킷을 전송할 수 있어야 한다. 
  • N-프레임-후퇴 프로토콜은 확인응답을 수신하기 전에 여러 개의 패킷을 전송할 수 있다. 

 

3.4 선택적 반복 프로토콜

  • N-프레임-후퇴 프로토콜은 하부의 네트워크 프로토콜에서 많은 패킷이 손실될 때마다 비효율적이다. 
    • 하나의 패킷이 손실되거나 훼손될 때마다, 송신 측은 모든 미해결 패킷들을 재전송한다. 
  • 선택적 반복 프로토콜은 손실된 패킷만 선택적으로 재전송된다. 

 

3.5 양방향 프로토콜 : 피기백킹

  • 앞에서 설명한 네 개의 프로토콜은 모두 단방향이다. 
  • 피기백킹 이라는 기술은 양방향 통신의 효율을 향상시키기 위해 사용된다. 
    • A에서 B로 데이터 전달하는 패킷은 또한 B로부터 수신한 패킷에 대한 확인응답과 관련된 피드백 정보도 같이 전달할 수 있다. 
    • 마찬가지로 B에서 A로 전달하는 패킷에도 A로부터 수신된 패킷에 대한 확인응답과 관련된 피드백 정보도 같이 전달할 수 있다. 

반응형