728x90
반응형

[TCP/IP Protocol #8] Part 2 | Chapter 8. ARP

 

발신지 호스트에서 목적지 호스트로 패킷을 전달할 수 있기 전에 제일 먼저, 다음 홉으로 패킷을 어떻게 전달할 수 있는지 알아야 한다.

다음 홉의 IP 주소를 찾기 위해 라우팅 테이블을 참조한다. 하지만 IP는 데이터링크 계층의 서비스를 사용하므로 다음 홉의 물리 주소를 알아야 한다.

이 과정은 주소 변환 프로토콜(ARP: Address Resolution Protocol)에 의해 수행됨

주소 변환

인터넷은 라우터와 같은 네트워크 간 연결 장치에 의해 상호 연결된 네트워크들로 구성된다.

발신지 호스트로부터 시작한 패킷은 목적지 호스트에 도달하기 전 여러 개의 다른 물리 네트워크를 지나갈 수 있다.

 

호스트와 라우터는 네트워크 레벨에서 자신의 논리 주소(logical address)로 인식된다. ↔ 물리 주소는 로컬 주소(local address)

논리 주소는 인터네트워크 주소이다. (모든 곳에서 유효하고 전 세계적으로 유일하다.)

- 이유: 실제로 소프트웨어 상에 구현되므로 논리 주소라 불린다.

네트워크를 연결하기 위해 사용되는 모든 프로토콜들은 논리 주소를 필요로 한다.

TCP/IP 프로토콜들에서의 논리 주소는 IP 주소라고 하며 32비트 길이를 가지고 있다.

 

e.g., 물리 주소의 예: 이더넷이나 토큰링의 48비트 MAC 주소, 이 주소는 호스트나 라우터 내에 설치된 NIC에 들어 있음

- NIC(Network Interface Controller, 컴퓨터를 네트워크에 연결하여 통신하기 위해 사용하는 하드웨어 장치)

 

호스트나 라우터로 패킷을 전달하기 위해서는 논리 및 물리 계층 주소가 모두 필요하다.

정적 변환

static mapping, 논리 주소와 물리 주소를 연관시키는 테이블 사용

네트워크 상의 각 기계 내에 저장되어 있음, 예를 들어 다른 기계의 IP 주소를 알고 있으나 물리 주소를 모르는 경우 이 테이블을 찾아보면 됨

[한계]

1) 기계는 NIC를 바꿀 수 있고 결과적으로 새 물리 주소를 가지게 됨

2) LocalTalk과 같은 LAN에서는 컴퓨터가 켜질 때마다 물리 주소가 변한다

* LocalTalk: Apple Computer의 AppleTalk 네트워킹 시스템의 물리적 계층을 특정하게 구현한 것

3) 이동 컴퓨터는 하나의 물리적 네트워크에서 다른 네트워크로 이동할 수 있고 이러한 경우 물리 주소는 변하게 된다

이들 변화를 구현하기 위해 정적 변환 테이블은 주기적으로 갱신되어야 한다. 이것은 네트워크에 매우 큰 오버헤드가 된다.

동적 변환

dynamic mapping, 기계가 다른 기계의 논리 주소를 알고 있을 때 프로토콜을 사용하여 물리 주소를 찾을 수 있다.

동적 변환을 수행하기 위해 주소 변환 프로토콜(ARP)과 역 주소 변환 프로토콜(RARP: Reverse ARP)이 설계되었다.

ARP: 논리 주소 → 물리 주소 변환 / RARP: 물리 주소 → 논리 주소로 변환

- RARP는 다른 프로토콜(DHCP)에 의해 대치되어 필요성이 없어짐 → ARP 프로토콜에 대해서만 설명

ARP 프로토콜 필요성

어떤 호스트나 라우터가 다른 호스트나 라우터에 보낼 IP 데이터그램을 가지고 있다면 , 송신자는 수신자의 논리 주소인 IP 주소를 가지고 있다.

그러나 IP 데이터그램은 물리적인 네트워크를 통과하기 위해 프레임 내에 캡슐화되어야 한다.

즉, 송신자는 수신자의 물리 주소를 알아야 한다.

변환(mapping)이란 논리 주소를 물리 주소로 변환하는 것이다.

TCP/IP 프로토콜 모음 내에서 ARP는 IP 프로토콜로부터 논리 주소를 받아 이를 해당하는 물리 주소로 변환한 후 데이터링크 계층에 전달한다.

캡슐화

ARP 패킷은 데이터링크 프레임으로 캡슐화된다.

과정

1. 송신자는 타깃의 IP 주소를 알고 있다.

2. IP가 ARP에게 ARP 요청 메시지를 생성하도록 요청한다.
- 요청 메시지: 송신자의 물리 주소, IP 주소. 타깃의 IP 주소 (타깃의 물리 주소 필드는 0으로 채워짐)
3. 송신자의 물리 주소를 발신지 주소로, 물리 브로드캐스트 주소를 목적지 주소로 하는 프레임에 의해 캡슐화된다.

4. 모든 호스트나 라우터는 이 프레임을 수신한다.
- 타깃만을 제외하고 모든 기계는 이 패킷을 폐기한다. 타깃 기계는 IP 주소를 인식한다.

5. 타깃 장비는 자신의 물리 주소를 포함하는 ARP 메시지를 응답으로 보낸다. 이 메시지는 유니캐스트된다.

6. 송신자는 응답 메시지를 받고 타깃의 물리 주소를 알게 된다.

7. 타깃에게 보내질 데이터를 포함하고 있는 IP 데이터그램은 이 물리 주소를 가지는 프레임으로 캡슐화되어 목적지에 유니캐스트된다.

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

 

