3.1 트랜스포트 계층 서비스 및 개요

 

애플리케이션 프로세스로부터 수신받은 메시지를 세그먼트로 변환한다.

세그먼트는 네트워크 계층으로 넘겨줄 때 패킷으로 변환된다.

 

 

1) 트랜스포트 계층과 네트워크 계층 사이의 관계

트랜스포트 계층 프로토콜은 애플리케이션 계층과 네트워크 계층간에 메시지를 운반할 뿐이다. 각 계층은 하위 계층에서 무슨 작업을 하는지 신경 쓸 필요가 없다.

 

 

2) 인터넷 트랜스포트 계층의 개요

트랜스포트 계층은 TCP와 UDP 두 가지의 프로토콜이 있다.

두 프로토콜의 기본적인 기능은 IP 전달 서비스를 Host-to-Host에서 Process-to-Process로 확장하는 것이다. (다중화와 역다중화)

TCP는 UDP와 다르게 신뢰적 데이터 전달과 혼잡제어를 제공한다.

 

 

3.2 다중화와 역다중화

 

메시지를 알맞는 목적지 프로세스에 전달해주는 작업이다.

UDP와 TCP 모두 지원하는 개념이지만 작동 원리가 조금 다르다.

 

  • 다중화 : 세그먼트들을 네트워크 계층으로 전달하는 작업. 애플리케이션 계층에서 트랜스포트 계층으로 소켓을 통해 메시지가 전달될 때, 하나의 세그먼트로 캡슐화 하여 네트워크 계층으로 전달하는 과정이다.
  • 역다중화 : 세그먼트들을 애플리케이션 계층의 올바른 소켓으로 전달하는 작업. 세그먼트의 헤더 정보를 읽어서 올바른 소켓을 판단한다.

 

UDP의 Connectionless 역다중화

UDP는 TCP와 다르게 소켓과 소켓이 1:1 매핑 되지 않는다. (connectionless)

그래서 헤더 정보의 목적지 포트번호만을 보고 전달된다.

 

TCP의 Connection-oriented 역다중화

TCP는 목적지 포트가 모두 80인데도 불구하고 서로 다른 소켓으로 간다.

그 이유는 "TCP 소켓은 고유의 포트번호가 아닌 고유의 ID(집합)를 가지기 때문"이다.

집합은 출발지의 IP주소/포트번호, 목적지의 IP주소/포트번호 4개 요소로 이루어진다.

4개 요소중 하나라도 다르면 다른 소켓으로 인식하기 때문에 포트번호가 같더라도 역다중화를 통해 올바른 소켓으로 전달된다.

 

 

3.3 비연결형 트랜스포트: UDP

 

UDP 세그먼트 헤더

UDP가 비연결, 비신뢰성이라고 하더라도 간단한 오류 검출 기능은 가지고 있다.

데이터가 유실될지언정 잘못된 데이터가 전달되지는 않는다.

에러가 없으면 세그먼트를 바로 목적지 포트 소켓으로 넘겨준다. 매우 단순한 구조이다.

단순한 구조인 만큼 오버헤드가 적다.

 

 

3.4 신뢰성 있는 데이터 전송의 원리

 

신뢰성 있는 데이터 전송은 TCP의 중요한 개념중 하나이다.

TCP는 트랜스포트 계층의 애플리케이션 계층에 대한 데이터의 신뢰성을 보장한다. 하지만 하위 계층에서는 데이터의 신뢰성을 보장할 수 없다.

 

 

1) 신뢰적인 데이터 전달 프로토콜의 구축

비신뢰적인 데이터 전달이라 함은 데이터의 에러 또는 유실 둘 중 하나가 발생할 수 있다는 의미이다.

 

◾ 완벽하게 신뢰적인 채널 상에서의 데이터 전송: rdt1.0 (reliable data transfer)
하위 채널이 완전히 신뢰적이라고 가정한다. 이 경우에는 각 레이어가 송수신을 바로 진행시키면 된다. 완전히 신뢰적인 채널에서는 수신 측이 송신 측에게 어떠한 피드백도 제공할 필요가 없고 '천천히' 라는것도 요청할 필요가 없다.

 

rdt1.0의 유한 상태 머신(FSM)

 

 비트 오류가 있는 채널 상에서의 신뢰적 데이터 전송: rdt2.0
패킷 안의 비트들이 하위 채널에서 손상될 수 있지만 송신 순서대로 수신된다고 가정한다. 전화통화의 예를 생각해보면 된다.
상대방의 말을 잘 들었다면 확인 응답을 해준다(수신자 피드백, ACK). 상대방의 말이 잘 안들리면(에러 검출) 다시 말해달라고 요청하고(수신자 피드백, NAK) 상대방은 같은 말을 다시 해준다(재전송). 이 세가지가 자동 재전송 요구(ARQ) 프로토콜에 요구된다.

송신자 프로토콜은 수신자의 피드백을 받아야 다음 행동을 결정할 수 있으므로 ACK/NAK 패킷을 기다려야 한다.

 

rdt2.0의 FSM. 전송-후-대기 프로토콜 이라고도 한다

