브로드캐스트 : 

<우리 네트워크에 혹시 Z라는 녀석이 있으면 내가 통신하고 싶으니까 MAC Address좀 가르쳐주라> - 같은 네트워크 안에 사는 PC만이 브로드캐스트를 받을 수 있다.


이때, Z는 자신을 불러준 Y의 브로드캐스트를 받게 된다.

그럼, Z는 Y에게 자신의 MAC Address를 알려주게 되고, 

       Y는 Z의 MAC Address를 알게되고 나서 , 비로서 통신을 시작하게 된다.



그러나, 중간에 라우터가 있다면, 라우터는 브로드캐스트를 통과시키지 못한다.

이에 대한 자세한 설명은 추후에 하도록 하겠다.



라우터는 이 중개자 역할을 한다고 보면 된다.

Y가 Z를 찾는다.

Y는 라우터에게 Z의 MAC Address를 묻는다.

라우터는 자신의 네트워크 망안에 존재라는 Z의 MAC Address를 알고 있습니다.


그럼, 라우터는 Y에게 대답합니다.

"내가 Z의 MAC Address를 알고 있어. 

 Y야, 네가 보내고 싶은 정보를 나(라우터)의 MAC Address주소를 가르쳐 줄 테니 내게 보내렴. 그럼, 내가 다시 너의 데이타를 Z에게 전해줄게.


그러면, Z는 라우터에게 자신의 MAC Address를 보낸다.


한마디로 말해서, 통신 네트워크는 IP만 있어서는 안되고 바로 MAC Address가 있어야 한다.

 

'네트워크 기초' 카테고리의 다른 글

1 Layer - Physical Layer.  (0) 2015.04.25
OSI 7 Layer 외우기.  (0) 2015.04.25
OSI 7 Layer(계층)는 왜 만들어졌나?  (0) 2015.04.25
MAC Address 란?  (0) 2015.04.24
네트워크 케이블이란?  (0) 2015.04.23

MAC Address 란?

네트워크 기초 2015. 4. 24. 09:00 Posted by 네트동자

MAC (Media Access Control) 


컴퓨터는 네트워크 상에서 어떻게 서로를 구분해서 인식할 수 있는가?

즉, 서로간의 통신을 위해서 서로를 구분할 일종의 주소가 필요하다.

마치, 우리가 편지를 서로 주고 받기 위해서 주소가 필요한 것과 마찬가지이다.

이 역할을 담당하는 주소가 바로 MAC 주소이다.



ARP (Address Resolution Protocol) - IP 주소를 다시 MAC으로 바꾸는 절차.


cmd명령어

ipconfig /all


이때, Physical address로 보이는 주소가 바로 자신의 MAC Address 입니다.


MAC (Media Access Control) Address 란 무엇인가?

네트워크(여기서는 Ethernet을 가르킨다.)에 붙는 각 장비들은 

48bit ( 6octet이 됩니다. = 옥테트란 8개의 비트를 묶은것 )


일단, '8개의 비트가 옥테트이다.'라고 알고 넘어가자.

알다시피 옥토퍼시, 옥타브라는 말이 있는 것과 마찬가지로 옥테트란 말 자체에 8의 의미가 담겨있다. 


옥테트 주소는 랜카드 또는 네트워크장비에 이미 고정되어 있는 주소이다. 

또한, 이는 유일한(전 세계에서 유일한)주소이다.


바로, 이 주소를 MAC Address, 또는 하드웨어 주소라고 한다.

그러므로, 랜카드 하나하나마다 서로 각기 다른 MAC Address가 있고 또 우리가 흔히 말하는 라우터나 스위치 장비에도 각각 MAC Address가 들어가 있다.

물론, Server도 마찬가지이다. (서버에 랜카드가 설치되어 있으니깐)


MAC Address는 8자리마다 하이픈(ㅡ)이나 콜론( : ), 점( . )으로 구분되어지기도 하는데,

예를 들어


00-60-97-8F-4F-86

00:60:97:8F:4F:86

0060.978F.4F86


위 처럼 나타낸다.