728x90
728x90
728x90
반응형

IPv6 주소는 128비트 또는 16바이트(옥텟) 길이, IPv6 주소 길이는 IPv4 주소 길이의 4배

 

점 10진 표기법

IPv4 주소들과 호환성을 갖기 위해 IPv4 주소들과 같이 점 10진 표기법(dotted-decimal notation)을 사용함

4byte IPv4 주소는 편리하나, 16byte IPv6 주소는 매우 길게 표기된다.

콜론 16진 표기법

colon hexadecimal notation

- 128bit는 각 길이가 2byte인 8개 영역으로 나뉨

- 16진수 표기법에서 2byte는 4개의 16진수로 구성됨

- 32개의 16진수로 구성된 주소는 네 자리마다 하나의 콜론으로 분리됨

 

한 섹션(두 개의 콜론 사이에 4개의 수)에서 앞의 0은 생략

zero compression: 0으로만 구성된 연속된 섹션은 두 개의 콜론으로 대체 - 주소마다 한번만 허용됨

혼합 표기법

콜론 16진 표기법과 점 10진 표기법을 혼합하여 표기

IPv4 주소가 IPv6 주소에 포함되는(가장 오른쪽의 32비트) 전환 기간 동안에 적합함

주소 가장 왼쪽의 모든 96비트가 0인 제로인 경우

::130.24.24.18

 

CIDR 표기법

IPv6는 계층적인 주소 지정을 사용함

내장된 IPv4 주소

IPv4에서 IPv6로 변환되는 동안 호스트는 IPv6에 내장된(embedded) IPv4를 사용할 수 있다.

자동설정

IPv6: 호스트의 자동 설정 (← IPv4: 네트워크 관리자가 라우터와 호스트를 직접 설정)

IPv6는 DHCP를 사용해서 호스트에게 IPv6 주소를 할당할 수도 있지만 호스트가 직접 스스로 설정하는 것도 가능하다.

 

생성된 링크 로컬 주소가 고유하고 다른 호스트가 같은 링크 로컬 주소를 사용하고 있지 않은지 확인한다.

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

 

728x90
728x90
728x90
반응형

DHCP(Dynamic Host Configuration Protocol): 호스트가 부팅되면 처음으로 수행하는 첫 번째 클라이언트/서버 응용 프로그램

 

TCP/IP에 접속되는 각 컴퓨터는 자신의 IP 주소를 알 필요가 있다.

다른 망과 통신하기 위해 디폴트 라우터의 주소를 알아야 하고, 주소 대신 이름을 사용하여 통신하기 위해서는 네임 서버의 주소도 알아야 한다.

1. 컴퓨터의 IP 주소

2. 컴퓨터의 해당 서브 넷 마스크

3. 라우터의 IP 주소

4. 네임서버의 IP 주소

 

DHCP가 호스트 설정을 위한 공식 프로토콜이 되기 전 다른 프로토콜

RARP

RARP(Reverse Address Resolution Protocol): 물리 주소를 IP 주소로 매핑

↔︎ ARP: IP 주소를 물리 주소로 매핑

요즘 RARP가 거의 사용되지 않음

이유 1) 데이터링크 계층의 브로드캐스드 서비스를 사용하는데, 이는 ARP 서버가 각 망에 존재해야 함을 의미함

이유 2) RARP는 오로지 IP 주소만을 제공함

BOOTP

BOOTP(Bootstrap Protocol): RARP 프로토콜의 두 가지 약점을 극복하기 위해 만들어진 클라이언트/서버 프로토콜

1) BOOTP 서버가 인터넷상의 어디에나 있을 수 있다. (∵ 클라이언트/서버 프로그램이므로)

2) IP 주소를 포함해 위의 4가지 항목 정보를 모두 제공 가능하다.

하지만, BOOTP는 정적인 설정 프로토콜이다.

클라이언트가 IP 주소를 요청하면 BOOTP 서버는 클라이언트의 물리 주소와 매핑되는 IP 주소를 테이블에서 찾는다.

이는 클라이언트의 물리 주소와 IP 주소 간의 바인딩이 이미 존재한다는 것, 바인딩이 미리 정해진다는 것이다.

 

동적인 설정 프로토콜이 필요한 몇 가지 상황

예를 들어, 호스트가 하나의 물리 망에서 다른 망으로 이동한 경우 물리 주소가 변경됨

- 호스트가 짧은 기간동안 임시 IP 주소를 사용하고 싶은 경우 → 물리 주소와 IP 주소 간의 바인딩이 정적이므로 테이블에 고정된 값을 가짐

- 관리자 수정 전까지는 반영 불가

 

DHCP

처음으로 부팅한 컴퓨터나 디스크가 없는 컴퓨터에게 4가지 정보를 제공하기 위해 설계된 클라이언트/서버 프로토콜

BOOTP와 역방향 호환성을 가진다. (호스트 설정을 위해 BOOTP 프로토콜을 사용하는 시스템이 아직 남아 있을 수 있음)

DHCP 동작 절차

DHCP 클라이언트와 서버는 동일한 망에 있을 수도 있고 서로 다른 망에 있을 수도 있다.

동일 망

보편적이지 않음

DHCP Request: 0s - 1s - 68 - 67 (CIP - SIP - CP - SP)

DHCP Reply: SIP - 1s - 67 - 68 (SIP - CIP - SP - CP)

(CP/SP: Client/Server Port Number, CIP/SIP: Client/Server IP Address)

 

1. DHCP 서버는 UDP 포트 번호 67에 수동 열기(passive open) 명령을 수행하고 클라이언트로부터 요청을 기다린다.

 