단, rdt2.0은 피드백 패킷이 손상되어 송신측으로 들어오는 치명적인 문제가 발생할 수 있다.

피드백 패킷이 손상되어 송신자가 ACK/NAK를 판별하지 못할 때, 재전송을 한다면 수신자는 패킷의 중복 수신이 발생하므로 패킷에 순서번호(sequence number)를 추가해서 수신자가 중복 수신을 처리하게 한다. 순서번호는 최소 1비트면 충분하다. 이 개선사항을 rdt2.1이라고 하자. 순서번호 비트인 0, 1을 처리하기 위해 기존의 상태보다 2배 많은 상태를 가지게된다.

 

개선된 rdt2.1 송신자 FSM

 

개선된 rdt2.1 수신자 FSM

여기서 한발 더 나아가서 오류검출 및 중복 수신을 송신자 측에서도 같이 처리한다면 NAK 없이 ACK 처리만으로 구현이 된다. (rdt2.2: NAK-free protocol)

수신자에서 오류 검출시 NAK가 아닌 ACK와 함께 마지막으로 수신된 순서번호를 함께 송신자에게 보낸다.

송수신자의 순서번호가 다르면 재전송을 하게 된다.

 

NAK가 사라진 rdt2.2 송신자 FSM

 

NAK가 사라진 rdt2.2 수신자 FSM

 

 비트 오류와 손실 있는 채널 상에서의 신뢰적 데이터 전송: rdt3.0
손실은 수신자에게 가는 메시지가 유실되거나 송신자에게 돌아오는 피드백이 유실되는 두 가지 경우가 존재한다.

어떤 경우간에 송신자 입장에서는 같은 현상이다. 이 때 시간 제한(timeout)을 걸어서 재전송을 하면 손실은 해결할 수 있다.

 

 

rdt3.0 송신자 FSM

 

rdt1.0 : 모든 채널이 완벽하게 신뢰적일 때. 호출 받는대로 바로 송수신이 이루어진다.

rdt2.0 : 채널에서 비트 오류가 발생할때. 오류 검출, 수신자 피드백, 재전송이 포함된 ARQ 프로토콜에 의해 송수신이 이루어진다.

rdt2.1 : 피드백이 손상될 때. 송신자가 순서번호를 추가하여 수신자에서 중복 패킷을 처리한다.

rdt2.2 : 피드백에 순서번호를 포함시켜서 송수신자 양쪽에서 판별한다. ACK 피드백만 존재한다.

rdt3.0 : 손실이 발생할 때. 송신자 rdt 2.2에 타이머를 추가하여 타임아웃시 재전송한다.

 

rdt3.0의 상황별 sender-receiver

(d)는 유실이 발생하지는 않았지만 피드백이 지연이 생겨서 늦게 도착하는 바람에 타임아웃이 발생한 경우이다.

 

rdt3.0까지 구축하며 기능적으로 정확한 신뢰적 데이터 전송 프로토콜을 완성시켰지만 성능에는 만족하기 어렵다.

전송 후 대기 방식이기 때문에 속도가 너무나도 느리다.

 

 

2) 파이프라인된 신뢰적 데이터 전송 프로토콜

전송 후 대기 방식은 한번에 하나의 패킷만 보내기때문에 속도가 매우 느리므로 파이프라이닝화 시켜서 효율을 높인다.

 

 

3) N부터 반복(Go-Back-N, GBN)

수신자는 받은 올바른 패킷에 대해서만 ACK 피드백을 보내주고 해당되지 않는 패킷은 모두 버리기 때문에 수신측은 버퍼가 필요없다.

 

  1. 송신자가 SEQ 1,2,3,4,5를 보냈을 때, 2가 유실되었다면 수신자는 ACK 1,2,2,2를 보내고 전달받은 SEQ 3,4,5를 버린다.
  2. 송신자측에서 ACK 2를 받지 못해 타임아웃이 일어나면 SEQ 2,3,4,5를 재전송한다.
  3. 수신자는 ACK 3,4,5,5를 보낸다.

 

GBN

패킷 하나의 손실때문에 많은 패킷을 다시 재전송하는 단점이 존재한다.

 

 

4) 선택적 반복(Selective Repeat, SR)

GBN과 다르게 수신자도 버퍼를 가지고 ACK를 받지 못한 패킷마다 타이머를 계산한다.

수신자는 받은 패킷의 순서와 상관없이 받은 패킷에 대해 무조건 ACK를 피드백한다.

 

  1. 송신자가 SEQ 1,2,3,4,5를 보냈을 때, 2,4가 유실되었다면 수신자는 ACK 1,3,5를 보내고 전달받은 SEQ 3,5를 버퍼에 저장한다.
  2. 송신자 측에서 ACK 2,4를 받지 못해 타임아웃이 일어나면 SEQ 2,4를 재전송한다.
  3. 수신자는 ACK 2,4를 보내고 버퍼에 있는 SEQ 3,5를 처리한다.

 

ACK가 손실되는 경우 송신자의 타이머가 만료되어 재전송되지만 수신자는 이미 받은 패킷이므로 별도의 저장 없이 ACK만 다시 피드백해준다.

 