위의 세가지는 모두 같은 호스트를 나타내는 기호들이다. (즉, 모두 같은 MAC Address 이다)


여기서, 우리는 혼동하게 된다.

아까, 분명히 우리는 MAC Address는 48비트라고 말했는데 

왜, 여기에 써있는 주소는 48자리 주소가 아닐까?


아주 좋은 의문점이다.


처음에 정의한 바와 같이 MAC Address는 48비트로 이루어져 있는게 사실이다.

그러므로, 원래대로 한다면,

위에 표시된 MAC Address는 2진수로 표시되어야 한다. 

(48비트라는 의미는 2진수 48개를 의미한다)

그런데, 여기서 갑자기 애매하고 혼란스러워진다.

그 이유는 바로, 당신이 2진수를 모르고 있기 때문이다.


2진수를 앞으로 따로 공부할테니 걱정을 말자.

그러니까, 일단은 내 말을 믿고, MAC Address란 '0'과 '1'만으로 이루어진 48자리로 만들어진다고 알고 넘어가자.









 










다음 시나리오에 맞는 코딩을 해보라.

연습문제 2015. 4. 24. 09:00 Posted by 네트동자

/* 정민이는 과수원에서 아르바이트하고 돈을 받았습니다.

   받은 돈으로 인터넷 쇼핑몰에서 청바지를 사려고 합니다.

   청바지 하나를 고르고 구매완료를 누르려고 했으나,

   친구 현상이도 같은 청바지를 사겠다고 부탁을 했습니다.

   현상이를 위해서 정민이는 청바지의 수량을 두개로 하고 구매완료를 눌렀습니다.

   

   

   위의 구문을 코딩으로 완성하라*/


<위의 문제를 풀기위한 정답은 전혀 없습니다. 그냥, 자기 꼴리는 대로 코딩을 해보세요. 그래서 자신이 만족할 만한 결과값이 나온다면 그 문제를 해결된 것입니다.>


/* 변수 엽습문제 Chapter 03 잘못 선언된 변수 찾기*/

#include <stdio.h>

void main()

{

int int;

int 2010_ymca;

int freeLec;

int a A;


printf("howTo = %d", howTo);


int howTo = 20;

int one + two;


}




/* 변수 엽습문제 Chapter 03 잘못 선언된 변수 찾기*/

#include <stdio.h>

void  main()   - main (void)

{

int int; -              // ANSI 규정에 의해 int 는 규약된 것으로 쓰면 안된다.

int 2010_ymca;      // 변수 앞에 숫자를 먼저 쓸 수 없다.

int freeLec;

int a A;               // 변수 사이에 공백이 있으면 안된다.


printf("howTo = %d", howTo);


int howTo = 20;

int one + two;


}

네트워크 케이블이란?

네트워크 기초 2015. 4. 23. 09:00 Posted by 네트동자







Category 5E 케이블 부터 기가비트를 지원한다.

Category 5  는 기가비트지원 않함.


기가비트로 LAN을 설정하기 위해서는

기본 장치의 인프라 구축과 PC상에 점보프레임 구성이 따로 필요하다.




<여러 종류의 케이블>

10 Base FL : 10Mbps 광케이블, FL (Fiver-Optic 광케이블) 이라는 정보를 우리에게 준다.

               이 케이블은 ST 커넥터를 사용해서 연결한다.

               광케이블은 싱글모드, 또는 멀티모드 케이블을 사용한다.


10 Base 2 : 10Mbps, 최대 200m. (몇 년 전까지 이 케이블을 가장 많이 사무실에서 사용)

              그러나, UTP 케이블에 완전히 사라짐. BNC 커넥터 사용.


10 Base 5 : 10Mbps. 최대 500m (Thick 케이블, Yellow 케이블) 

              주로 백본 케이블, 

              즉 중앙망용으로 천장위에 설치하고 

             '트랜시버 케이블'을 이용해서 천장에서 하나씩 뽑아서 내린 다음에 

              PC의 랜카드와 연결했다.

              

              랜카드 중에 AUI 인터페이스(15핀으로 생긴 사다리꼴 인터페이스)를 

              가진 것이 바로 이 케이블과 연결하기위한 인터페이스가 된다.