2. 부팅된 클라이언트는 포트 번호 68에 능동 열기 명령을 수행한다. 이 메시지는 목적지 포트 번호 67, 발신지 포트 번호 68을 가지는 UDP 사용자 데이터그램으로 캡슐화된다.

그 후 이 UDP 사용자 데이터그램은 IP 데이터그램으로 캡슐화된다.

Q. 이때 자신의 IP 주소(발신지 주소)도 모르고 서버의 IP 주소(목적지 주소)도 모르면서 어떤 식으로 클라이언트가 IP 데이터그램을 보내는가?

A. 클라이언트는 발신지 주소를 모두 0으로 지정하고 목적지 주소를 모두 1로 지정한다.

 

3. 서버는 UDP 목적지 포트 번호를 68, 발신지 포트 번호를 67로 지정한 뒤 유니캐스트 메시지나 브로드캐스트 메시지를 클라이언트에 보낸다.

Q. 응답이 유니캐스트 형태가 될 수 있는 이유

A. 서버가 클라이언트의 IP 주소를 알기 때문

+ 서버는 클라이언트의 물리적 주소를 알고 있음 → ARP 서비스가 필요하지 않음을 의미(논리적 주소를 물리적 주소로 매핑)

but, 몇몇 시스템은 ARP 과정을 건너뛰는 것을 허용하지 않을 수 있음 → 브로드캐스트 주소 사용

 

서로 다른 망

다른 응용 계층 프로세스에서와 같이 서로 다른 망으로 구분된 경우

한 가지 문제점이 존재: DHCP 요청은 클라이언트가 서버의 IP 주소를 모르기 때문에 브로드캐스트 되는데, 이렇게 브로드캐스트 된 IP 데이터그램은 어떠한 라우터도 통과하지 못함, 그러한 패킷을 수신한 라우터는 패킷을 버림

→ 중계자의 역할을 하는 것이 필요하다.

호스트 중의 하나 혹은 응용 계층에서 동작하도록 설정될 수 있는 라우터가 중계자로 사용될 수 있다.

이 호스트를 중계 에이전트(relay agent)라고 부름

 

중계 에이전트: DHCP 서버의 유니캐스트 주소를 알고 있음, 포트 번호 67로 들어오는 브로드캐스트 메시지를 기다림

패킷을 수신하면 이 메시지를 유니캐스트 메시지에 캡슐화하여 DHCP 서버로 보냄

유니캐스트 목적지 주소를 가지는 패킷은 라우터들에 의해 라우팅 됨, DHCP 서버에 도착함

DHCP 서버는 요구 메시지에 있는 필드 중 하나가 중계 에이전트의 IP 주소를 정의하고 있기 때문에 중계 에이전트로부터 온 메시지임을 알게 됨

→ 응답을 받은 중계 에이전트는 DHCP 클라이언트로 이를 전송함

 

UDP 포트

서버 포트 67은 일반적, 클라이언트 포트 68은 일반적이지 않음

Q. 클라이언트가 임시 포트를 사용하지 않고 잘 알려진 포트번호 68을 사용하는 이유

A. 서버로부터 클라이언트로 응답이 브로드캐스트될 때의 문제점을 방지하기 위해

e.g., IP 주소와 포트 번호의 조합으로 나타내어지는 소켓 주소에 기반을 둔 패킷의 역 다중화(demultiplexing) 때문, 양 호스트의 소켓 주소가 같음

- 잘 알려진 포트의 사용(1024보다 작은 값을 가짐)은 동일한 두 개의 목적지 포트 번호의 사용을 방지함

 

Q. 호스트 A/B가 모두 DHCP 클라이언트로 동작하는 경우 어떤 일이 일어나는가?

A. 소켓 주소는 같게 되고 양 호스트는 모두 메시지를 수신함, 클라이언트 간의 구별은 또 다른 식별자를 통해 수행

DHCP와 관련된 각 연결에 transaction ID라는, 임의로 선택되어지는 다른 번호를 사용함(동시에 같은 ID를 선택할 확률은 매우 낮음)

 

에러 제어

DHCP를 사용할 때 에러 제어의 필요성 - 요청이 분실되거나 손상될 때, 응답이 손상될 때

DHCP는 UDP를 사용하는데 UDP는 에러 제어 기능을 제공하지 않음

→ DHCP는 에러 제어 기능을 제공해야 함

[에러 제어의 두 가지 정책]

1) DHCP는 UDP에서 검사합(checksum)을 사용하도록 요구한다. UDP에서 검사합 기능은 선택적이기 때문.

2) DHCP 클라이언트는 요청에 대한 DHCP 응답을 수신하지 못하면 타이머 정책과 재전송 정책을 사용함.

but, 전원이 나간 후와 같이 여러 호스트가 동시에 재전송 요청을 하여 트래픽 혼잡이 발생하는 경우를 막기 위해, DHCP는 랜덤 변수를 사용하여 타이머 값을 설정함

 

고정 주소 할당

DHCP 서버는 물리 주소와 IP 주소를 정적으로 바인딩 한 데이터베이스를 가짐

이 경우 BOOTP와 역 방향 호환성을 가짐

동적 주소 할당

DHCP는 이용 가능한 IP 주소들의 풀(pool)을 가지는 다른 데이터베이스를 가지고 있음

이 두 번째 데이터베이스가 DHCP를 동적으로 만듦

DHCP 클라이언트가 임시의 IP 주소를 요청하게 되면 DHCP 서버는 주소 풀에서 활용 가능하고 사용되지 않는 IP 주소를 가져다 협상되는 기간 동안 할당함

1) DHCP 클라이언트가 DHCP 서버에 요청을 전송

2) 서버는 자신의 정적 데이터베이스를 찾음