SR

'이론 > 네트워크' 카테고리의 다른 글

네트워크 계층: 제어 평면  (0) 2022.11.20
네트워크 계층 : 데이터 평면  (0) 2022.11.19
트랜스포트 계층 (2)  (0) 2022.11.18
애플리케이션 계층  (0) 2022.11.15
컴퓨터 네트워크와 인터넷  (0) 2022.11.08

2.1 네트워크 애플리케이션의 원리

 

각 호스트의 프로세스간의 통신이라고 볼 수 있다. IPC와 같은 개념이다.

 

1) 네트워크 애플리케이션 구조

주로 클라이언트-서버 구조 또는 P2P구조로 이루어진다.

  • 클라이언트-서버 : 클라이언트와 다르게 서버는 고정 IP 주소를 가진다.
  • P2P : 특정 서버를 통하지 않고 피어가 직접 통신한다.

 

 

2) 프로세스 간 통신

서로 다른 종단 시스템에서 프로세스는 네트워크를 통한 메시지 교환으로 서로 통신한다.

 

두 프로세스 간의 통신 세션에서 통신을 초기화하는 프로세스를 클라이언트, 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버라고 한다.

 

소켓을 통해서 네트워크로 메시지를 주고 받는다. 소켓은 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스이다.

 

 

3) 애플리케이션이 이용 가능한 트랜스포트 서비스

  • 신뢰적 데이터 전송 : 전송한 데이터가 유실되지 않고 온전하게 목적지까지 전달되도록 보장된 전송 서비스.
    트랜스포트 계층 프로토콜이 애플리케이션에 제공할 수 있는 한 가지 중요한 서비스이다.
  • 처리량
  • 시간
  • 보안

 

 

4) 인터넷 전송 프로토콜이 제공하는 서비스

  • TCP : 연결지향형 서비스와 신뢰적 데이터 전송 서비스를 포함한다.
  • UDP : 비연결형 서비스와 비신뢰적 데이터 전송 서비스를 제공한다.

 

인터넷 트랜스포트 프로토콜은 시간 혹은 대역폭 보장을 제공하지는 않는다.

 

 

2.2 웹과 HTTP

 

1) HTTP 개요

HyperText Transfer Protocol. TCP를 전송 프로토콜로 사용한다. HTTP 서버는 클라이언트에 대한 정보를 유지하지 않으므로 비상태(stateless) 프로토콜 이라고도 한다.

 

 

 

2) 비지속 연결과 지속 연결

TCP 연결 상태에 따라 나뉜다.

  • 비지속 연결 HTTP : 각 요구/응답별로 TCP 연결이 새로 이루어진다.
  • 지속 연결 HTTP : 연결이 유지된다.

 

 

4) 사용자와 서버 간의 상호작용: 쿠키

HTTP 서버는 비상태 프로토콜이지만 쿠키를 이용해서 사용자를 추적하여 상태를 유지시킬 수 있다.

 

 

5) 웹 캐싱

웹 캐시 또는 프록시 서버는 원 출처의 웹 서버를 대신해서 HTTP 요구를 충족시켜준다.

캐시는 서버이면서 동시에 클라이언트가 된다.

클라이언트의 요구에 대한 응답시간을 줄이고 트래픽을 대폭 줄일 수 있는 장점이 있다.

 

 

2.3 인터넷 전자메일

 

유저 에이전트, 메일 서버, SMTP 세 가지의 주요 요소로 이루어져있다.

요즘은 HTTP 기반의 메일을 사용한다.

 

1) SMTP

보내고자 하는 데이터(메일)을 푸시한다.

 

 

2) HTTP와의 비교

HTTP는 풀 프로토콜이고 SMTP는 푸시 프로토콜이다.

 

 

4) 메일 접속 프로토콜

SMTP는 푸시 프로토콜이지만 최종적으로 메시지를 얻은것은 풀 동작이다.

POP3, IMAP 같은 메일 접속 프로토콜을 이용하면 목적 에이전트가 메일을 받을 수 있다.

 

 

 

2.4 DNSㅡ인터넷의 디렉터리 서비스

 

1) DNS가 제공하는 서비스

호스트 네임을 IP주소로 변환해준다. DNS는 DNS 서버들의 계층구조로 구현된 분산 데이터베이스이고 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 계층 프로토콜이다.

 

 

2) DNS 동작 원리 개요

단일 DNS 서버의 중앙 집중 데이터베이스는 확장성이 전혀 없기때문에 분산되도록 설계되었다. 웹 캐싱과 비슷한 개념이다.

  • 분산 계층 데이터베이스
    루트 DNS 서버, 최상위 레벨 도메인(TLD) 서버, 책임 DNS 서버 총 3가지 유형의 DNS 서버가 존재한다.
    도메인 네임과 IP의 매핑은 책임 DNS 서버에서 이루어진다.

  • DNS 캐싱
    로컬 DNS 서버에 캐시가 존재하는 경우 상위 DNS 서버까지 접근하지 않고도 빠르게 IP 주소를 반환할 수 있다. 보통 일정 시간이 지나면 캐시가 삭제된다.

 

 