100 Base TX : Category 5 UTP 케이블을 사용. 최대거리 100m. 전송속도 100Mbps.


100 Base T2: 원래, 100Mbps 속도를 내려면 위처럼, Category 5 케이블을 사용한다.

               그런데, 100 Base T2 방식을 쓰면, Category 3,4,5 전부 사용해서 

               100M를 구현할 수 있다. 자주 쓰는 방식은 아님.


100 Base T4: Category 3케이블을 가지고 100Mbps 용으로 사용할 때 만드는 케이블.

                다른 케이블은 2페어 (4가닥)을 사용하지만, 

                

                100 Base T4 케이블은 4페어 (8가닥)을 전부 사용한다는 점에서 

                차이가 있다.


100 Base FX : 100Mbps , 전송거리 2Km~10Km까지 가능.

                 SC라는 네모난 접속 커넥터를 이용해서 접속.

                 

1000 Base SX : 이것은 기가비트, 1000Mbps 속도. 

                  short wavelen-gth 라는 광케이블을 사용.

                  최대전송거리 (약 270m ~ 약 550m)


1000 Base T : 1000Mbps UTP (Unshielded Twitsted-Pair)케이블을 이용하여 전송. 

                 최대전송거리 (100m) Category 5 케이블을 사용하면 된다.

                 국제규약에 의해 기가비트용 UTP 케이블이 Category 5 로 결정되었다.

                 이렇게 구성하기 위해서 4페어(8가닥) 을 

                 모두 사용한다는 사실도 기억하길 바란다. 



                  








'네트워크 기초' 카테고리의 다른 글

1 Layer - Physical Layer.  (0) 2015.04.25
OSI 7 Layer 외우기.  (0) 2015.04.25
OSI 7 Layer(계층)는 왜 만들어졌나?  (0) 2015.04.25
브로드캐스트, 유니캐스트, 멀티캐스트  (0) 2015.04.24
MAC Address 란?  (0) 2015.04.24

변수의 시작주소 & 연산자

C언어 변수란? 2015. 4. 23. 09:00 Posted by 네트동자

C언어에서는 & 연산자를 사용하면,

변수의 시작주소를 알 수 있다.



우리는 scanf() 함수를 배웠다.

scanf()함수에서 우리는 Keaboard로부터 Data를 입력받아 변수에 저장할 때,

& 연산자를 사용했었다.


다음 연습해볼 예제로 변수의 시작주소를 공부해보자.



01: /* 변수의 시작 주소에 대해 공부하는 예제*/

02:

03: #include <stdio.h>

04: int main(void)

05: {

06: int a = 3;

07: int b = 4;

08:

09: printf("a의 값 : %d \n", a);                //변수 a에 저장된 값을 10진수로 출력하라

10: printf("b의 값 : %d \n", b);

11:

12: printf("변수 a의 시작주소 : %x \n", &a);      //변수 a의 시작주소를 16진수로 출력

13: printf("변수 b의 시작주소 : %x \n", &b);

14

15: return 0;

16: }




09행과 10행에서 "변수 a"와  "변수 b"가 저장하고 있는 값이 10진수(%d)로 출력된다.

12행과 13행에서 변수 a와 변수 b가 있는 '메모라 공간의 시작주소'를 16진수(%x)로 출력.


그렇게 해서,

바로 12ff60에 변수 a가 만들어졌고,

      12ff54에 변수 b가 만들어졌다.


나중에 우리 공부하니까

여기서는 이정도만 공부하자.



변수 이름을 지을 때, 주의할 점~!

C언어 변수란? 2015. 4. 23. 09:00 Posted by 네트동자

변수의 이름을 지을 때에는 

다음과 같은 점에 주의하세요~!


1) 특수기호, 공백문자, 변수이름 맨 처음에 숫자를 사용하면 안된다.

2) C언어에서 사용이되는 키워드를 변수이름에 사용하면 안된다.