3) 데이터베이스에 요청된 물리 주소가 있으면, 이 영구적인 IP 주소가 클라이언트에 반환됨

but, 정적 데이터베이스에 항목이 없으면, 서버는 활용 가능한 IP 주소를 풀에서 할당하고 동적 데이터베이스에 항목을 추가함

 

Q. DHCP 동적인 측면이 필요한 이유

A. 호스트가 한 망에서 다른 망으로 이동하는 경우, 서비스 제공자의 가입자처럼 망에 연결되었다가 끊어지는 경우 등

 

풀에서 할당된 주소는 임시, DHCP 서버는 일정 기간 동안 임대(leasing)

임대 기간이 끝나면, 클라이언트는 이 주소 사용을 그만두거나 임대를 새로 요청

 

상태 천이

동적인 주소 할당을 제공하기 위해 DHCP 클라이언트는 다른 상태로의 천이를 수행하는 상태 기계(state machine)로서 동작함

DHCP 패킷의 유형을 정의하기 위해 값을 어떻게 해석해야 하는지

 

초기 상태

DHCP 클라이언트가 처음 시작되면 초기화 상태에 있게 됨

클라이언트는 DHCP DISCOVER 메시지를 67번 포트를 사용하여 브로드캐스트함

 

선택 상태

DHCP DISCOVER 메시지를 전송한 후 클라이언트는 선택 상태로 천이함

이러한 유형의 서비스를 제공할 수 있는 서버들은 DHCP OFFER 메시지로 응답함 (서버는 이 메시지 안에 IP 주소, 임대 기간(기본 1h)를 제공)

DHCP OFFER를 전송한 서버는 제공한 IP 주소를 다른 클라이언트가 사용하지 못하도록 잠가 놓음

클라이언트는 이러한 것들 중 하나를 선택하고 이 선택된 서버로 DHCP REQUEST 메시지를 전송함, 그리고 요청 상태로 들어감

+ 만약 클라이언트가 DHCP OFFER 메시지를 하나도 못받는다면, 2초 간격으로 4번 재시도함

+ DHCP DISCOVER 메시지의 재시도에도 응답이 없으면 5분간 기다린 후 재시도함

 

요청 상태

클라이언트는 클라이언트 물리 주소와 그 IP 주소간의 연결(binding) 정보 생성을 수행하는 서버로부터 DHCP ACK 메시지를 수신할 때까지 요청 상태에 있게 됨

DHCP ACK를 수신한 이후 클라이언트는 바운드 상태로 감

 

바운드(Bound) 상태

클라이언트는 임대가 만료될 때까지 IP 주소를 사용함

임대 기간의 50%가 지나면 클라이언트는 다른 DHCP REQUEST 메시지를 보내 임대 기간을 새롭게 설정함

그리고 재설정(renewing) 상태로 들어감

바운드 상태에서 클라이언트는 임대를 취소하곡 초기화 상태로 갈 수 있음

 

재설정(Renewing) 상태

클라이언트는 다음 두 가지 이벤트 중 하나가 발생할 때까지 이 상태에 머무름

1) DHCP ACK를 수신하여 임대 계약을 새로 설정하는 것 - 클라이언트는 타이머를 재설정하고 바운드 상태로 돌아감

2) DHCP ACK가 수신되지 않고 임대 기간의 87.5%가 지나는 경우, 클라이언트는 재연결(rebinding) 상태로 감

 

재연결(Rebinding) 상태

클라이언트는 다음 세 가지 이벤트 중 하나가 일어날 때까지 이 상태에 머무름

클라이언트가 1) DHCP NACK를 수신하거나 2) 임대 기간이 만료되면, 초기화 상태로 들어가고 다른 IP 주소 임대를 시도함

3) DHCP ACK를 수신하면 바운드 상태로 들어가고 타이머를 재설정함

 

다른 이슈들

이른 해제

지정된 기간 동안 주소를 할당 받은 DHCP 클라이언트는 만료 시간 전에 임대를 해제할 수 있다.

클라이언트가 서버에게 DHCP RELEASE 메시지를 전송하여, 서버가 해당 주소를 다른 기다리는 클라이언트에게 할당할 수 있도록 함

 

타이머

위의 논의 사항들은 클라이언트에게 3가지 타이머 사용을 요구한다.

타이머 별 기본 값 (서버가 타이머 만료 값을 주소 할당할 때 설정하지 않은 경우)

- 재설정 타이머: 임대 시간의 50%

- 재연결 타이머: 임대 시간의 87.5%

- 만료 타이머: 임대 시간의 100%

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

 

728x90
728x90
728x90
반응형

네트워크나 네트워크 간 연결의 목적은 사용자에게 서비스를 제공하는 것

 

Q1. 각 응용 프로그램들이 서비스 요청과 서비스 제공의 두 기능을 모두 할 수 있어야 하는가 아니면 둘 중에 하나만 가능해야 하는가?

A1. 클라이언트(client)라는 응용 프로그램을 로컬 측에서 동작시켜 원격 응용 프로그램에다 서비스 요청을 하고,
서버(server)라는 응용 프로그램을 원격에서 동작시켜 요청을 수신한 뒤 서비스를 제공하도록 하는 것

응용 프로그램은 요청자(클라이언트) 또는 제공자(서버)가 됨

 

Q2. 서버는 특정 클라이언트에만 서비스를 제공해야 하는가, 어떤 클라이언트에도 서비스를 제공해야 하는가

A2. 특정 클라이언트가 아니라 어떤 클라이언트에게도 서비스를 제공해야 함, 서버 클라이언트 관계는 일-대-다

 