3) DNS 레코드와 메시지

DNS 서버들은 호스트 네임을 IP 주소로 매핑하기 위해 자원 레코드를 저장한다.

자원 레코드는 Name, Value, Type, TTL 4가지 필드를 포함한다.

Type에 따라 Name과 Value의 의미가 달라진다.

Type=A : Name-호스트 네임, Value-IP 주소

Type=NS : Name-도메인, Value-도메인을 관장하는 호스트 네임

Type=CNAME : Name-별칭 호스트 네임, Value-정식 호스트 네임

Type=MX : Name-별칭 호스트 네임, Value-메일 서버의 정식 이름

 

참고로 DNS는 UDP 연결을 사용한다.

 

 

2.7 소켓 프로그래밍: 네트워크 애플리케이션 생성

 

소켓은 OS에서 제공해주는 API이다.

소켓을 생성할 때 TCP/UDP를 선택할 수 있다.

 

TCP를 이용한 클라이언트-서버 애플리케이션

'이론 > 네트워크' 카테고리의 다른 글

네트워크 계층: 제어 평면  (0) 2022.11.20
네트워크 계층 : 데이터 평면  (0) 2022.11.19
트랜스포트 계층 (2)  (0) 2022.11.18
트랜스포트 계층 (1)  (0) 2022.11.18
컴퓨터 네트워크와 인터넷  (0) 2022.11.08

1.1 인터넷이란?

 

네트워크들을 상호 연결한 네트워크.

네트워크 : 다양한 유형의 호스트와 스위치들을 통신 링크로 연결한 분산 시스템

 

1) 구성요소로 본 인터넷

크게 종단 시스템 - ISP - 종단 시스템으로 이루어진다. ISP는 통신 링크패킷 스위치로 이루어진 네트워크이다.

 

통신 링크는 동축 케이블, 구리선, 광케이블, 라디오 스펙트럼을 포함한 다양한 물리 매체로 구성되고 전송률을 이용해서 데이터를 전송한다. 송신 종단 시스템은 데이터를 세그먼트로 나누고 헤더를 붙여서(=패킷) 목적 종단 시스템으로 네트워크를 통해 보내지고 목적지에서 원래의 데이터로 조립된다.

 

패킷 스위치는 라우터와 링크 계층 스위치가 널리 사용되고 최종 목적지 방향으로 패킷을 전달한다. 라우터는 네트워크 코어, 링크 계층 스위치는 액세스 네트워크에서 주로 사용된다. 종단 시스템간에 거쳐 온 일련의 통신 링크와 패킷 스위치들을 네트워크상의 경로(route, path)라고 한다.

 

종단 시스템은 ISP를 통해서 인터넷에 접속하고 ISP는 웹 사이트 및 서버를 인터넷에 직접 연결하도록 CP에게 인터넷 접속을 제공한다. ISP끼리도 서로 연결되어야만 한다.

 

 

2) 서비스 측면에서 본 인터넷

종단 시스템들은 종단 시스템에서 수행되는 애플리케이션 간의 데이터 송신을 요구하는 소켓 인터페이스를 제공한다. 송신 프로그램이 따라야 하는 규칙의 집합이다. 실생활에서 우편을 보내는 절차를 생각하면 이해하기 쉽다.

 

 

디바이스들이 인터넷의 가장자치를 차지하기 때문에 종단 시스템이라고 부른다

 

 

* 프로토콜 : 둘 이상의 통신 개체 간에 교환되는 메시지 포맷과 순서뿐만 아니라, 메시지의 송수신과 다른 이벤트에 따른 행동들의 정의.

사람간의 대화와 유사하다

 

 

1.2 네트워크의 가장자리

 

종단 시스템은 웹 브라우저 프로그램, 전자메일 서버 프로그램 같은 애플리케이션을 수행하기 때문에 호스트라고도 부른다. 호스트는 클라이언트와 서버로 구분한다.

 

1) 접속 네트워크

호스트의 경로상에 첫 번째 라우터에 연결하는 네트워크.

빨간 선을 의미한다

가정 접속 : DSL, 케이블, FTTH 등

  • DSL : 주파수 분할 다중화를 사용하고 업/다운 속도가 다른 비대칭이다. 텔코(telco, 지역 전화 회사)의 로컬 전화 기반구조를 이용한다.
  • 케이블 : 케이블 TV 회사의 기반구조를 이용한다. 마찬가지로 비대칭이다.
  • FTTH : CO(텔코의 지역 중앙국)와 가정 사이에 직접 광섬유 경로를 제공한다.

 

기업 접속 : 이더넷 및 와이파이

주로 회사, 대학 등에서 사용되고 종단 시스템들은 이더넷 스위치에 연결된다. 와이파이 접속 사용자들은 AP의 수십 미터 반경 내에 있어야한다.

 

광역 무선 접속: 3G 및 LTE

와이파이와 달리 기지국의 수십 km 반경 내에 있으면 된다.

 

 

2) 물리 매체

