'Network'에 해당하는 글 25건

NS-3는 지난 포스팅에서 밝힌것과 같이 저는 ns-3.19버전이지만 현재는 ns-3.25버전입니다.

참고해주시기 바랍니다.

지난번에 first.cc에 대한 분석을 이어 이번에는 second.cc로 이어가도록 하겠습니다.


second.cc 전체소스



1) first.cc와 마찬가지로 namespace 지정과 LOG_DEFINE입니다.

bool verbose = ture;

uint32_t nCsma = 3;

-> 여러가지 변수를 초기화합니다.

CommandLine cmd;

-> first.cc 에서 했던 것처럼 사용자 command를 추가합니다.

./waf --run "examples/tutorial/second --PrintHelp"

 를 통해 Program Arguments에 추가 되있음을 확인 할 수 있습니다.


2) 마찬가지로 LOGenable 하는 명령어입니다.

if 문이 추가되어 true일 때만 log를 출력 하도록 합니다.


3) 노드를 생성하는 과정으로, p2pNodes2개 생성하고 (Node(0), Node(1)),

p2pNodes --> 2

csmaNodesp2pNodes에 있는 Node(1)을 연결합니다.

그리고 nCsma 수만큼 Node를 생성합니다.


4) 이제 DeviceAttributeChannel Attribute를 설정해 줍니다.

밑의 코드는 DataRate100MbpsDelay6560ns로 설정하여 point to point연결을 정의합니다.

그리고 p2pDevices를 이용하여 p2p2Nodes 두곳에 deviceInstall합니다.

 이는 PointToPointHelper와 비슷한 역할을 하지만 이것은 CSMA devices에 관한 Helper로써, 다른점은 device attribute가 아니라 channel attribute로 한다는 것입니다.


5) 이제 protocol stack을 지정해줍니다.

p2pNodesNODE 0 , csmaNodes 4개의 NODEstackinstall 해 줍니다.


6) 2개의 IP를 지정합니다. 첫째는 p2pNodesIP, 둘째는 csmaNodes IP

위와 같이 코딩되면 p2pDevices10.1.1.1, 10.1.1.2가 될 것이며(위에서 p2pNode2개 생성하였으므로)

csmaDevices10.1.2.1, 10.1.2.2, 10.1.2.3, 10.1.2.4 IP가 지정될 것입니다.

(추가해준 Node +3개의 생성한 csmaNode)

 그리고 first.cc에서와 같이 echoserver를 생성합니다.


7) port9, csmaNodesNode(3) 에다가 Serverinstall합니. (nCsma=3 이기때문에 Node(3))

모든 server application들은 1초에서 10초 동안 실행됩니다.


8) echoClient를 생성합니다. 보내는 쪽을 NODE 3IP(10.1.2.4)9 port로 지정합니다.

1Line - simulation에서 packet을 보내는 최대의 양

2Line - packet사이에 시간적 간격을 얼마나 하는지에 대한 코드

3Line - 패킷의 사이즈가 얼마나 되는지에 대한 코드


9)  마찬가지로 clientApps을 생성하고 (p2pNodesNODE(0), 10.1.1.1)

app의 시작과 끝을 정합니. (2초부터 10초까지 실행 됨)


10) Ipv4GlobalRoutingHelper 라는 명령어로전체 internetwork가 시뮬레이션 할 때 처리 될 수 있게 합니다.

즉 모든 노드를 걸쳐서 실행 된다는 것입니다. 이것은 라우터를 특별히 설정 하지 않아도 복잡한 작업도 수행하게 해줍니다. 이 명령어로 인해 각 노드들은 직접적으로 global route manager와 통신을 발생시킵니다.


11) pcap 출력을 위한 코드를 넣고, 2번째 줄은 csma에 관한 pcap을 추가합니다.


12) 시뮬레이터를 생성/소멸하는 코드입니다. 지난 first.cc에서 설명했으므로 생략합니다.


13) second.cc 의 실행화면입니다.


'Network' 카테고리의 다른 글

Gnuplot 사용하기  (0) 2016.04.26
Network Simulator - NS-3란?  (0) 2016.04.26
NS-3 Network Simulation (first.cc)  (0) 2016.04.26
IP주소 체계  (0) 2016.04.24
DNS(Domain Name System) 란?  (0) 2016.04.24

WRITTEN BY
SiriusJ

,

과거 학부때,  ns3의 기본 소스를 이용했던 부분입니다.

먼저, ns3에서 first.cc에 대한 분석으로 시작해보겠습니다.

해당 소스는 ns-3.19버전인데 지금은 ns-3.25 버전이군요. 참고해주시기 바랍니다.

