반응형

맥 어드레스란 (Media Access Control) 통신을 위해 서로를 구분할 주소이다. 장비끼리 통신을 하려면 맥주소를 알아야 하는데, 처음 통신을 하는 경우에는 인터넷 통신을 하는 IP주소만 알뿐 맥소는 알 수없다. 그래서 IP주소를 MAC주소로 바꾸는 ARP Request, ARP Reply 과정이 필요하다. 


ARP (Address Resolution Protocol)

-한 네트워크 내에서 통신할 경우

PC A가 PC B와 통신을 하고싶다. (IP주소는 알고있다) PC A는 자신이 속한 네트워크 내의 모든 장비에게 브로드캐스트를 보낸다. "PC B와 통신하고 싶으니 맥주소를 알려달라!" 브로드캐스트를 받은 PC B는 A에게 자신의 맥 어드레스를 알려주게 되고, 그제서야 통신이 이루어진다.


-통신하고 싶은 PC가 다른 네트워크 상에 있을 경우


PC A와 PC B가 다른 네트워크 상에 있다면 PC A가 아무리 브로드캐스트를 보내도 라우터가 막기 때문에 PC B는 받을 수 없다. 대신 PC B를 찾는 A의 브로드캐스트가 온다면 라우터는 B의 IP주소를 보고 이곳의 네트워크엔 B가 없다고 판단한 후, A에게 자신의 맥주소를 보내준다. (대신 전달해 주겠다는 뜻)  따라서 A가 B에게 정보를 보낼 땐 받는 어드레스를 라우터의 맥 어드레스로 보내게 되고, 라우터는 B가 살고있는 지역의 라우터에게 정보를 전달한 후, 그 곳의 라우터는 자신의 네트워크 안에 있는 B의 맥어드레스를 찾아 보내주게 된다.


MAC ADDRESS