물리 매체는 유도 매체와 비유도 매체로 나눌 수 있다.

  • 유도 매체 : 광섬유 케이블, 꼬임쌍선 등 견고한 매체를 따라 파형을 유도한다.
    꼬임쌍선 - 가장 싸고 많이 이용한다. UTP는 LAN에서 가장 많이 이용하는 매체이다.
    동축케이블 - 동심원 형태를 이룬다. 꼬임쌍선보다 더 높은 데이터 전송률을 얻을 수 있다.
    광섬유 - 비트를 나타내느 빛의 파동을 전하는 가늘고 유연한 매체. 주로 광역 전화 네트워크에 이용된다.

  • 비유도 매체 : 무선 LAN, 디지털 위성채널처럼 야외공간으로 파형을 전파한다.
    라디오 채널 - 전자기 스펙트럼으로 신호를 전달한다. 지상 마이크로파, 무선 LAN, 위성 등의 유형이 있다.

 

 

1.3 네트워크 코어

 

라우터간의 연결망. 네트워크의 네트워크라고 볼 수 있다.

링크와 스위치의 네트워크를 통해 데이터를 이동시키는 방식에는 패킷 교환과 회선 교환 두 가지 방식이 있다.

빨간 선을 의미한다

 

1) 패킷 교환

R bits/sec 속도로 링크상에서 L bits의 패킷을 송신한다면, 전송하는데 걸리는 시간은 L/R 초이다.

  • 저장 후 전달
    대부분의 패킷 스위치가 이용하는 방식. 패킷의 모든 비트를 수신한 후에 출력 링크로 패킷을 전송한다. d(종단간 지연) = N * (L/R) 이 성립한다.
  • 큐잉 지연과 패킷 손실
    각 패킷 스위치는 접속된 여러개의 링크를 갖고 있고 각 링크에 대해 출력 버퍼도 가지고 있다. 도착한 패킷은 하나의 링크로 전송되어야 하는데 그 링크가 다른 패킷을 전송중이라면 도착하는 패킷들은 출력 버퍼에서 대기해야 한다. 저장 후 전달에 의한 지연 뿐만 아니라 출력 버퍼에서 큐잉 지연도 겪게 된다.
    버퍼의 크기는 유한하기 때문에 버퍼가 꽉찬 경우 패킷 손실이 발생한다.
  • 전달 테이블과 라우팅 프로토콜
    패킷 헤더에 목적지의 IP 주소가 있기 때문에 라우터가 패킷 전달 링크를 결정할 수 있다. 패킷이 라우터에 도착하면 목적지 주소의 일부롤 조사하고 패킷을 아웃 라우터로 전달한다.
    라우터는 목적지 주소를 라우터의 출력 링크로 매핑하는 전달 테이블을 가지고 있다.
    목적지를 한번에 정확히 파악하고 보내는것이 아니라 라우터마다 방향을 파악하고 패킷을 보내주는 방식이다.
    패킷 도착 -> 아웃 라우터 전달 -> 전달 테이블 검색 -> 출력 링크로 패킷 내보냄의 흐름이다.
    라우터는 전달 테이블을 자동으로 설정하기 위해 라우팅 프로토콜을 가지고 있다.

 

2) 회선 교환

종단 시스템 간에 경로상에 필요한 자원은 통신 세션 동안에 확보 또는 예약된다. (패킷 교환 네트워크에서는 예약x)

네트워크가 회선을 설정할 때, 연결이 이루어지는 동안 네트워크 링크에 일정한 전송률을 예약하기 때문에 송신자는 수신자에게 보장된 일정 전송률로 데이터를 보낼 수 있다.

 

회선: 송신자와 수신자 간의 경로에 있는 스위치들이 해당 연결 상태를 유지해야 하는 연결

 

간단한 회선 교환 네트워크

두 호스트가 통신하고 싶을 때, 네트워크는 종단간 연결을 설정한다. 회선이 4개이므로 각 링크는 전체 전송용량의 1/4를 얻게된다.

 

  • 회선 교환 네트워크에서의 다중화
    링크 내 한 회선은 주파수 분할 다중화(FDM) 또는 시분할 다중화(TDM)으로 구현된다.
    FDM은 주파수 스펙트럼을 공유하고 각 연결에 대한 주파수 대역을 고정으로 제공한다. FM 라디오 방송이 이에 해당한다. TDM 회선의 전송률은 한 슬롯 안의 비트 수와 프레임 전송률을 곱한 것과 같다.

  • 패킷 교환 대 회선 교환
    회선 교환은 요구에 관계없이 미리 전송 링크의 사용량을 할당하는 반면에 패킷 교환은 요구할 때만 링크의 사용을 할당해서 성능이 더 우수하기 때문에 패킷 교환으로 바뀌는 추세이다.

 

 

3) 네트워크의 네트워크

모든 종단 시스템이 서로에게 패킷을 보내려면 접속 ISP들이 연결되어야 가능하다.

가장 간단한 방법은 각 접속 ISP를 직접 서로 다른 ISP와 연결하는 것이지만 전 세계적으로 너무 많은 접속 ISP가 있기 때문에 매우 많은 비용이 발생한다.