3) C언어는 대,소문자를 구분한다. 따라서 변수 이름을 유의해서 지어야 한다.




  변수이름이 O 

 변수 이름이 X 

 잘못된 까닭? 

  int apple

 int ?apple; 

  특수문자 사용  

  int total; 

 int to tal; 

  to와 tal 사이에 공백문자사용

  int result2;

 int 2result; 

  맨 처음 숫자 사용





C언어에서 'Keaword'는 고유한 의미를 갖는 예약어(Reserved Word)입니다.

모든 프로그램언어는 각기 다른 고유 Keyword가 있다.

C언어에는 32개의 기본 Keyword가 존재한다.

다음은 미국표준협회 ANSI (American National Standards Institute)에서 혼란스러웠던 C언어의 규칙들을 정리하여 표준 라이브러리 함수를 정의하였다.




ANSI (American National Standards Institute) 에  의하여 표준화된 Keawords.



auto break case char const continue default do double else enum extern

float for goto if int long register return short signed sizeof static struct switch

typedef union unsigned void volatile while



변수 선언 시 주의할 점.

C언어 변수란? 2015. 4. 22. 09:00 Posted by 네트동자

지금까지 우리는 C언어에서 "변수를 선언"하는 것.

"변수를 초기화 하는 것."

"변수에 데이터를 저장, 대입"하는 것들을 배웠다.


이번 장에서는

'변수를 선언'할 때 주의해야 하는 점들을 알아보도록 한다.



원칙1) 함수 내에서 변수를 선언할 때에는 제일 앞쪽에 해야 한다.

- 다음 예제를 살펴보자.


#include <stdio.h>

int main(void)

{

int a;

int b;


a = 1;

b = 2;


int c;

c = 3;


printf("a의 값 : %d \n", a);

printf("b의 값 : %d \n", b);

printf("c의 값 : %d \n", c);


return 0;

}


원칙2) 변수 이름은 의미 있게 짓는다.


#include <stdio.h>

int main(void)

{

int appleBox = 30;

int grapeBox = 20;

int total;


total = appleBox + grapeBox;

printf("총 %d박스가 있습니다. \n", total);


return 0;

}


<결과값>



변수 : 임시저장공간

임시저장공간이 바로 변수이기때문에, 

언제나 변수는 다른 DATA로 변경될 수 있다.




#include <stdio.h>

int main(void)

{

int a = 0;

int b = 1;


printf("a의 값은 %d입니다. \n", a);

printf("b의 값은 %d입니다. \n", b);


a = a + 10;

b = b + 10;


printf("변경된 a의 값은 %d입니다. \n", a);

printf("변경된 b의 값은 %d입니다. \n", b);


return 0;

}




<결과값>





위의 예제에서 알 수 있듯이

변수는 가변적이다.

 = 연산자는 같다는 의미가 아니다.

바로, 변수에 값을 저장하는 '대입 연산자'의 기능을 해줄 뿐이다.



이와같이,

변수를 공부하다보면 한가지 의문이 생긴다.

"메모리공간(변수)의 데이터가 변경되지 않도록 하는 방법은 무엇일까?


당연히 있다. 바로 상수다.

상수는 프로그램이 실행되는 도중, 값이 변경되지 않는다.


변수에 저장한 데이터를 상수화 하는 방법은 다음 챕터에서 공부를 해보자.


















변수와 데이터를 사용한 예제.

C언어 변수란? 2015. 4. 22. 09:00 Posted by 네트동자

01: #include <stdio.h>

02: int main(void)

03: {

04: int a = 0;

05: int b = 1;

06:

07: printf("a의 값은 %d입니다. \n", a);

08: printf("b의 앖은 %d입니다. \n", b);

09:

10: return 0;

11: }




04행과 05행을 살펴보라.

이전까지 우리가 실현해 본 코딩과는 달리 변수 a와 변수 b의 데이터를 초기화하고 있다.

특히, 변수 a에 데이터 0(zero)을 저장하고 있다.


그리고,

07행과 08행에서 변수에 저장된 데이터를 '10진수'로 출력하고 있다.