(참고로, simulation을 통하여 테스트하기 위해서는 first.cc가 위치해 있는 디렉토리가 아닌, 

~/ns-allinone-3.19/ns-3.19 로 이동하여  ./waf를 통해 실행 해야 합니다. 이후 포스팅에서 이 부분은 생략합니다.)


1) first.cc 전체 소스


이 코드에서는, 두 개의 노드를 생성하여 IPv4 주소를 각각 할당한 뒤, UDP패킷을 주고받는 시뮬레이션을 수행하게 됩니다.


1) NodeContainer.Create(2) 를 통해 네트워크 노드를 두 개 생성합니다.


2)PointToPointHelper pointToPpoint -> helper는 채널과 네트워크 디바이스를 생성합니다.

 밑의 코드는 DateRate5Mbps, Delay2ms point to point연결을 정의하게 됩니.


3) 위의 NodeContainer처럼 NetDeviceContainer는 모든 네트워크 장치들을 저장합니.

생성한 node에 네트워크 장치를 설치합니다.(NetDeviceContainer)

 Device는 실제 PC의 유선랜카드에 해당됩니.


4) 각 노드에 인터넷스택을 설치하고, IPv4주소를 할당하도록 합니.

10.1.1.0base 주소로 설정하였으므로, 위에서 생성한 두 노드에는 각각 10.1.1.1, 10.1.1.2 가 할당됩니다.


5) UdpEchoServerHelperechoserver를 생성할 것입니다. ‘9’라는 숫자는 application에 의해 사용되는 echoserver 전용 포트번호입니다.


6) 그 다음, UDP echo server udp client server을 정의하여 두 노드에 각각 할당합니.

10.1.1.2노드에는 echoserver.install(nodes.get(1)) 으로 서버를 설치하고, 

모든 서버 application들은 1초에서 10초 동안 실행됩니.


7) The UdpEchoServerHelperUdpEchoServer들을 생성합니. 첫 번째 인자는 서버의 ipv4 주소이고, 두 번째 인자는 포트번호입니.


8) 

1Line - simulation에서 packet을 보내는 최대의 양입니다.

2Line - packet사이에 시간적 간격을 얼마나 하는지에 대한 코드입니다.

3Line - 패킷의 사이즈가 얼마나 되는지에 대한 코드입니다.


9) 10.1.1.1 노드에는 echoclient.install(nodes.Get(0))으로 클라이언트를 설치합니.


10) 모든 client application들은 2초에서 10초 동안 실행됩니다.

UDP Echo server는 자신에게 들어오는 모든 UDP패킷을 해당 패킷을 보낸 Client로 반송하는 동작을 수행하게 되고 Echo client는 선언시 지정한 echoserver의 주소와 포트로 패킷을 전송합니다.


11) simulation을 수행하고 오직 시뮬레이션이 끝난 이후에 return된 후, simulation을 위해 생성된 객체를 제거합니다.


12) 마지막으로, simulator.run을 통해 시뮬레이션을 수행하도록 하겠습니다.

waf로 위 코드를 실행 시(ns3 실행명령어 : ./waf --run ), 다음과 같은 결과를 출력하게 되며, 코드 대로 client-server간에 패킷이 오가는 것을 확인할 수 있습니다.

'Network' 카테고리의 다른 글

Network Simulator - NS-3란?  (0) 2016.04.26
NS-3 Network Simulation (second.cc)  (0) 2016.04.26
IP주소 체계  (0) 2016.04.24
DNS(Domain Name System) 란?  (0) 2016.04.24
GBn(Go-Back-n) ARQ 기법과 SR(Selective-Repeat) ARQ 기법  (0) 2016.04.19

WRITTEN BY
SiriusJ

,

IP주소 체계

Network 2016. 4. 24. 16:16

IP주소란?

- 인터넷 상에 존재하는 호스트들을 구분하기 위한 32 Bit의 주소 체계입니다. (IPv4기준)

점(.) 에 의해 구분되는 십진수 값은 1 Byte로, 총 4 Byte (= 32 Bit)입니다.

4 Byte IP주소는 네트워크 주소와 호스트 주소로 나뉘며, 주소의 형태에 따라 A, B, C, D, E 클래스로 분류되어 집니다.


네트워크 주소란 네트워크를 구분하여 주는 ID를 의미하게 됩니다.

예를 들어, A라는 회사의 P대리에게 데이터를 전송한다고 가정하면, 처음부터 IP주소 4 Byte 모두를 참조해서 바로 찾아가는 것이 아니라, 4 Byte IP주소 중에서 네트워크 주소만을 참조해서 일단 A의 네트워크를 먼저 찾아갑니다.