대신 하나의 글로벌 통과(transit) ISP와 연결한다. 말했듯이 많은 접속 ISP와 연결하려면 매우 많은 비용이 발생하기 때문에 글로벌 ISP는 각각의 접속 ISP에 대해 비용을 부과한다.

 

글로벌 ISP는 다른곳에서도 구축하고 운영할 수 있고 각 글로벌 ISP는 서로 연결되어 있어야만 한다.

접속 ISP들은 지역 ISP에 연결되고 지역 ISP들은 글로벌 ISP(tier-1)에 연결된다.

 

ISP간에 계층구조가 생기고 각 레벨에 고객-제공자 관계가 성립되며 교환되는 트래픽의 양으로 비용이 결정된다.

보통 같은 계층에 있는 ISP끼리는 비용을 부과하지 않는다. 그래서 같은 계층의 가까운 ISP들은 피어링을 통해 직접 송수신해서 트래픽 비용을 줄인다.

 

1.4 패킷 교환 네트워크에서의 지연, 손실과 처리율

 

1) 패킷 교환 네트워크에서의 지연 개요

패킷은 경로상의 각 노드에서 다양한 지연을 겪게된다. 이 지연들이 쌓여서 전체 노드 지연을 일으킨다.

 

노드 지연, 큐잉 지연, 전송 지연, 전파 지연

  • 처리 지연 : 패킷 헤더를 조사하고 어디로 보낼지 결정하는 시간.
  • 큐잉 지연 : 링크로 전송되기를 기다리는 시간.
  • 전송 지연 : 라우터가 패킷을 내보내는데 필요한 시간. 패킷 길이(L)비트, 전송률 R = L/R
  • 전파 지연 : 링크의 처음부터 라우터 B까지의 전파에 필요한 시간.
    라우터 A-B사이의 거리(d), 링크의 전파속도(s) = d/s

전송 지연은 라우터 사이의 거리와 관계없이 패킷을 내보내는데 필요한 시간일 뿐이다.

 

 

2) 큐잉 지연과 패킷 손실

노드 지연 중 가장 복잡하고 흥미로운 요소이다. 다른 세가지 지연과는 다르게 큐잉 지연은 패킷마다 다를 수 있다.

a = 패킷이 큐에 도착하는 평균율

R = 전송률

L = 패킷 길이 일 때,

트래픽의 강도는 La/R이다. 큐잉 지연의 정도를 측정하는 데 매우 중요하다. 큐가 무한대 패킷을 가진다는 가정하에 La/R > 1이면 큐잉 지연은 무한대에 도달하기 때문에 트래픽 강도가 1보다 크지 않게 시스템을 설계해야 한다.

트래픽 강도가 1에 근접할수록 평균 큐잉 지연이 급격하게 증가한다.

 

패킷 손실 : 큐 용량은 유한하기 때문에 트래픽 강도가 1에 근접할 때, 패킷이 도착하면 큐가 꽉 찬 것을 발견하게 된다. 이 때 패킷을 저장할 수 없게 되므로 패킷을 버리게 된다.

패킷 로스가 발생하면 종단간에 재전송 될 수 있다. (TCP)

 

 

1.5 프로토콜 계층과 서비스 모델

 

 

인터넷 프로토콜 스택 5계층

  • 애플리케이션 계층 : HTTP, SMTP, FTP등의 프로토콜을 포함한다. 정보 패킷을 메시지라고 부른다.
  • 트랜스포트(전송) 계층 : TCP, UDP 두가지 프로토콜이 포함된다. 애플리케이션 계층의 메시지를 전달한다. 트랜스포트 계층 패킷을 세그먼트라고 한다.
  • 네트워크 계층 : IP 프로토콜을 포함한다. 호스트간의 데이터그램을 라우팅하는 책임을 진다.
  • 링크 계층 : 이더넷, 와이파이 등의 프로토콜을 포함한다. 링크 계층 패킷을 프레임이라고 한다.
  • 물리 계층 : 프레임 내부의 각 비트를 다음 노드로 이동시킨다.

'이론 > 네트워크' 카테고리의 다른 글

네트워크 계층: 제어 평면  (0) 2022.11.20
네트워크 계층 : 데이터 평면  (0) 2022.11.19
트랜스포트 계층 (2)  (0) 2022.11.18
트랜스포트 계층 (1)  (0) 2022.11.18
애플리케이션 계층  (0) 2022.11.15

그래픽스 관점에서의 파이프라인 : 모델링 - 리깅 - 애니메이션 - 렌더링 - 후처리

모델링 ~ 애니메이션(off-line작업)은 아티스트, 애니메이션(run-time작업) ~ 후처리는 프로그래머의 책임이다.

 

렌더링은 3차원 장면에서 2차원 장면을 생성해내는 과정이다.

 

삼각형 메쉬를 표현하는 가장 단순한 방법은 세 개의 정점을 순서대로 나열하는 것이다.

정점들은 정점 버퍼에 저장되고 3개씩 읽어서 하나의 삼각형을 정의한다. (=삼각형 리스트)

다만 인접한 삼각형은 정점을 공유하기 때문에 정점이 중복으로 저장되어서 인덱스 버퍼를 추가로 이용한다. (=인덱스 삼각형 리스트)

 