클라이언트는 순차적이거나 동시적으로 수행될 수 있다.
오늘날 대부분의 컴퓨터는 동시에 수행될 수 있는 두 개 이상의 동시 클라이언트를 허용한다.

 

비연결형 순차 서버 UDP: 서버가 한 번에 하나의 요청만 처리함

연결 중심 동시 서버 TCP(or SCTP): 요청이 몇 개의 세그먼트로 도착하는 바이트 스트림, 응답도 몇 개의 세그먼트를 차지함

 

소켓 인터페이스

클라이언트 프로세스가 어떻게 서버 프로세스와 통신할 수 있을까?

컴퓨터 프로그램은 컴퓨터가 해야 할 일을 지정하는 미리 정의된 명령들의 집합이다.

컴퓨터 프로그램은 수학적인 동작을 위한 명령 집합, 문자열 처리를 위한 명령 집합, 입출력 접속을 위한 명령 집합을 가짐

다른 기계에서 수행되는 다른 프로그램과 통신할 수 있는 프로그램을 필요로 한다면,

전송 계층에게 연결을 설정하고, 다른 기계로 데이터를 송수신하고, 연결을 종료하는 명령들의 새로운 집합이 필요하다.

이러한 종류의 명령들을 보통 인터페이스라고 부른다.

- 인터페이스: 두 개체 사이의 상호작용을 위해 설계된 명령들의 집합

 

통신을 위해 설계된 여러 인터페이스 중 공통: 소켓 인터페이스(socket interface), 전송 계층 인터페이스(TLI: Transport Layer Interface), 스트림(STREAM)

 

peer-to-peer(P2P): 여러 클라이언트가 각각 연결을 만들고 대용량 파일을 내려받는 대신, 서버가 각 클라이언트로 하여금 파일의 일부를 내려 받고 이를 서로 공유하도록 하는 것

서버 장치에 많은 부하를 야기하는 파일 전송과 같은 영역에서 유용함

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

 

728x90
728x90
728x90
반응형

[TCP/IP Protocol #19] Part 4 | Chapter 19. 도메인 네임 시스템(DNS)

 

DNS(Domain Name System)

1. 정의

다른 응용 프로그램을 지원하는 데 사용되는 클라이언트/서버 응용 프로그램

응용 계층에서의 호스트 이름을 망 계층에서의 IP 주소로 매핑하는 데 사용

2. 배경

TCP/IP 프로토콜은 개체를 구분하기 위해, 인터넷에서 호스트 연결을 유일하게 식별하는 IP 주소를 사용한다.

하지만 사람들은 주소보다는 이름을 사용하고자 하는 경향이 있다.

그래서 이름을 주소로 바꿔주고, 주소를 이름으로 주는 시스템이 필요해지게 된다.

 

인터넷이 작은 규모일 경우는 호스트 파일(host file, 항목: 이름, 주소)을 사용하여 매핑 수행

but, 모든 호스트에 대한 호스트 파일을 저장하기에는 크기가 너무 큼, 변화가 있을 때마다 갱신하는 것도 불가능

해결책: 전체 호스트 파일을 단일 컴퓨터에 저장하여 매핑을 요구하는 모든 컴퓨터에게 이 정보를 접근해 가져갈 수 있도록 함 ⭢ 인터넷에 수많은 트래픽이 발생

⭢ (현재) 정보를 작은 부분으로 나누어 서로 다른 컴퓨터에 각 부분을 나누어 저장하는 것

각 호스트들은 매핑이 필요할 경우 이 정보를 가지는 가장 가까운 컴퓨터와 통신하게 됨

⭢ 이 방법이 도메인 네임 시스템에 의해 사용됨

 

사용자는 원격 호스트에 동작하는 파일 전송 서버에 접속하여 파일을 클라이언트로 전송하고자 한다.

사용자는 파일 전송 서버 이름(xxx.com)만 알고 있다.

TCP/IP 집합은 연결을 설정하기 위해 파일 전송 서버의 IP 주소를 알아야 함

3. 서버 분류

DNS를 통해 서비스를 수행할 경우 DNS 서버가 필요하다.

네임 서버의 4가지 유형: DNS 해석기, 루트 네임 서버, TLD 네임 서버, 권한 있는 네임 서버

 

DNS 해석기(DNS Resolver)

클라이언트와 네임 서버의 중계자 역할

DNS 요청을 네임 서버로, DNS 응답을 클라이언트에게 전달

 

루트 네임 서버(Root Name Server)

DNS 서버의 최상위 네임 서버로 DNS 해석부터 발생한 DNS 요청에 대해 적절한 TLD 네임 서버 정보를 반환한다.

 

TLD 네임 서버(Top Level Domain Name Server)

.com, .net과 같은 최상위 도메인에 대한 네임 서버로 해당 영역에 포함되는 모든 도메인 이름의 정보를 유지한다.

DNS 요청에 대해 TLD 네임 서버에서 권한 있는 네임 서버를 지정하여 반환한다.

 

권한 있는 네임 서버(Authoritative Name Server)

DNS 해석기가 TLD 네임 서버로부터 응답을 받으면, 확인자는 해당 응답을 권한 있는 네임 서버로 보낸다.

요청하는 도메인 주소에 대한 IP 주소를 확인하는 마지막 단계

4. DNS의 동작 원리

1) 사용자가 웹 브라우저 주소 표시줄에 www.amazon.com을 입력하고 Enter를 누른다.

2) www.amazon.com에 대한 요청은 일반적으로 케이블 인터넷 공급 업체, DSL 광대역 공급업체 또는 기업 네트워크와 같은 인터넷 서비스 제공 업체(ISP)가 관리하는 DNS 해석기로 전달된다.