A의 네트워크를 찾았다면, 이젠 호스트 주소를 참조해서 찾아갑니다. 즉, 같은 네트워크 상에서는 모든 컴퓨터가 동일한 Network ID를 가지고 각각의 컴퓨터가 서로 다른 Host ID를 가집니다.


* Class A

: 가장 앞의 8 Bit가 Network ID인데, 그 8 Bit의 가장 앞부분이 0으로 시작합니다.

즉 00000000 ~ 01111111 의 표현범위를 가지며 10진수로는 0 ~ 127 까지입니다.

하지만 가장 앞의 0과 가장 마지막의 127은 사용하지 않습니다.

또한 Host ID 부분도 모두 0일때와 모두 1일때는 사용하지 않습니다.


* Class B

: 제일 앞의 16 Bit 가 Network ID인데, 그 16 Bit의 제일 앞부분이 10으로 시작합니다. 8 Bit 단위로 끊어서 생각을 했을 때, 모두 0인 경우와 모두 1인 경우는 사용하지 않습니다. 즉 Network ID는 [128. 1. x. x ~ 191. 254. x. x]의 범위를 가집니다.


* Class C

: 가장 앞의 24 Bit가 Network ID인데 그 24 Bit의 제일 앞부분이 110 으로 시작합니다. 마찬가지로 모두 0인 경우와 모두 1인 경우는 사용하지 않으므로

Network ID는 [192. 0. 1. x ~ 223. 255. 254. x]의 범위를 가집니다.


클래스 구분에는 

127은 자신의 컴퓨터 시스템의 TCP/IP 모듈을 테스트하기 위해 사용되는 용도입니다.

또한 Class E는 일반적이지 않은, 예약되어 있는 주소입니다.(향후 사용을 위한)

서브넷 마스크로 네트워크의 주소를 분리하게 됩니다.

- 멀티캐스트 전송을 위한 그룹주소는 D Class IP주소 (224.0.0.0 ~ 239.255.255.255)로 전세계 개개의 인터넷 호스트를 나타내는 A, B, C Class IP 주소와는 달리 실제의 호스트를 나타내는 주소가 아니며, 그룹 주소를 갖는 멀티캐스트 패킷을 전송받은 수신자는 자신이 패킷의 그룹에 속해있는 가를 판단하여 패킷의 수용여부를 결정하게 됩니다.


WRITTEN BY
SiriusJ

,

IP주소를 인간이 기억하기 편한 언어체계로 변환하는 작업을 하는 시스템입니다.


*도메인 이름체계

[도메인 구조]

- 인터넷 도메인의 체계에서 최상위는 루트(root)로써 인터넷 도메인의 시작점이 됩니다. 그리고 이 루트도메인 바로 아래 단계에 있는 것을 1단계 도메인이라 하며, 이를 최상위 도메인이라고 합니다.

이를 약어로 TLD(Top Level Domain) 이라 합니다.

최상위 도메인은 국가명을 나타내는 국가 최상위 도메인과 일반적으로 사용되는 일반 최상위 도메인으로 구분됩니다.


* 도메인 질의 과정

- 도메인 질의는 /etc/resolv.conf 에 지정된 네임서버로 접속하여 아래와 같은 질의 과정을 거치게 됩니다.

1) 클라이언트(브라우저)에서 /etc/resolv.conf 에 지정되있는 네임서버로 www.yahoo.com에 대한 요청을 전달합니.

2) 일반 네임서버는 루트네임서버의 IP주소를 기록한 'hint 파일'을 가지고 있는데 이것을 참조하여 루트네임서버에www.yahoo.com에 대한 요청을 전달하게 됩니. 루트네임서버는 최상위 네임서버들의 네임 서버명(NS레코드) IP주소 (A레코드)를 가지고 있는데 이를 글루레코드(glue record)라고 합니다. 이 글루레코드를 참조하여 .com네임서버를 참조하라고 응답하게 됩니(루트 네임서버는 전세계에 13개뿐이다).

3) .com네임서버에는 .com을 최상위도메인으로 사용하는 도메인들의 글루레코드를 가지고 있기에 이를 참조하여 www.yahoo.com의 네임서버를 참조하라고 응답합니.

4) yahoo.com의 네임서버는 yahoo.com 도메인에 대한 존(zone)파일을 참조하여 www.yahoo.com IP주소(A레코드)를 클라이언트가 최초 요청을 한 네임서버로 되돌려 줍니.

5) 최초 요청을 받은 네임서버는 클라이언트에게 www.yahoo.com IP주소를 전송합니.