정점 버퍼에는 정점의 위치뿐만 아니라 노말 벡터, uv좌표등 다양한 데이터가 포함된다.

삼각형의 노말 벡터는 정점의 순서에 따라 방향이 바뀐다. 오른손 좌표계 기준으로는 반시계여야 올바른 방향이다.

 

오른손 좌표계와 왼손 좌표계간의 포팅을 위해서는 정점 재정렬 및 Z좌표 부호변경을 수행해야 한다.

'이론 > 그래픽스' 카테고리의 다른 글

[Chapter 5] 조명 및 쉐이더  (0) 2023.05.17
[Chapter 4] 프래그먼트 처리와 출력 병합  (0) 2023.05.11
[Chapter 3] 래스터라이저  (0) 2023.05.11
[Chapter 2] 정점 처리  (0) 2023.04.27

[36장. I/O 장치]

 

버스에 계층 구조가 필요한 이유는 메모리 계층 구조와 비슷하다. 물리적인 문제와 비용 때문이다.

 

표준 장치

장치를 효율적으로 활용하기 위해서는 하드웨어 인터페이스와 내부 구조가 있어야 한다.

 

표준 방식

폴링->DR에 데이터 전달->IR에 명령어 기록->폴링 반복문을 돌면서 대기. 하지만 이 방식은 비효율적이다.

데이터 전송에 메인 CPU가 관여하는 경우를 programmed I/O(PIO)라고 한다.

 

인터럽트를 이용한 CPU 오버헤드 개선

폴링 대신 인터럽트 핸들러를 이용해 처리한다. 빠른 장치라면 폴링, 느리다면 인터럽트를 사용하여 중첩시키는 것이 좋다. 네트워크 환경에서는 무한 반복에 빠질 수 있어서 인터럽트를 사용하지 않는다.

 

직접 메모리 접근(DMA)을 이용한 효율적인 데이터 이동

PIO를 사용하면 비용이 너무 많이 발생한다. DMA를 통해 CPU의 간섭 없이 동작하여 작업이 완료되면 DMA 컨트롤러가 인터럽트를 발생시켜 OS에게 알린다.

 

디바이스와 상호작용하는 방법

I/O 명령을 명시적으로 사용하거나 맵 입출력을 사용한다.

 

OS에 연결하기

서로 다른 인터페이스를 갖는 장치들과 OS를 연결시키기 위해 추상화를 사용한다. 디바이스 드라이버라고 부르며 장치와의 상세한 상호작용은 안에 캡슐화 되어있다.

 

[37장. 하드 디스크 드라이브]

 

디스크는 하나 또는 그 이상의 플래터를 갖고 각각은 2개의 표면을 갖고있다. 회전축으로 고정되어서 일정한 속도로 회전시킨다. 표면의 동심원 하나를 트랙이라고 한다. 트랙을 읽어서 읽고 쓰는 작업은 디스크 헤드를 통해 할 수 있고 디스크 헤드는 디스크 암에 연결되어있다.

 

멀티트랙의 탐색 시간

디스크 암을 올바른 트랙 위에 위치시키는 것을 탐색이라고 한다. (가속-활주-감속-안정화)

 

디스크 스케줄링

디스크 스케줄러는 SJF의 원칙을 따르려고 노력한다.

  • 최단 탐색 시간 우선(SSTF): 헤드에서 가장 가까운 트랙의 요청부터 서비스한다. 기아 현상이 발생할 수 있다. 대신 가장 가까운 블럭 우선(NBF) 방식을 사용하면 쉽게 해결이 가능하다.
  • 엘리베이터 (SCAN, C-SCAN): 트랙의 순서에 따라 디스크를 앞 뒤로 가로지르며 요청을 서비스한다. 기아 현상은 발생하지 않는다.
  • 최단 위치 잡기 우선(SPTF): 유용하고 성능을 개선시킬 수 있지만 트랙의 경계가 어디인지, 현재 디스크 헤드가 어디 있는지를 정확히 알 수 없기 때문에 OS에서 구현하기 어렵다. 때문에 드라이브 내부에서 실행된다.

 

[38장. RAID]

 

디스크 여러개를 병렬적으로 사용하면 용량이 많아지고 I/O 시간이 크게 개선되며 신뢰성을 높일 수 있다.

데이터 중복 기술을 사용함으로써 디스크 한 개의 고장을 감내할 수 있다.

 

상위 레벨의 관점에서 RAID는 일종의 특수한 컴퓨터이다. 프로세서, 메모리, 디스크를 갖고 있다.

 

RAID는 특정 종류의 결함을 파악하고 복구하도록 설계되어있다.