* DSL: 도메인 특화 언어(Domain Specific Language), 특정 도메인에 특화된 비교적 작고 간단한 프로그래밍 언어

3) ISP의 DNS 해석기는 www.amazon.com에 대한 요청을 DNS 루트 이름 서버에 전달된다.

4) ISP의 DNS 해석기는 www.amazon.com에 대한 요청을 .com 도메인의 TLD 이름 서버 중 하나에 다시 전달한다. .com 도메인의 이름 서버는 amazon.com 도메인과 연관된 4개의 Amazon Route 53 이름 서버의 이름을 사용하여 요청에 응답한다.

5) ISP의 DNS 해석기는 Amazon Route 53 이름 서버 하나를 선택해 www.amazon.com에 대한 요청을 해당 이름 서버에 전달한다.

6) Amazon Route 53 이름 서버는 amazon.com 호스팅 영역에서 www.amazon.com  레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환한다.

7) ISP의 DNS 해석기가 마침내 사용자에게 필요한 IP 주소를 확보하게 된다. 해석기는 이 값을 웹 브라우저로 반환한다. 또한 DNS 해석기는 다음에 누군가가 amazon.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 동안 amazon.com의 IP 주소를 캐싱(저장)한다.(TTL(Time to Live) 참조)

8) 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.amazon.com에 대한 요청을 전송한다. 여기가 콘텐츠(Contents)가 있는 곳으로, 웹 사이트 엔드 포인트(End-point)로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버이다.

9) 192.0.2.44에 있는 웹 서버 또는 그 박의 리소스는 www.amazon.com의 웹 페이지를 웹 브라우저로 반환하고, 웹 브라우저는 이 페이지를 표시한다.

 

 

[호스트 이름을 IP 주소로 매핑하는 절차]

1. 사용자: 호스트 이름을 파일 전송 클라이언트에 전달

2. 파일 전송 클라이언트는 호스트 이름을 DNS 클라이언트에 전달

3. 부팅된 후 컴퓨터들이 DNS 서버의 주소를 앎 - DNS 클라이언트는 DNS 서버의 알려진 주소를 사용하여 파일 전송 서버의 이름을 질의하는 메시지를 DNS 서버에 보냄

4. DNS 서버는 원하는 파일 전송 서버의 IP 주소를 응답

5. DNS 클라이언트는 IP 주소를 파일 전송 클라이언트에 전달

6. 파일 전송 클라이언트는 수신한 IP 주소를 사용하여 파일 전송 서버에 접속

 

-

사람이 읽을 수 있는 도메인 이름(sarahee.tistory.com)을 머신이 읽을 수 있는 IP 주소(211.231.99.250)로 변환

 

IP 주소: 인터넷상의 모든 컴퓨터라는 숫자를 사용해서 통신하는 숫자

DNS 서비스(e.g., Amazon Route 53)

 

쿼리: DNS 서버에서 이름을 IP 주소로 변환하여 도메인 이름을 웹 브라우저에 입력할 때 최종 사용자를 어떤 서버에 연결할 것인지를 제어/요청

재귀적 DNS: DNS 레코드를 소유하고 있지 않지만 사용자를 대신해서 DNS 정보를 가져올 수 있는 중간자의 역할을 함

  1. 사용자가 웹 브라우저를 열어 주소 표시줄에 www.example.com을 입력하고 Enter 키를 누릅니다.
  2. www.example.com에 대한 요청은 일반적으로 케이블 인터넷 공급업체, DSL 광대역 공급업체 또는 기업 네트워크 같은 인터넷 서비스 제공업체(ISP)가 관리하는 DNS 해석기로 라우팅됩니다.
  3. ISP의 DNS 해석기는 www.example.com에 대한 요청을 DNS 루트 이름 서버에 전달합니다.
  4. ISP의 DNS 해석기는 www.example.com에 대한 요청을 이번에는 .com 도메인의 TLD 네임 서버 중 하나에 다시 전달합니다. .com 도메인의 이름 서버는 example.com 도메인과 연관된 4개의 Amazon Route 53 이름 서버의 이름을 사용하여 요청에 응답합니다.
  5. ISP의 DNS 해석기는 Amazon Route 53 이름 서버 하나를 선택해 www.example.com에 대한 요청을 해당 이름 서버에 전달합니다.
  6. Amazon Route 53 이름 서버는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환합니다.
  7. ISP의 DNS 해석기가 마침내 사용자에게 필요한 IP 주소를 확보하게 됩니다. 해석기는 이 값을 웹 브라우저로 반환합니다. 또한, DNS 해석기는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 example.com의 IP 주소를 캐싱(저장)합니다. 자세한 내용은 Time to Live(TTL)를 참조하세요.
  8. 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.example.com에 대한 요청을 전송합니다. 여기가 콘텐츠가 있는 곳으로, 예를 들어 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버입니다.
  9. 192.0.2.44에 있는 웹 서버 또는 그 밖의 리소스는 www.example.com의 웹 페이지를 웹 브라우저로 반환하고, 웹 브라우저는 이 페이지를 표시합니다.

* DSL 광대역 공급업체: Domain Specific Language

* DNS 해석기: (resolver, 재귀적 DNS)

* TLS name server

 

Reference

https://aws.amazon.com/ko/route53/what-is-dns/

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

김원일, 서종호, 따라하며 배우는 AWS 네트워크 입문, enBergen, BOOKK

권영환, 아마존 웹 서비스(AWS Discovery Book), 정보문화사

 

728x90
728x90
728x90
반응형

인터넷 프로토콜(IP: Internet Protocol)

네트워크 계층에서 TCP/IP 프로토콜이 사용하는 전송 메커니즘