DNS서버는 한 번 검색한 결과는 메모리의 캐시에 기록하며, 같은 정보가 요청되면 캐시에 있는 정보를 전송합니. 이때, 캐시에는 유효기간(TTL:Time To Live)이 정해져 있으므로 유효기간이 지난 정보는 캐시에서 삭제됩니.


'Network' 카테고리의 다른 글

NS-3 Network Simulation (first.cc)  (0) 2016.04.26
IP주소 체계  (0) 2016.04.24
GBn(Go-Back-n) ARQ 기법과 SR(Selective-Repeat) ARQ 기법  (0) 2016.04.19
TCP의 흐름제어, 혼잡제어  (0) 2016.04.19
DHCP란?  (0) 2016.04.19

WRITTEN BY
SiriusJ

,

Go back n 기법은 패킷을 전송할 때 수신측에서 데이터를 잘못 받은 것이거나 못 받을 경우에 그 패킷 번호부터 다시 재전송을 하는 기법이고Selective Repeat은 잘못받은 패킷 번호만 다시 재전송 하는 것을 말합니다.

SR GBn의 비해 모두 재전송 하지 않기 때문에 효율성이 더 높지만, 수신측에서 패킷을 확인하기 위한 추가적인 정렬된 배열이 필요하고, 복잡한 특징이 있습니다.

ARQ(Automatic Repeat Request)

신뢰성 있는 데이터 전달을 위해 재전송을 기반으로 한 에러 제어 방식

GBn(Go-Back-n) 기법

전송된 프레임이 손상되면 확인된 마지막 프레임 이후로 보내진 프레임을 재전송하는 기법

(재전송 되는 경우)
1) NAK
프레임을 받았을 경우
2) 전송 데이터 프레임의 분실
3) 지정된 타임아웃내의 ACK 프레임 분실(Lost ACK)

SR(Selective-Repeat) 기법

손상되거나 분실되지 않아도, NAK 혹은 타임아웃 등의 이유로 인해 재전송 되는 이후의 모든 프레임을 재전송해야 하는 GBn ARQ의 비효율적 문제점을 개선한 방식이 SR ARQ입니다.
SR ARQ
방식은 GBn ARQ 방식과 다르게 손상되거나 분실된 프레임만을 재전송하게 됩니다.

그렇기 때문에 SR ARQ 방식은 별도의 데이터 재정렬을 수행해야 하며, 이러한 이유로 별도의 버퍼를 필요로 합니다.



'Network' 카테고리의 다른 글

IP주소 체계  (0) 2016.04.24
DNS(Domain Name System) 란?  (0) 2016.04.24
TCP의 흐름제어, 혼잡제어  (0) 2016.04.19
DHCP란?  (0) 2016.04.19
채널화의 종류  (0) 2016.04.19

WRITTEN BY
SiriusJ

,

TCP통신은 앞에서 포스팅한것과 같이 네트워크 통신에서 신뢰적인 연결방식입니다.

TCP통신을 할 때, 네트워크 트래픽에 대한 흐름제어와 혼잡제어의 원리를 공부해보겠습니다.


흐름제어 : 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법

혼잡제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법


1. Flow Control(흐름제어)

- 수신측이 송신측보다 빠르면 문제없지만, 송신측의 속도가 빠를 경우 문제가 생깁니다.

수신측에서 제한된 저장용량을 초과한 이후에 도착하는 데이터는 손실 될 수 있으며 만약 손실 된다면 불필요하게 응답과 데이터 전송이 송/수신 측 간에 빈번이 발생합니다.

따라서 이러한 위험을 줄이기 위해 송신 측의 데이터 전송량을 수신측에 따라 조절해야합니다.


내부 방식으로 Stop and wait방식, Sliding Window방식이 있습니다.


*Stop and wait : 매번 전송한 패킷에 대해 확인응답을 받아야만 그 다음 패킷을 전송하는 방법

*Sliding Window : 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어 기법


동작방식 : 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는대로 이 윈도우를 옆으로 옮김(Slide)으로써 그 다음 패킷들을 전송

**Window : TCP/IP를 사용하는 모든 호스트들은 보내기 위한것과 받기 위한 2개의 Window를 가지고 있습니다. 호스트들은 실제 데이터를 보내기 전에 먼저 앞에서 포스팅했던 "TCP-3-way-handshaking"을 통해 수신컴퓨터의 receive window size에 자신의 send window size를 맞추게 됩니다. 즉 상대방이 받을 수 있는 크기에 맞춰 전송을 하게 됩니다.


Sliding Window 동작방식

송신버퍼)

