[네트워크] 컴퓨터 네트워크

[Network] 전송층 개요

ITsubin 2022. 4. 18. 02:09

{ 전송층 }

 - 네트워크층과 응용층 사이에 위치

 - 응용층에게 서비스를 제공할 의무가 있음

 - 네트워크로부터 서비스를 제공받음

 - End to End (종단-대-종단)

 

{ 전송층 프로토콜의 첫 번째 임무 }

 - 프로세스-대-프로세스 통신 제공

 - 프로세스는 전송층 서비스를 사용하는 응용층 개체(실행 중인 프로그램)

 - 메시지를 적절한 프로세스에 전달 책임

 

{ 주소 체계 : 포트 번호 }

 - 프로세스-대-프로세스 통신 방법 : 클라이언트 / 서버

 - 클라이언트와 서버 프로세스는 같은 이름을 가짐

          => daytime cliend process / daytime server

 - 원격 컴퓨터는 여러 개의 서버 프로그램 실행

 - 로컬 컴퓨터로 여러 개의 클라이언트 프로그램 수행

 

{ 프로세스 통신을 위해 필요한 사항 }

 - 로컬 호스트 (local host)

 - 로컬 프로세스 (local process)

 - 원격 호스트 (remote host)

 - 원격 프로세스 (remote process)

 

{ ICANN }

 - Internet Corporation for Assigned Names and Numbers

 - 잘 알려진 포트 : 0 ~ 1,023

 - 등록된 포트 (registered port) : 1,024 ~ 49,151

 - 동적 포트 (dynamic port) : 49,152 ~ 65,535

 

{ 소켓 주소 (Socket address) }

각 종단점에서 연결을 만들기 위해 필요한 주소

IP주소와 포트 번호의 조합

 

{ 캡슐화와 역 캡슐화 (캡슐화 : 헤더를 붙임 / 역 캡슐화 : 헤더를 뗌) }

 - 캡슐화는 전송 측에서 수행

 - 전송할 메시지가 있는 프로세스는 메시지와 한 쌍의 소켓 주소, 전송층 프로토콜에 필요한 정보들을 전송층으로 보냄

 - 전송층은 수신한 데이터에 전송층 헤더를 붙임

 

{ 다중화와 역다중화 }

 - 다중화(multiplexing) : 개체가 여러 발신지로부터 정보를 수신하는 경우

 - 역다중화(demultiplexing) : 개체가 여러 목적지로부터 정보를 전달하는 경우

 

{ 흐름 제어 (Flow Control) }

 - 정보 생산자와 소비자간에 생성율과 소비율의 균형 중요

 - 정보를 생산자로부터 소비자로 전달하는 방법

      - 밀기(Pushing) : 소비자 요구 없이 생산자가 전달

      - 끌기(Pulling) : 소비자가 요구한 경우만 전달

 

{ 버퍼 }

 - 흐름 제어를 구현하는 한 가지 방법
 - 송신 전송층에 하나, 그리고 수신 전송층에 또 다른 하나 등 두 개의 버퍼(buffer)를 이용
         --> 버퍼는 송신 측과 수신 측에서 패킷을 저장할 수 있는 일련의 메모리 영역
 - 수신 전송층의 버퍼가 가득 차면, 수신 전송층은 패킷의 전송을 멈추도록 송신 전송층에게 알린다.
 - 버퍼에 빈 공간이 생기면, 수신 전송층은 송신 전송층에게 다시 전송해도 된다고 메시지를 보낸다.
 
 

{ 오류 제어 : 신뢰성을 제공하기 위해 사용 }

 - 훼손된 패킷의 감지 및 폐기

 - 손실되거나 제거된 패킷 추적과 재전송

 - 중복 수신 패킷 확인 및 폐기

 - 손실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷을 버퍼에 저장

 

{ 순서 번호(sequence number) }

 - 어떤 패킷을 재전송해야 하는지

 - 어떤 패킷이 중복되었는지

 - 어떤 패킷이 순성 어긋나게 도착했는지

 - 패킷에 부여된 일련번호 : 2m-1, m비트

 

{ 확인 응답(ACK) }

 - 긍정과 부정 신호

 

{ 흐름 제어와 오류 제어의 결합 }

 - 송신측과 수신측에 각각 버퍼 사용

 - 버퍼에 번호를 부여, 순서번호와 확인응답 번호로 사용

 - 닫이 창(sliding window) 개념 이용

 - 원형 또는 선형으로 표현

 

{ 혼잡(congestion) 제어 }

 - 네트워크로 전송되는 패킷의 수(load)가 네트워크에서 처리할 수 있는 용량을 초과할 때 발생

 - 개방 루프(open-loop) 혼잡 제어 : 혼잡 미연 방지

            --> 재전송 정책 : 재전송 타이머 사용

            --> 창 정책 : 선택적 반복(selective-repeat) 창 방식이 N-프레임-후퇴(go-back-N) 방식보다 좋은 성능을 제공

            --> 확인응답 정책 : 수신 측에서는 자신이 전송할 패킷이 있거나 / 특정한 타이머가 만료되는 경우에만 전송

 - 폐 루프(closed-loop) 혼잡 제어 : 혼잡 발생 후 완화

 

{ 비연결형과 연결형 서비스 }

 - 비연결형 서비스

       - 메시지를 전송 가능한 작은 단편으로 나누어 전송

       - 각각의 조각을 독립적인 단위로 간주

       - 순서에 어긋나서 도착하는 경우 발생

 - 연결형 서비스

       - 먼저 서버와 클라이언트간 연결 설정

       - 데이터 교환 완료 후 연결 해제

 

{ 전송층 프로토콜 }

 - 단순 프로토콜(Simple Protocol)

 - 정지--대기(Stop-and-Wait) 프로토콜

 - N-프레임-후퇴(Go-Back-N) 프로토콜

 - 선택적-반복(Selective-Repeat) 프로토콜

 

++ ARQ? : Automatic Repeat reQuest : 자동 반복 요청

 

{ 단순 프로토콜(Simple Protocol) }

 - 흐름 제어나 오류 제어가 없는 비연결형 프로토콜