모든 장비들은 48bit의 주소를 갖게 되는데 이 주소는 고정되어 있는 유일한 주소로 이것이 맥어드레스이다. 모든 랜 상의 디바이스들은 유일한 맥 주소를 가져야 하며, 원래 0과 1로만 이루어진 48bit이지만, 굉장히 길고 관리가 불편하여 위와같이 16진수로 표기한다. (2진수 네자리가 16진수의 한자리 이므로 굉장히 간결해 질 수 있다.) 앞쪽의 6자리는 생산자를 나타내는 코드로, OUI메이커에 따라 다르기 때문에 어느 회사에서 만든 제품인지 알 수 있다. 그 뒤 6자리는 랜덤으로 분배하는 시리얼 넘버이다. (위와 같은 경우, 00-1E-90-00-00-00부터 00-1E-90-FF-FF-FF까지 분배된다.






반응형

'Study > Network' 카테고리의 다른 글

TCP/IP 프로토콜  (0) 2014.08.02
캐스트 종류+OSI 7계층  (0) 2014.08.02
케이블에 대해...  (0) 2014.08.01
네트워킹의 방식-이더넷과 토큰링  (1) 2014.07.24
네트워크 개요  (1) 2014.07.14
반응형

케이블은 네트워크 장비와 장비의 연결에는 어디든 사용되어야 한다. 


<케이블의 종류>

-UTP 케이블 : UTP는 Unshielded Twisted-pair의 약자인데, 감싸지 않은 한쌍이 꼬여있는 케이블을 뜻한다. 현재 우리가 가장 많이 사용하고 있으며, 비슷한 케이블로 STP케이블이 있는데(Shieled Twisted-pair) 성능은 좋지만 가격면에서 비싸다고 한다. 주로 토큰링에서 사용된다.


위에서 보이는 사진과 같이 UTP케이블은 총 8개의 선이 있고, 2개씩 서로 꼬여있는(pair) 형태이다. 케이블과 RJ_45커넥터와 연결을 할 때는 색깔별로 들어가는 순서가 있는데,



왼쪽 그림과 같이


1. 화이트 오렌지  

2. 오렌지


3. 화이트 그린     

4. 블루

5. 화이트 블루     

6. 그린

  

7. 화이트 브라운  

8. 브라운              순으로 커넥터에 연결된다.

(다이렉트 케이블)



이 중에서 실제로 데이터 송신과 수신을 할 경우 사용되는 번호는 1,2번과 3,6번이고 사실상 다른 순서는 무시해도 통신은 이루어진다고 한다.





-광케이블


광케이블은 얇은 광섬유를 타고 전송이 이루어진다. 

케이블의 한가닥을 코어라고하는데, 통신을 위해서 최소 2코어가 필요한데 수신과 송신에 각각 하나씩 필요하기 때문이다. 






-BNC / AUI 케이블





BNC케이블과 AUI케이블은 거의 사용하지 않는 추세이다. AUI케이블은 10-base-5 케이블과 연결되어 사용되는데, 중간에 트랜시버를 넣고 한쪽 끝은 트랜시버, 다른 한 쪽끝은 장비와 연결하여 사용한다.


여기서 10-base-5 케이블은 무엇을 말하는 걸까요??


우리가 자주쓰는 케이블에는 10 Base T가 있는데, 여기서 10은 속도를 나타낸다. 즉 10Mbps 속도를 지원한다는 뜻이다. Base는 Baseband용 케이블이라는 것이다. 원래 케이블 종류에는 Baseband와 Broadband가 있는데 Baseband는 디지털용, Broadband는 아날로그용이다. T는 TP케이블, 즉 UTP케이블을 뜻한다.


이것과 같이 10 base 5 케이블은 10Mbps의 속도로 500미터까지 전송가능한 베이스밴드용 케이블을 말한다.












반응형

'Study > Network' 카테고리의 다른 글

TCP/IP 프로토콜  (0) 2014.08.02
캐스트 종류+OSI 7계층  (0) 2014.08.02
맥 어드레스(MAC Address)  (0) 2014.08.02
네트워킹의 방식-이더넷과 토큰링  (1) 2014.07.24
네트워크 개요  (1) 2014.07.14
반응형

PE(Portable Executable) File 이란?

PE파일은 Windows 운영체제에서 사용되는 실행파일들을 말한다. 리버싱은 어떤 프로그램의 구조와 실행원리 등을 분석하는 것이므로 PE파일 구조를 상세히 알아보는 것이 중요하다.




PE File 종류




PE File의 대략적 구조



PE 파일의 구조에서 Dos header에서 Section header까지를 PE헤더라 하고, 나머지 부분을 PE바디라고 한다. 파일의 내용은 코드(.text), 데이터(.data), 리소스(.rsrc)로 나뉘어져 섹션에 저장된다.  섹션 헤더에는 각 섹션에 대한 크기, 위치, 속성 등이 정의되어 있고, PE헤더의 끝과 섹션의 끝부분에는 NULL padding 영역이 존재한다. 컴퓨터에서 패킷을 처리할 때 효율을 높이기 위해 최소 기본 단위 개념이 사용된 것이다. 파일/메모리에서 섹션의 시작은 최소 기본 단위의 배수에 해당되는 위치고 나머지는 NULL로 채워진다.




VA?? RVA??

PE파일과 메모리는 구조는 같으나, 파일은 offset, 메모리는 VA로 위치를 표시한다. (위의 그림에서는 offset이다.) 

VA프로세스의 가상 메모리의 절대주를 뜻하고, RVA어느 기준위치에서부터 상대위치를 뜻한다. 관계식은 아래와 같다.



PE 헤더 내의 정보는 RVA 형태로 되어있는게 많은데, 그 이유는 PE파일이 프로세스 가상 메모리의 특정 위치에 로딩될 때, 다른 PE파일이 이미 로딩되어 있을 수 있기 때문이다. 그럴 경우 다른 위치로 로딩을 다시 해주어야 하는데(재배치) VA로 되어있으면, 정상적인 엑세스가 이루어지지 않을 수도 있기 때문이다. RVA는 재배치가 발생해도 기준위치에 대한 상대위치가 바뀌지 않기 때문에 원할한 로딩이 이루어진다.



반응형

'Study > Reversing' 카테고리의 다른 글

"pwnable.kr" fd 문제풀이  (0) 2014.11.04
PE헤더-NT Header  (0) 2014.08.03
PE헤더-Dos header/Dos stub  (0) 2014.08.03
리버싱 분석방법-정적분석, 동적분석  (0) 2014.07.07
반응형

Q. 두 개의 텍스트 파일이 같은지 다른지 확인해보자. 단순히 공백문자 하나가 차이를 보여도 두 텍스트 파일은 다른것이다.








비교할 문자들을 넣을 배열을 두개 선언하고,

두개의 파일을 읽기전용으로 오픈한다.










두개의 파일의 끝까지 반복문을 돌려놓고,

각각의 배열에 파일들의 문자를 저장한다.


두개의 배열을 서로 비교하여, 일치, 불일치를 판명하여 출력한다.




오픈한 파일을 닫는다.





*파일 경로를 직접 입력 받을 수도 있다. 입력 받을 배열을 선언해주고 scanf함수를 사용하여 입력 받아주면 된다.


-결과창-





*만약 공백이 다르거나 대문자와 소문자가 달라도 일치하지 않는다가 출력된다.


반응형
반응형

Q. 문자열을 저장하고 있는 파일을 열어서 A와 P로 시작하는 단어의 수를 세어서 출력하는 프로그램을 작성하라. 단, 모든 단어는 공백문자(스페이스바, \t, \n)에 의해 구분된다.










>>파일입출력

text.txt파일을 읽기용도로 오픈한다. 만약 없으면 파일오픈 실패 출력.




>>그 파일의 끝부분까지 반복문을 돌력 A,a 또는 P, p로 시작하는 단어의 수를 저장한다.

fscanf함수는 공백을 기준으로 문자열을 구분하기 때문에 사용했다.





>>저장한 수를 출력한다.


>>오픈한 파일을 닫아준다.



*파일의 경로는 프로젝트 파일이 있는 곳에 저장을 해주어 파일이름만 쓰는경우, 전체적인 파일의 경로까지 다 표시해주는 경우 둘다 가능하다.







text.txt의 전문이다.

스페이스와 엔터 둘다 구분이 가능한지 알아보기 위하여 둘 다 사용을 해보았다.










































-결과창-


반응형
반응형

Q. 복소수를 나타내는 구조체를 정의하고, 복소수의 덧셈과 곱셈을 위한 함수를 각각 정의하자. 이를 기반으로 프로그램 사용자로부터 두 개의 복소수 정보를 입력받아 덧셈과 곱셈을 해보자..


>>개요

복소수 덧셈 : (a+bi) + (c+di) = (a+c) + (b+d)i

복소수 곱셈 : (a+bi) x (c+di) = ac - bd + bci + adi



우선, 복소수의 실수부와 허수부를 한번에 쓸 수 있도록 구조체를 선언한다.

기존의 자료형이름 대신 새이름을 부여하기 위해 typedef를 선언했다.




구조체 변수를 대상으로 연산을 하려면 함수를 따로 정의해야 한다. 

Number 구조체 변수의 덧셈/곱셈 연산을 정의한다. (위-덧셈, 아래-곱셈)


메인함수에서 구조체 변수 Number를 선언하고 각각의 연산을 위해 함수를 호출한다. 


-결과창-



반응형
반응형

Q. 앞의 1번 문제에서 구현한 프로그램을 조금 변경하여 구조체 포인터 배열을 선언하고 구조체 변수를 동적으로 할당하는 형태로 프로그램을 재구현하라.



>>동적할당 함수 malloc을 쓰기 위하여 헤더파일 추가


>>book 구조체를 선언해준다.

   








-메인함수부-







































구조체 포인터를 선언한 후, p변수에 포인터 초기화 동시에 메모리공간을 동적으로 할당하여 준다. 그 후, 앞의 문제와 같이 반복문을 사용하여 입력과 출력을 해주고 마지막으로 동적할당된 메모리공간을 반환하여 준다.


-결과창-



반응형
반응형

LAN - Local Area Network : 어느 한정된 공간에서 네트워크를 구성하는 것(사무실)

WAN - Wide Area Network : 멀리 떨어진 지역간 네트워크 구축(인터넷)


네트워킹 방식은 크게 네가지로 나뉜다. 그러나 대부분 이더넷 방식이다.


-이더넷- 

  -CSMA/CD 프로토콜 사용

  -CSMA/CD = Carrier Sense Multiple Access/Collision Detection : 대충 눈으로 통신


이더넷 환경에서는 통신하고 싶은 PC나 서버는 자신의 네트워크 자원을 쓰고 있는 PC나 서버 중에서 통신 가능한 장비가 있는지 확인한다. (=즉 캐리어가 있는지 확인=>Carrier Sense)

캐리어가 감지되면 보낼 정보가 있어도 못 보내고 기다리고, 네트워크 통신이 없어지면 눈치를 보다 자신의 데이터를 네트워크 상에 실어보낸다. 눈치를 보다 두개 이상의 장비가 동시에 네트워크 상에 데이터를 실어보내는 경우(다중 접근) 충돌이 발생한다. = 콜리젼 발생

콜리젼이 발생하면 데이터를 전송했던 PC들은 랜덤한 시간동안 기다린 후 다시 전송해야 한다. 기다렸다 다시 보내도 충돌한다면, 또 다시 기다려야 한다. 그러나 15번을 전송했음에도 충돌이 발생한다면, 통신을 포기한다.

이더넷 환경에서 콜리젼이 발생하는 것은 CSMA/CD프로토콜 특성상 자연스럽지만, 너무 많은 콜리젼이 발생한다면 통신이 불가능해진다.


-토큰링-


토큰링 방식에서는 데이터를 전송하고자 하는 PC는 이더넷처럼 통신하고 있지 않다고 막 보내는것이 아니라 토큰을 가지고 있는 오직 한 PC만 데이터를 보낼 수 있다. 데이터를 다 보냈거나 보낼 데이터가 없으면 옆 PC에게 토큰을 전달한다.

콜리젼이 발생하지 않고 네트워크에 대한 성능을 미리 예측할 수 있지만, 순서를 기다려야 한다는 단점이 있다.


이더넷은 순서 없이 눈치로 통신 / 토큰링은 토큰을 가진 순서에 따라 통신

이더넷방식은 우리나라에서, 토큰링은 유럽에서 쓰인다고 한다.



반응형

'Study > Network' 카테고리의 다른 글

TCP/IP 프로토콜  (0) 2014.08.02
캐스트 종류+OSI 7계층  (0) 2014.08.02
맥 어드레스(MAC Address)  (0) 2014.08.02
케이블에 대해...  (0) 2014.08.01
네트워크 개요  (1) 2014.07.14
반응형

Q. 간단한 도서 관리용 프로그램을 작성하라. [제목, 저자명, 페이지수]에 대한 정보를 저장할 수 있는 구조체를 정의하고, 구조체 배열을 선언하여 도서에 대한 정보를 저장하는 구조를 작성해 보자. main함수에서는 사용자로부터 3권의 도서에 대한 정보를 입력받고, 입력이 끝나면 도서에 대한 내용을 출력해 주도록 하자.





   이름을 저장할 배열, 제목을 저장할 배열, 페이지 수를 저      장할 인트형 변수를 구조체로 정의한다.







main 함수에서


구조체를 한번에 담을 배열을 선언하고,


반복문을 사용하여 입력받는다.















출력부분













#printf, scanf 입출력함수를 사용하여 빈칸은 인정이 안되므로 주의하자(빈칸까지 수용하려면 putchar, getchar을 이용하라)


-결과창-










반응형
반응형

Q.야구게임을 컴퓨터와 할 수 있도록 프로그램을 작성해보자

>>개요 

컴퓨터가 0부터 9까지의 수 중에서 랜덤으로 세 숫자를 고르고, 사용자는 이것을 맞추는 게임이다. 숫자와 순서까지 모두 맞춰야하는데, 말할때마다 얼마나 비슷한지 알려주어야 한다.




배열 3자리를 선언하고 1부터 9까지의 수를 하나 랜덤으로 받는다. 단, 각 자리의 숫자가 중복되지 않게 앞자리 수와 같으면 다시 반복문을 돌려 다른 랜덤한 수를 받는다.






 컴퓨터가 세자리를 다 골랐다면, 게임을 시작한다. 무한 반복문 안에서 돌려 자신이 예상한 수를 입력하게한다. com배열과 usr배열을 순차적으로 방문하면서 수가 같으면서 자리까지 같으면 strike(str)변수를 하나 증가시켜주고, 숫자는 같은데 자리가 다르다면 ball변수를 하나 더해준다. 그런다음 결과를 알려준다. 만약 세자리 숫자와 순서가 모두 같을 경우,(3strike라면) 반복문을 빠져나와 게임을 종료한다.


-결과창- 


반응형

+ Recent posts

반응형
반응형