- 200이전의 바이트는 이미 전송되었고 확인응답을 받은 상태입니다.

- 200 ~ 202 바이트는 전송되었으나 확인응답을 받지 못한 상태입니다.

- 203 ~ 211 바이트는 아직 전송이 되지 않은 상태입니다.


수신윈도우)

- 수신 프로세스가 다음에 처리할 바이트는 194입니다.

- 수신 윈도우는 200의 수신을 기다리게 됩니다.


송신윈도우)

- 수신 윈도우보다 작거나 같은 크기로 송신 윈도우를 지정하게되면 흐름제어가 가능합니다.

- 위와 같이 송신윈도우가 7이라면, 200~202는 전송되었으나 확인응답을 받지 않았고, 203~206은 전송되지 않았지만 전송이 가능한 바이트입니다.


송신 윈도우의 이동)

- before상태에서 203~204를 전송하면 수신측에서는 확인응답으로 203을 보내고, 송신측은 이를 받아 after상태와 같이 수신 윈도우를 203~209범위로 이동시킵니다.

- 그 후, 205~209가 전송 가능한 상태가 됩니다.



2. Congestion Control(혼잡제어)
: 송신측의 데이터는 지역망이나 인터넷으로 연결된 대형 네트워크를 통해 전달됩니다. 만약 한 라우터에 데이터가 몰릴 경우, 자신에게 온 데이터를 모두 처리 할 수 없게 됩니다. 이런 경우 호스트들은 또 다시 재전송을 하게되고 결국 혼잡만 가중시켜 오버플로우나 데이터 손실을 발생시키게 됩니다. 따라서 이러한 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송속도를 강제로 줄이게 되는데, 이러한 작업을 혼잡제어라 합니다.


또한 네트워크 내에 패킷의 수가 과도하게 증가하는 현상을 혼잡(Congesetion)이라 하며 혼잡현상을 방지하거나 제거하는 기능을 혼잡제어라 합니다. 흐름제어가 송신측과 수신측 사이의 전송속도를 다루는데 반해 혼잡제어는 호스트와 라우터를 포함한 보다 넓은 관점에서의 전송 문제를 다루게됩니다.


혼잡제어 알고리즘)
AIMD(Additive Increase / Multicative Decrease)

: 처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 window크기(단위 시간 내에 보내는 패킷의 수)를 1씩 증가시켜가며 전송하는 방법입니다. 만일 패킷전송을 실패하거나 일정 시간을 넘으면 패킷을 보내는 속도를 절반으로 줄이게 됩니다.


이 방식은 공평한 방식으로, 이 방식을 사용하는 여러 호스트가 한 네트워크를 공유하고 있으면 나중에 진입하는 쪽이 처음에는 불리하지만 시간이 흐르면 평형 상태로 수렴하게 되는 특징이 있습니다.

문제점은 초기에 네트워크의 높은 대역폭을 사용하지 못하여 오랜 시간이 걸리게 되고네트워크가 혼잡해지는 상황을 미리 감지하지는 못한다는 점입니다네트워크가 혼잡해지고 나서야 대역폭을 줄이는 방식이라 할 수 있습니다.


Slow Start)

합 증가/곱 감소 방식이 네트워크의 수용량 주변에서는 효율적으로 작동하지만 처음에 전송 속도를 올리는 데 걸리는 시간이 너무 길다는 단점이 있습니다느린 시작(Slow Start) 방식은 합 증가/곱 감소 방식과 마찬가지로 패킷을 하나씩 보내는 것부터 시작하고, 이 방식은 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 window size를 1씩 늘려줍니다한 주기가 지나면 window size가 2배로 됩니다따라서 전송 속도는 합 증가/곱 감소와는 다르게 지수 함수 꼴로 증가하게 됩니다대신에 혼잡 현상이 발생하면 Window size를 1로 떨어뜨리게 됩니다처음에는 네트워크의 수용량을 예상할 수 있는 정보가 없지만 한번 혼잡 현상이 발생하고 나면 네트워크의 수용량을 어느 정도 예상할 수 있으므로 혼잡 현상이 발생하였던 Window size의 절반까지는 이전처럼 지수 함수 꼴로 창 크기를 증가시키고 그 이후부터는 완만하게 1씩 증가시키는 방식입니다.


Fast Retransmit(빠른 재전송)