데이터그램 방법을 사용하는 패킷 교환 네트워크를 위해 설계된 비연결형 프로토콜

→ 각 데이터그램이 독립적으로 처리되고 목적지까지 다른 경로를 통하여 전달될 수 있음(일부는 분실/훼손될 수 있음)

→ 상위 계층의 프로토콜에 의존함

 

데이터그램(datagram): 네트워크(인터넷) 계층의 패킷

버전(VER): 4비트 필드는 IP 프로토콜의 버전을 나타냄, 시스템 내에서 수행되고 있는 IP 소프트웨어에게 데이터그램 버전 4임을 알려줌

→ 장래에 버전 6(IPv6)으로 대치될 것

헤더 길이(HLEN): 데이터그램 헤더의 전체 길이를 4바이트 단위로 나타냄(20byte ~ 60byte)
- 선택사항이 없다면 헤더의 길이는 20바이트 → 필드의 값은 5(5 x 4 = 20)
- 선택사항 필드가 최대 길이라면 이 필드의 값 HLEN = 15

서비스 유형: IP 헤더의 초기 설계에서 이 필드는 TOS(Type of Service)라 불림
데이터그램이 어떻게 처리되어야 하는가를 정의
- 처리 내용: 데이터그램의 우선순위(precedence)를 정의, 나머지는 서비스 유형(저지연, 고처리율 등)을 정의

단편화

대부분 프로토콜에서 각 데이터링크 계층은 자신의 프레임 형식을 가지고 있다.

프레임 형식에 정의된 필드 중 하나는 데이터 필드의 최대 크기인 최대 전달 단위(MTU: Maximum Transfer Unit)

데이터그램이 프레임 속에 캡슐화될 때, 데이터그램의 크기는 이 최대 크기보다 작아야 한다.

IP 프로토콜을 물리적 네트워크에 독립적으로 만들기 위해 설계자들은 IP 데이터그램의 최대 길이를 65,535바이트로 결정했다.

 

단편화(fragmentation): MTU가 작은 다른 네트워크에서는 데이터그램을 나누어서 보내야 함

경로 기록 옵션

경로 기록(record route) 옵션: 데이터그램을  처리한 인터넷 라우터들을 기록하기 위해 사용됨

IP 데이터그램의 헤더 최대 길이가 60byte, 이 중 20byte는 기본 헤더 → 최대 9개의 IP 주소까지 기록할 수 있음

검사합

검사합(checksum): 대부분의 TCP/IP 프로토콜에 의해 사용되는 오류 검출 방법

패킷 전달 중 발생할 수 있는 오류로부터 패킷을 보호함

송신자에 의해 검사합이 계산되고 패킷과 함께 전송됨. 수신자는 검사합을 포함하고 있는 전체 패킷에 대해 같은 계산을 반복함

송신자의 검사합 계산

송신자에서 패킷은 n비트 조각으로 나뉘어짐, 보통 n = 16

1의 보수 연산을 사용하여 전부 더해져서 n비트의 결과를 생성한다.

이 결과 값의 0을 1로, 1은 0으로 바꾸는 방법을 사용하여 이 결과에 대한 보수를 구하게 되는데, 이 보수가 검사합이다.

 

데이터 전달과 처리 과정에서 오류가 없다면, 수신자가 모든 조각을 더하고 1의 보수를 구한 결과가 0이 되어야 한다.

- IP 검사합은 헤더만 대상으로 하고 데이터는 포함하지 않음

셀 라우팅하기

ATM 네트워크는 두 개의 라우터 사이에 경로를 생성함, 이 라우터들을 진입점(entering-point) 라우터와 진출점(exiting-point) 라우터라고 부른다.

 

주소

셀을 하나의 특정 진입점 라우터에서 진출점 라우터로 라우팅하기 위해서는 세 개의 주소가 필요함

- IP 주소, 물리 주소, 가상 회선 식별자

 

IP 주소

ATM 네트워크에 연결된 각 라우터는 IP 주소를 갖는다.

IP 주소는 IP 계층에서 라우터를 정의한다. (ATM 네트워크와는 무관)

물리 주소

ATM 네트워크에 연결된 각 라우터는 물리 주소를 가짐, 각 주소는 네트워크에서 유일해야 하고 네트워크 관리자에 의해 정의됨

ATM 네트워크에서의 물리 주소는 LAN에서의 MAC 주소와 동일한 역할을 수행함

가상 회선 식별자

ATM 네트워크 내의 교환기들은 가상 회선 식별자(VPI, VCI)에 근거하여 셀을 라우팅한다.

가상 회선 식별자들은 데이터 전송에 사용된다.

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

 

728x90
728x90
728x90
반응형

[TCP/IP Protocol #5] Part 2 | Chapter 5. IPv4 주소 생략

포워딩

: 다음 홉으로 패킷을 전달하는 것

* 홉: 컴퓨터 네트워크에서 출발지와 목적지 사이에 위치한 경로의 한 부분

 

IP 프로토콜은 비연결형 프로토콜로 설계되었으나, 오늘날 IP는 연결 지향 프로토콜로 사용되는 경향

목적지 주소 기반 포워딩

호스트가 송신할 패킷을 가지고 있거나 라우터가 포워드해야 하는 패킷을 수신한 경우 라우팅 테이블을 참조하여 최종 목적지까지의 경로를 찾음

라우팅 테이블이 너무 커져서 라우팅 테이블 내에서의 검색이 비효율적이게 되므로 적절하지 못함

라우팅 테이블 단순화 방법(라우팅의 크기를 작게 만드는 기술)

1) 다음 홉 방법: (next-hop method) 전체 경로에 대한 정보X, 다음 홉의 주소만 저장