RAID 설계의 평가는 용량, 신뢰성, 성능 3개의 축으로 평가할 수 있다.

 

  • RAID 0(스트라이핑): 중복 저장을 하지 않기때문에 복구 기능이 없다. 용량과 성능은 좋지만 신뢰성이 좋지 않다. 하나의 디스크가 고장나면 전체 데이터가 소실되기 때문이다.
  • RAID 1(미러링): 각 블럭에 대해서 하나 이상의 사본을 둔다. 미러링 레벨이 2라면 최대 용량의 반만 사용할 수 있다. 신뢰성 측면에서는 괜찮은 편이며 성능은 하나의 디스크에 쓰는 시간보다 조금 더 길다. 랜덤 읽기의 경우에는 최고의 성능을 보인다.
  • RAID 4(패리티를 이용한 공간 절약): 패리티 블럭 하나를 추가한다. XOR 연산을 통해 디스크 하나가 고장나더라도 복구할 수 있다. 용량은 (N-1)B의 공간을 제공하며 신뢰성은 오직 하나만의 디스크 고장만을 감내할 수 있다. 성능은 병목현상이 발생하기 때문에 매우 좋지 않다.
  • RAID 5(순환 패리티): RAID 5와 거의 동일하게 동작하지만 패리티 블럭을 순환시켜서 병목현상을 막는다.

 

스트라이핑: 성능과 용량

미러링: 임의 I/O에 대한 성능과 신뢰성

RAID 5: 용량과 신뢰성

 

[39장. 막간: 파일과 디렉터리]

 

저장 장치의 가상화에 대한 두 가지 주요 개념. 파일, 디렉터리

 

[40장. 파일 시스템 구현]

 

파일 시스템은 순수한 소프트웨어다. CPU나 메모리 가상화와 다르다. 자료구조와 접근 방법 두 가지 측면으로 접근한다. 

  

파일 시스템은 각 파일에 대한 정보를 관리한다.

 

 

파일 구성: 아이노드

*아이노드: 파일을 구성하는 데이터 블럭, 크기, 소유자, 접근 권한 등의 정보.

위와 같은 파일에 대한 정보들을 메타데이터라고 한다.

아이노드 설계 시 중요한 부분중 하나는 데이터 블럭의 위치를 표현하는 방법이다.

 

멀티 레벨 인덱스: 디스크 블럭들이 일종의 트리 형태로 구성된 것

큰 파일을 지원하기 위해 아이노드 내에 간접 포인터를 사용한다. 더 큰 파일은 삼중 간접 포인터를 쓴다.

간단한 포인터 대신 익스텐트를 사용할 수 있다.(세그먼트와 유사함)

 

디렉터리 구조

디렉터리는 항목 이름-아이노드 번호 쌍의 배열로 구성되어 있다.

대부분의 파일 시스템에서 디렉터리는 특별한 종류의 파일로 간주한다.

 

디스크에서 파일 읽기

파일에 대한 아이노드를 찾아서 기본적인 정보를 획득해야한다.

우선 루트 디렉터리의 아이노드를 읽고 데이터 블럭의 포인터를 추출한다. 이후 찾는 항목의 아이노드 번호를 파악한다. (루트->경로->..->파일)

루트부터 시작해서 경로의 아이노드를 계속 파고 들어가다가 마지막에 파일의 아이노드 번호를 찾아서 파일 디스크립터를 할당받아 사용자에게 리턴하게 된다.

파일을 닫을 땐 할당된 파일 디스크립터를 모두 해제하면 된다.

 

디스크에 파일 쓰기

읽기와 비슷한 과정을 밟는다. 하지만 블럭 할당을 필요로 할 수 있다. I/O 발생 횟수가 많다.

 

캐싱과 버퍼링

메모리의 정적 기법(고정 크기의 캐시)은 낭비가 많아서 동적 파티션을 이용한다.

쓰기 캐싱의 경우 write buffer를 통해 다수의 쓰기 작업들을 적은 수의 I/O로 일괄처리 할 수 있다. 하지만 디스크에 기록되기 전에 크래시 되면 내용이 손실될수도 있다. 데이터의 손실을 용납하지 않는 프로그램이라면 캐시를 사용하지 않도록 direct I/O 또는 raw dist 인터페이스를 사용해서 write through 할 수 있다.

 

(41~47 중간 우선 생략)

 

[48장. 분산 시스템]

 

핵심 사안은 실패와 고장의 극복이다. 성능과 보안 역시 중요하다.

 

통신의 기본

통신은 신뢰할 수 없다고 가정한다.

 

신뢰할 수 없는 통신 계층: UDP/IP

신뢰할 수 있는 통신 계층: TCP/IP

발신자는 수신자가 메시지를 수신했다는 것을 알기 위해 확인 메시지를 다시 받는다. 만약 응답이 없다면 타임아웃을 추가로 도입하여 재전송한다. (타임아웃/재시도) 단, ack 메시지 자체가 누락이 된다면 수신자는 같은 메시지를 두번 받게되는 셈으므로 양쪽 다 정확히 한번만 주고 받는다는 보장이 있어야 한다. 순서 카운터를 이용해 해결할 수 있다.

'이론 > 운영체제' 카테고리의 다른 글

[OSTEP] II. 병행성  (0) 2022.08.21
[OSTEP] I. 가상화  (0) 2022.08.19
[OSTEP] 2장. 운영체제 개요  (0) 2022.08.19
쉽게 배우는 운영체제  (0) 2022.08.16

+ Recent posts