빠른 재전송은 TCP의 혼잡 조절에 추가된 정책입니다. 패킷을 받는 쪽에서 먼저 도착해야 할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보내게 됩니다순서대로 잘 도착한 마지막 패킷의 다음 패킷의 순번을 ACK 패킷에 실어서 보내게 되므로 중간에 패킷 하나가 손실되게 되면 보내는 측에서는 순번이 중복된 ACK 패킷을 받게 되고이것을 감지하는 순간 문제가 되는 순번의 패킷을 재전송해 줄 수 있습니다빠른 재전송은 중복된 순번의 패킷을 3개 받으면 재전송을 하게 됩니다이런 현상이 일어나는 것은 약간 혼잡한 상황이 일어난 것이므로 혼잡을 감지하고 Window size를 줄이게 됩니다.


Fast Recovery(빠른 회복)

빠른 회복 정책은 혼잡한 상태가 되면 Window size를 1로 줄이지 않고 반으로 줄이고 선형 증가시키는 방법입니다빠른 회복 정책까지 적용하면 혼잡 상황을 한번 겪고 나서부터는 순수한 합 증가/곱 감소 방식으로 동작하게 됩니다.




WRITTEN BY
SiriusJ

,

DHCP란?

Network 2016. 4. 19. 16:39

DHCP (Dynamic Host Configuration Protocol)

- DHCPDynamic Host Configuration Protocol의 약자입니.

 

DHCP란 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜을 말합니다. DHCP에 대한 표준은 RFC문서에 정의되어 있으며, DHCP는 네트워크에 사용되는 IP주소를 DHCP서버가 중앙집중식으로 관리하는 클라이언트/서버 모델을 사용하게 됩니다. DHCP지원 클라이언트는 네트워크 부팅과정에서 DHCP서버에 IP주소를 요청하고 이를 얻을 수 있습니다.

 

네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미하고, 해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜입니다.

 

-DHCP 장점

PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능하고, IP를 자동으로 할당해주기 때문에 IP 충돌을 막을 수 있습니다.

 

-DHCP 단점

DHCP 서버에 의존되기 때문에 서버가 다운되면 IP 할당이 제대로 이루어지지 않습니.

 

-DHCP의 구성

1) DHCP 서버 : DHCP서버는 네트워크 인터페이스를 위해서 IP주소를 가지고 있는 서버에서 실행되는 프로그램으로 일정한 범위의 IP주소를 다른 클라이언트에게 할당하여 자동으로 설정하게 해주는 역할을 합니. DHCP서버는 클라이언트에게 할당된 IP주소를 변경없이 유지해 줄 수 있습니다.

 

클라이언트에게 IP 할당 요청이 들어오면 IP를 부여해주고 할당 가능한 IP들을 관리해주게 됩니.

 

2) DHCP 클라이언트 : 클라이언트들은 시스템이 시작하면 DHCP서버에 자신의 시스템을 위한 IP주소를 요청하고, DHCP 서버로부터 IP주소를 부여받으면 TCP/IP 설정은 초기화되고 다른 호스트와 TCP/IP를 사용해서 통신을 할 수 있게 됩니다.

, 서버에게 IP를 할당받으면 TCP/IP 통신을 할 수 있습니다.

 

DHCP 프로토콜의 원리

- DHCP를 통한 IP 주소 할당은 임대라는 개념을 가지고 있는데 이는 DHCP 서버가 IP 주소를 영구적으로 단말에 할당하는 것이 아니고 임대기간(IP Lease Time)을 명시하여 그 기간 동안만 단말이 IP 주소를 사용하도록 하는 것입니다. 단말은 임대기간 이후에도 계속 해당 IP 주소를 사용하고자 한다면 IP 주소 임대기간 연장(IP Address Renewal)DHCP 서버에 요청해야 하고 또한 단말은 임대 받은 IP 주소가 더 이상 필요치 않게 되면 IP 주소 반납 절차(IP Address Release)를 수행하게 됩니다.

 

이번 시간에는 단말(DHCP client)DHCP 서버로 부터 IP 주소를 할당(임대) 받는 절차에 대해서 알아 보도록 하겠습니다.

IP 주소 할당(임대) 절차에 사용되는 DHCP 메시지는 아래 그림과 같이 4개의 메시지로 구성되어 있습니다.

1) DHCP Discover

메시지 방향: 단말 -> DHCP 서버

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)

의미: 단말이 DHCP 서버를 찾기 위한 메시지입니다. 그래서 LAN상에(동일 subent상에) 브로드캐스팅을 하여 "거기 혹시 DHCP 서버 있으면 내게 응답 좀 해 주세요"라고 단말이 외칩니다.


[주요 파라미터]

- Client MAC: 단말의 MAC 주소

  

2) DHCP Offer

메시지 방향: DHCP 서버 -> 단말

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)이거나 유니캐스트일수 있습니다. 이는 단말이 보낸 DHCP Discover 메시지 내의 Broadcast Flag의 값에 따라 달라지는데, Flag=1이면 DHCP 서버는 DHCP Offer 메시지를 Broadcast, Flag=0이면 Unicast로 보내게 됩니다.