2) 네트워크 지정 방법: (nework-specific method) 호스트 별 엔트리 정보X, 네트워크 자신의 주소를 정의하는 엔트리 하나만 가짐

같은 네트워크에 연결된 모든 호스트들은 하나의 엔티티로 취급됨

라우터의 구조

입력 포트(input port), 출력 포트(output port), 라우팅 처리기(routing processor), 교환 조직(switching fabric)

입력 포트

물리・데이터링크 계층의 기능 수행

수신된 신호로 비트 만들어지고, 프레임으로부터 패킷이 역캡슐화됨

교환 조직에 보내기 전에 패킷을 저장할 수 있는 버퍼(큐)도 보유

출력 포트

입력 포트와 같은 기능을 수행하나, 수행 순서가 반대

출력되는 패킷이 큐에 저장, 패킷이 프레임에 캡슐화된 후 프레임이 라인 상으로 보낼 신호로 변환됨

* 캡슐화: 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것

라우팅 처리기

네트워크 계층의 기능을 수행

목적지 주소를 사용해서 다음 홉 주소를 찾고 패킷이 전송될 출력 포트 번호도 전송함

테이블 탐색(table lookup)이라고도 부름 - 라우팅 처리기가 라우팅 테이블을 탐색하는 과정과 유사

새로운 라우터에서는 라우팅 처리 과정 효율을 위해 라우팅 처리기 기능이 입력 포트로 옮겨지고 있음

교환 조직

라우터에서 가장 복잡한 일: 패킷을 입력 큐에서 출력 큐로 이동시키는 것

이 작업이 수행되는 속도는 입력/출력 큐의 크기 뿐 아니라 패킷 전달에서의 전체 지연 시간에 많은 영향을 미침

입력 포트: 패킷을 메모리에 저장

출력 포트: 패킷을 메모리에서 가져옴

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

 

728x90
728x90
728x90
반응형

지국(Station): IEEE 802.11에 호환되는 MAC과 물리 계층(Physical Layer)을 가진 디바이스

 

오류 제어

error control, 훼손되거나 손실되거나 중복된 데이터그램을 탐지하는 메커니즘을 포함

네트워크 계층은 진정한 오류 제어 메커니즘을 제공하지는 않음

 

데이터링크 계층에서 LAN과 WAN을 포함하는 이 네트워크 행위를 제어함

 

Q. 홉대홉(Hop-to-hop) 오류 제어가 이미 데이터링크 계층에 구현되어 있다면 왜 네트워크 계층에서 오류 제어를 필요로 할 것인가?

A. 데이터그램이 라우터에 의해 처리되는 동안 오류가 발생하면 데이터링크 계층은 이를 탐지하지 못함
(데이터그램을 어느 정도 보호하지만 완전한 보호를 하지 못함)

 

Q. 네트워크 계층에서 오류검사를 하지않는 이유

A. 단편화

데이터가 중간의 라우터에서 단편화될 수 있음, 단편화로 인해 네트워크 계층이 변경될 수 있음

→ 오류 제어를 한다면 각 라우터에서 검사되어야 함
→ 네트워크 계층에서의 오류 검사를 매우 비효율적으로 만듦

 

네트워크 계층이 직접 오류 제어는 제공하지 않지만, 인터넷은 ICMP 프로토콜을 사용하여 데이터그램이 폐기되거나 헤더 내의 알려지지 않은 정보가 포함되는 경우 이에 대해 오류 제어를 할 수 있는 메커니즘을 제공함

흐름 제어

flow control, 수신자의 수신 능력을 초과하지 않도록 발신지에서의 데이터 전송 양을 조절

발신지 컴퓨터의 상위계층이 목적지 컴퓨터가 소비할 수 있는 속도보다 빨리 데이터를 생성한다면 수신자에서는 데이터가 수신 능력 이상으로 넘치게 됨

네트워크 계층에서 흐름 제어를 제공하지 않는다. 그 이유는?

1) 네트워크 계층에는 오류 제어가 없어서 수신자의 네트워크 계층의 임무는 간단하고 수신자에서 데이터가 넘칠 일은 거의 없음

2) 네트워크 계층의 서비스를 사용하는 상위계층은 네트워크 계층에서 오는 데이터를 들어오는 즉시 수신한다. 수신되는 속도대로 데이터를 소비할 필요는 없도록 버퍼를 구현한다.

3) 다른 계층에서 흐름 제어를 제공하면 네트워크 계층은 더 복잡해지고 전체 시스템도 느려짐 (∵ 대부분의 상위 계층에서 흐름 제어 제공)

혼잡 제어

congestion control, 인터넷 내부에 데이터그램이 너무 많이 존재하는 상황

데이터그램의 수가 네트워크나 라우터의 용량을 넘어서는 경우

비연결형 네트워크에서의 혼잡 제어

시그널링(signaling)

후방 시그널링(backward signaling): 혼잡 발생 반대 방향으로 움직이는 데이터그램 내 한 비트를 1로 하여 송신자에게 혼잡이 발생했음을 알림, 송신자 패킷 전송 속도를 낮춤

전방 시그널링(forward signaling): 메커니즘을 사용하여 혼잡의 방향과 같은 방향으로 전달되는 패킷 내의 한 비트를 1로 설정, 수신자에게 혼잡 경고

수신자는 상위 계층 프로토콜에 알리고, 이 상위 계층은 발신지에 알림

연결 지향 네트워크에서의 혼잡 제어

1) 추가 가상 회선 생성 - 다른 라우터에 더 심각한 문제를 야기할 수 있음

2) 설정 과정에서의 진보된 협상(advanced negotiation)

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

 

728x90
728x90

+ Recent posts