의미: DHCP 서버가 "저 여기 있어요~"라고 응답하는 메시지입니다. 단순히 DHCP 서버의 존재만을 알리지 않고, 단말에 할당할 IP 주소 정보를 포함한 다양한 "네트워크 정보"를 함께 실어서 단말에 전달합니다.

 

[주요 파라미터]

- Client MAC: 단말의 MAC 주소

- Your IP: 단말에 할당(임대)IP 주소

- Subnet Mask (Option 1)

- Router (Option 3): 단말의 Default Gateway IP 주소

- DNS (Option 6): DNS 서버 IP 주소

- IP Lease Time (Option 51): 단말이 IP 주소(Your IP)를 사용(임대)할 수 있는 기간(시간)

- DHCP Server Identifier (Option 54): 본 메시지(DHCP Offer)를 보낸 DHCP 서버의 주소. 2개 이상의 DHCP 서버가 DHCP Offer를 보낼 수 있으므로 각 DHCP 서버는 자신의 IP 주소를 본 필드에 넣어서 단말에 보냄

 

3) DHCP Request

메시지 방향: 단말 -> DHCP 서버

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)

의미: 단말은 DHCP 서버()의 존재를 알았고, DHCP 서버가 단말에 제공할 네트워크 정보(IP 주소, subnet mask, default gateway)를 알았습니다. 이제 단말은 DHCP Request 메시지를 통해 하나의 DHCP 서버를 선택하고 해당 서버에게 "단말이 사용할 네트워크 정보"를 요청합니다.


[주요 파라미터]

- Client MAC: 단말의 MAC 주소

- Requested IP Address (Option 50): 난 이 IP 주소를 사용하겠다. (DHCP OfferYour IP 주소가 여기에 들어감)

- DHCP Server Identifier (Option 54): 2대 이상의 DHCP 서버가 DHCP Offer를 보낸 경우, 단말은 이 중에 마음에 드는 DHCP 서버 하나를 고르게 되고, 그 서버의 IP 주소가 여기에 들어감. , DHCP Server Identifier에 명시된 DHCP 서버에게 "DHCP Request" 메시지를 보내어 단말 IP 주소를 포함한 네트워크 정보를 얻는 것

 

4) DHCP Ack

메시지 방향: DHCP 서버 -> 단말

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 혹은 유니캐스트일수 있으며 이는 단말이 보낸 DHCP Request 메시지 내의 Broadcast Flag=1이면 DHCP 서버는 DHCP Ack 메시지를 Broadcast, Flag=0이면 Unicast로 보내게 됩니다.

의미: DHCP 절차의 마지막 메시지로, DHCP 서버가 단말에게 "네트워크 정보"를 전달해 주는 메시지입니다. 앞서 설명드린 DHCP Offer'네트워크 정보"와 동일한 파라미터가 포함됩니다.


[주요 파라미터]

- Client MAC: 단말의 MAC 주소

- Your IP: 단말에 할당(임대)IP 주소

- Subnet Mask (Option 1)

- Router (Option 3): 단말의 Default Gateway IP 주소

- DNS (Option 6): DNS 서버 IP 주소

- IP Lease Time (Option 51): 단말이 본 IP 주소(Your IP)를 사용(임대)할 수 있는 기간(시간)

- DHCP Server Identifier (Option 54): 본 메시지(DHCP Ack)를 보낸 DHCP 서버의 주소

 

이렇게 DHCP Ack를 수신한 단말은 이제 IP 주소를 포함한 네트워크 정보를 획득(임대)하였고, 이제 인터넷 사용이 가능하게 됩니다.


WRITTEN BY
SiriusJ

,

채널화의 종류

Network 2016. 4. 19. 16:35

채널화는 링크의 가용 대역폭을 지국들 사이에서 시간적으로, 주파수상으로 코딩을 통해 다중적으로 접근하는 것입니다. 처음에는 일반 라디오, TV방송에서만 쓰였고 무선전화가 나왔을 때에도 소수의 사람들이 아날로그 사운드를 주고받는 수준이었으므로 주파수 대역을 쪼개서 할당만 해주면 되었지만, 무선통신이 일반화되고 휴대폰 사용자도 기하급수적으로 증가하며 기존 주파수를 쪼개는 방식은 사용자 수, 속도 등의 여러가지 면에서 감당이 안되어져 점점 복잡하며 효율적인 발전으로 나아가게 됩니다. 대표적인 방식을 몇 개 다뤄보도록 하겠습니다.


FDMA(Frequency Division Multiple Access)

가장 초기에 사용되었던 주파수 분할 방식입니다. 말 그대로 주파수 대역을 분할해서 나눠주는 방식입니다. 현재 FM 라디오 방송을 예로 생각하여 남는 주파수를 나눠준다고 보시면 됩니다. 하지만 무선전화에 할당 된 주파수 대역은 한정되어있는데 동시 사용량이 많아 질 경우에는 쪼개는 것이 감당이 되지 않게 됩니다. 만약 무선 전화에 할당된 주파수 대역이 800MHz ~ 850MHz라고 보면, 동시 통화가 늘어날 수록 노이즈에 약하고 통화품질이 많이 떨어질 수 밖에 없습니다.


TDMA(Time Division Multiple Access)

위의 FDMA의 단점들 때문에 나온 방식이 바로 TDMA입니다. 모든 주파수 대역을 한 명이 한꺼번에 사용하되, 사용자가 늘어날 경우 여러 사용자가 번갈아가며 이 주파수 대역을 한꺼번에 사용하는 것입니다. 마치 싱글코어 CPU가 멀티프로세싱을 하는 방식과 흡사하며, Round Robin방식으로 나눠쓰기 때문에 동시 사용자가 적으면 한 사용자는 쾌적한 상태로 사용할 수 있습니다. 그리고 여러 주파수 대역에 데이터를 나눠 전송하기 때문에 오류 검출이나 데이터손실 가능성 면에서도 FDMA보다는 좋습니다. 실제로 TDMA는 FDMA보다 3~11배 정도의 빠른 속도로 데이터를 주고 받을 수 있고 노이즈에 훨씬 강합니다.


CDMA(Code Division Multiple Access)

TDMA와 CDMA는 동시에 공존했던 기술이지만, CDMA가 더 발전된 기술입니다. CDMA는 모든 대역의 주파수를 모든 시간동안 모든 사용자가 한꺼번에 사용하게 됩니다. 사용자마자 난수(랜덤한 수)를 할당해주고, 그 사람을 위한 데이터는 해당 난수로 암호화(부호화)합니다. 수신자에게 가서 복호화 과정을 거쳐 데이터를 복원하는데 이것을 '코드'라 불러서 CDMA라는 이름이 붙게 되었습니다. 즉, 각 사용자에게 전송될 데이터는 그에 맞게 코드화하여 보내게 되는 것이므로 사용자의 디바이스는 도처에 날아다니는 데이터 중에서 자신에게 맞는 코드로 된 데이터만 받아들이면 됩니다. 흔히 말하는 3G에 사용된 분할방식이 CDMA입니다.


OFDM(Orthogonal Frequency-Division  Multiplexing 직교 주파수 분할 다중 방식)

OFDM은 뜨고있는 신개념 기술이지만 FDMA, TDMA, CDMA,와 별개로 볼 수는 없는 기술이라 할 수 있습니다. OFDM-FDMA, OFDM-CDMA라는 식으로 기존 기술을 획기적으로 향상시켜주는 수단이라 할 수 있는 주파수 직교 기술인데 데이터를 여러개로 쪼개 직교하는 일정 간격의 Carrier 주파수에 병렬로 동시에 실어보내는 방식입니다.

위의 그림이 일반적인 FDMA방식으로 인접한 주파수끼리의 간섭을 피하기 위해 일정한 여백을 두고 쪼개는 것을 확인 할 수 있습니다. 데이터를 병렬로 보내더라도 위와 같은 분할은 효율성이 떨어져 버리지만, 주파수 간섭이 생길 경우 손실이 더 크기때문에 어쩔 수 없는 선택이었던 반면,

아래 그림처럼 겹치는 주파수지만 서로 직교하는 간격으로 데이터를 실을 시, 직교하는 파동끼리의 간섭이 없게되어 아래 그림처럼 훨씬 효율적인 주파수 사용이 가능하게 됩니다. 현 시점 이후에 나오는 통신방식은 모두 아래와 같은 직교 방식을 이용하고 있다해도 과언이 아닐 정도로 각광받는 기술입니다.

'Network' 카테고리의 다른 글

TCP의 흐름제어, 혼잡제어  (0) 2016.04.19
DHCP란?  (0) 2016.04.19
Blocking, non-blocking, Synchronous(동기화), Asynchronous(비동기화)  (0) 2016.04.19
ARP/RARP Protocol, 동작 방법  (0) 2016.04.19
OSI 7계층(OSI 7 Layer)  (2) 2016.04.19

WRITTEN BY
SiriusJ

,