본문 바로가기
기타 교육/정보보호 컨설팅 전문가 양성과정

6 - 네트워크 보안(OSI 7계층, 이더넷, Data Header(데이터 헤더), CSMA/CD, IP 프로토콜, Hub, Wire Shark)

by Royal! 2021. 5. 28.
728x90
반응형

네트워크 보안을 알기 위해서는 네트워크의 선지식은 필수

 

네트워크란? 

네트워크 Protocol 이란?

 

네트워크 = 인터넷 

 

Protocol은 통신 규약. 규약은 약속. 

 

통신은 정보를 나르는 것. 

 

결론은 인터넷 상에서 정해진 약속으로 통신하는 것.

 

네트워크 = 쉽게 생각해서 2대의 컴퓨터가 서로 통신하는 것 


OSI 7계층 모델(Open Systems Interconnection Reference Model)

 

Open = 공개 System = 사전에 정의된 행위를 하는 것 Interconnetion = 통신 Reference = 참조 Model = 모델

 

즉 컴퓨터가 통신을 하기 위해서 앞으로 약속을 정하자라고 해서 만든 것.

 

Reference는 참조인데 대부분의 통신 체계가 OSI 7계층을 따른다. 

 

누가 만들었나? ISO(국제 표준 기구)

컴퓨터가 통신하기 위해서 여러가지 기능과 역할이 있다.(= 분업화 했다. 이것이 계층)

 

컴퓨터가 통신을 하기 위해서는 3가지의 주체가 필요하다. LAN카드, OS(운영체제), 응용프로그램

 

컴퓨터에 LAN선을 꽂으면 제일 먼저 어디랑 연결되나? → LAN카드

 

LAN카드가 L1, L2(물리 계층, 데이터 링크 계층)을 담당한다.

 

LAN카드가 담당하던 것을 OS에 넘겨준다. 즉 운영체제가 L3, L4(네트워크 계층, 전송 계층)을 담당한다.

 

OS(운영체제)가 담당하던 것을 응용 프로그램이 담당한다. 즉 응용 프로그램이 L5, L6, L7( 세션 계층, 표현 계층, 응용 계층)

 

※ 운영체제는 하드웨어를 효과적으로 관리하기 위해서 있는 것.(CPU, Memory, Monito, Print 등)

 

LAN카드의 목적

 

LAN카드로 통신하기 위해서는 유선을 꽂아야 한다. 

 

LAN카드의 목적은 정보의 전달을 하기 위한 것. 정보전달은 어떻게 하나? 2진수로 한다. 전기로 한다. 

 

신호가 안 오면 0, 신호가 오면 1.

 

(광케이블도 똑같다. 빛이 들어오면 1 안 들어오면 0)

 

L1 과 L2 계층(물리 계층, 데이터링크 계층)은 묶어서 말해도 된다. 묶어서 이더넷 계층이라 표현한다.

 

묶어서 표현할 수 있는 이유는 ? L1과 L2는 하드웨어이다. 즉 사용자가 건들여서 바꿀 수 있는 구조가 아니다.

 

나머지 계층은 소프트웨어로 사용자가 바꿀 수 있다.

 

 

L3계층(네트워크 계층)

멀리 떨어진 사용자에게 정보를 전달하기 위해 사용하는 것.

 

전 세계에 여러가지 컴퓨터가 있다. 그렇다면 어떻게 각 각의 컴퓨터를 구별할 것인가? 유일하게 구분을 할 수 있는 수단이 주소다. 즉 IP = 주소다. 

 

즉 L3의 목적은 유일한 주소 IP를 관리하는 것이다.

 

 

L4(전송 계층)

정보가 전달됐을 경우 이 정보가 정말 신뢰성 있는 정보인가 확인 할 때 쓰는 계층.

 

EX) 상대방과 대화를 하는데 

 

현재 L5과 L6 계층은 현재 거의 사용하지 않는다. L7 계층만 남아있다.

 

L5, L6는 압축과 암호화 등을 응용프로그램에서 하거나 L3, L4에서 해버려서 거의 사용을 안한다.

 

L3에서 IPsec L4에서 SSL/TLS를 통해 암호화. 압축, 해제는 응용프로그램에서 한다.

 

L7 응용 프로그램의 역할은 무엇인가? 게임, 브라우저 등 우리 생각하는 모든 것들이 응용 프로그램. 

 

그렇다면 계층의 분업화를 하는 이유는?

 

1. 각 계층의 패치, 업그레이드 시 7계층 전원을 바꿀 필요 없이 해당 계층만 패치, 업그레이드를 하면 되기 때문이다.

EX) 예를 들어 컴퓨터의 하드디스크가 고장날 시 컴퓨터를 버리나? 아니다. 컴퓨터의 하드디스크 부품만 바꿔주면 된다.

네트워크도 똑같다.

 

2. 속도의 향상을 위해서 

 


 

데이터란 ? 정보 EX) 피파게임이라고 생각해보자. 오른발로 공을 차라라고 응용플그램에 입력을 하는 것이 Data.

 

각 계층에서의 Data는 윗 계층에서 내려오는 모든 것들이 데이터다. 즉 7계층에서 → 6계층으로 내려올 때 

데이터 + 헤더를 가지고오는데 7계층 데이터+헤더가 6계층에서는 데이터이다.

 

그렇다면 내 컴퓨터에서 오른 발로 공을 차라는 것을 상대방 컴퓨터에도 똑같이 입력해줘야(적용해줘야) 한다.

 

즉 전달해줘야 정보를 헤더라고 한다.

 

헤더는 각 계층에서 해석할 수 있는 모든 것들을 담은 것이다.

 

다시 한 번 설명 해보면 피파게임(7계층)에서 어떤 축구 선수를 지정하고, 어떤 위치에서 이런 것들이 헤더이며

 

데이터는 오른발로 공을 차라라고 입력한 것. 

 


네트워크 주소의 표현

 

주소표현에는 3가지만 알면 된다.

 

1. URL  = Domain Name

→사용하는 이유? 통신하기 위해서는 정확한 IP주소가 필요하나 IP주소를 외우기 힘들다. 따라서 사람이 알기 쉽게, 알아보기 쉽게 만든 것이 Domain Name이다.

 

2. IP 주소 

 

3. MAC주소 = 이더넷 주소 = LAN주소  

이 세상에 존재하는 LAN카드를 식별하기 위한 유일한 주소.

 

Q) 사용자가 컴퓨터를 처음 사서 구글에 접속하고 싶을때 어떻게 해야하나?

 

1.일단 브라우저를 켜야한다.(응용프로그램 7계층)

 

2. 구글의 IP주소를 알아야 접속이 가능하다. 

 

3. 하지만 나는 구글의 IP주소를 모른다. 이걸 알려주것이 DNS이다.

 

4. DNS 서버가 구글의 IP주소를 알려준다.

7계층 http://www.google.com
6계층 생략
5계층 생략
4계층  
3계층(네트워크계층, IP)  IP주소를 알아야 한다.
   
   
   
   

다시 정리해보면

1. URL에 www.google.com입력한다. 

2. DNS를 호출해서 구글의 IP획득(1.1.1.1) 라우팅 테이블을 통해(최단경로를 알기위해서 Router가 저장한 쪽지라고 생각하면 된다.) 길을 찾는다.
3. Gateway  = Default Router

 

LAN은 브로드캐스트 통신을 한다.

 

LAN은 브로드캐스트인데 Gateway를 통해 나가면 내가 연결된 곳은 한 곳이다.

 

이 한 곳과 통신을 하고 이 한 곳을 식별하는 것이 LAN카드 = MAC주소이다.

(식별할 수 있는 방법이 LAN카드 유일)

 

Router는 (포트를 통해 최대한 짧은) 길을 알려주는 친구 (Root는 길)

 

게이트웨이 = 대문(집에서 사람이 나가기 위해서 어떤 문으로 나가나?) = 세상에 나가기 위한 첫 통로다.

 

이것을 Default Gateway(세상을 나가기위한 고정 경로)를 Router로 지정한다. 즉 Default Gateway = Router 이다. 

gateway는 router이다.

 

라우터와 Gateway는 같다고 생각하면 된다. 세상에 나가기위해서 Default gateway를 Router로 지정한다.

 

 

 

3계층에는 IP가 있다.

IP Header에는 출발지 주소와 도착지 주소만 있으면 된다.

 

1, 2계층은 이더넷 = MAC주소 

MAC에도 출발 MAC과 도착MAC이 있어야 한다.

 

쉬운 예제를 들어 설명해보겠다.

EX) 택배를 서울에서 부산으로 보낸다고 생각해보자. 택배를 보내는 주소/받는 주소는 바뀌지 않는다.(택배를 보내는 주소와 받는 주소를 3계층 IP로 생각해보면 보내는 주소는 = Source IP, 받는 주소 = Destination IP이다.) 그러나 서울에서 부산으로 한 번에 가지 않는다. 중간에 옥천에서 대구로, 대구에서 부산 집합장으로 이동한다. 즉 도착하기 전까지 최종 목적지는 바뀌지 않지만 중간 경유지는 바뀐다. 그럼 중간 경유지까지 가는 주소가 무엇인가? 네트워크에서는 중간 경유지로 가는 주소가 MAC주소다. (MAC주소는 최종 목적지에 도착하기 전까지  계속 바뀐다). 즉 서울에서 부산까지 최단 거리로 도착해야할 택배 경로(Routing table)를 찾는데, 이것이 네트워크에서는 Router가 해주는 역활이며 정확하게는 Routing table에 입력된 포트 번호(값)들로 정해진 최단경로로 이동한다.

택배를 대입하여 다시 네트워크 입장에서 생각해보자.

MAC 출발 주소 MAC 도착 주소 IP 출발 주소 IP 도착 주소 WWW.google.com

택배가 중간지점으로 이동하면 어떤 주소로 이동하나? 네트워크에 대입하면 물리적 주소로 이동하는 것이다. 왜? 우리의 최종 목적지(목적지IP)는 부산이니까. 만약 중간지점 목적지 물리적 주소(네트워크: 목적지 MAC주소)가 맞으면 택배를 뜯어본다.(최종 목적지 IP를 확인하기 위해서, 2계층 헤더를 없애고 3계층 목저기 IP를 확인하다.)

최종 목적지가 부산이 맞는지 확인하기 위해서! 만약 뜯어봣는데 최종목적지가 부산이 아니다? 그러면 마저 택배를 뜯을 것인가? 아니다 내 택배가 아니므로 다시 포장한다.(내 MAC주소와 Routing table에 기재된 MAC주소로(google까지 최단거리 mac주소가 있을테니까)

즉, 브로드캐스터를 하고  ARP 프로토콜로 MAC 주소를 찾는다(원래 가고자 한 MAC주소를 찾는다.)

결국 택배가 원래 목적지에 택배가 도착하면 포장을 완전히 뜯는다.

(택배가 Google의 웹서버라고 생각하면 다시 똑같은 방식으로 요청했던 클라이언트에게 응답을 해준다.)

그러면 클라이언트인 내가 구글 페이지를 확인 할 수 있는 것이다.        

 

즉 출발 IP와 도착IP는 바뀌지 않지만 중간 중간 도착 MAC주소는 바뀐다.

 


계층별 사용 용어

각 계층에서 사용하는 용어는 해당 계층에서만 사용해야 한다. 타 계층에서 사용하면 안 된다.

 

 

L1, L2 계층 : MAC, 물리계층, 데이터링크 계층, LAN, 이더넷, 브로드캐스팅, CSMA/CD, Frame

 

ICMP : 오류메세지를 전송하는 프로토콜

 

ARP/RARP : IP주소가지고 MAC주소를 알게 해주는 프로토콜 RARP는 반대인 것.

 

브릿지 : 라우터가 비쌀 때 라우터를 대신하여 가상 LAN을 구분하기 위해서 사용. 지금은 쓰지 않는다.

 

이더넷 해석을 하고 조작하고 통신규약 전달하는게 누구냐? 랜카드이다.

 

HUB가 무엇이냐? 무언가를 공유하기 위한 것. LAN선을 꽂고 하나의 허브에 여러대의 컴퓨터가 붙는다. 즉 1개의 Gateway로 여려명이 나간다. 도체이므로 내가 LAN통신을 하면 같이 공유하고 있는 HUB의 모든 사람들이 통신 내용을 알 수 있다. 이것이 Dummy HUB다.  HUB는 도청이 쉽다. 그래서 LAN이 보안에 취약이 허약하다라고 말한다.

 

스위치 허브는 중간에 스위치로 독점적으로 쓰게 한다.(허브안에서) 보안에 덜 취약하다.

 

USB 허브처럼 똑같은 허브라고 생각하면 된다.

 


이더넷 통신규약 : CSMA/CD

1. MA(Multiple Access) : 다수 호스트가 하나의 공유 매체에 연결 -> HUB

       

2. CS(Carrier Sense): : 호스트는 공유 매체(=전송매체)의 사용 가능 여부를 신호 감지로 확인(남이 쓰나 안 쓰나 귀를 대고 신호를 확인함)

전송매체(Media) : 정보가 흘러가는 공간 (유선이면 유선, 광케이블이면 광케이블 이런 것들이 전송매체)

 

신호를 보내고 싶은데 귀를 대고 있다가 남들이 신호를 쓰고 있다가 아무도 신호를 아무도 안 보내서 내 딱 보내려고 했다. 이때 둘이 동시에 신호를 보내면 충돌이 일어난다. 이것이 CD

 

3. CD(Collision Detection) : 공유 매체에서 데이터 충돌 여부 확인 

어떻게 해결하나? 사람과 대화하다가 둘이 동시에 대답하면 어떻게 하나? 다시 말을 한다. 

네트워크도 똑같다. 신호를 다시 보낸다.

 

즉 CSMA/CD 

- 충돌 감지 기능이 필수적으로 요구

- 충돌 감지 후 재전송 기능 오류복구 (다시 말하기)

- 대신 임의의 시간 동안 대기 후 다시 채널 감지를 시작

- 공유 매체의 길이가 길수록 전송 지연이 증가하여 충돌 가능성이 높아짐(당연하다 말을 길게하면 상대방과 말이 겹칠 확률이 증가한다.)

 

각 계층은 애칭이 있다.


L1, L2 계층의 데이터와 헤더를 합친 것이 프레임

Destination Address, Source Address :

목적지와 출발 주소는 여기서 MAC주소다. (각 계층 용어는 각 계층에서 사용된다.)

 

Length(Type): 2계층에서 3계층으로 갈때 어떤 식별자(어떤 프로토콜로 갈지 알 수가 없다)

실제로 3계층에는 1000개 이상이 프로토콜이 있다.

0x0800이 대부분 붙음(IP) 

⊙ 출발 주소지+ 목적지 주소지 + Type(Length) = Header이며 14Byte이다.

 

Preamble은 사전에 정보가 온다고 신호로 알려주는 것. 사전에 데이터가 없으면 놀랠 수 있으므로

(받는 사람을 위해서 존재하는 것.)

 

Start Delimiter(SFD) : 한 박자 쉬고 신호가 간다고 알려주는 것.

 

Checksum: 무결성 체크를 위해서 있는 것.


 

Wire Shark 2계층 Header 분석

목적지 MAC 주소 6Byte
출발 MAC 주소 6Byte
Type은 2Byte 0x800은 IPv4이다

즉 Wire Shark로 봐도 Frame의 Header는 6 + 6 + 2 = 14Byte이다.

(2개의 문자가 1Byte)


 

L3 계층에서 사용하는 용어 : Network Layer, IP, 패킷, 비연결형 서비스, Best Efforts(최선형), Router(라우터)

 

서비스의 종류연결형 : 데이터 전송 전에 데이터의 전송 경로를 미리 결정비연결형 : 데이터의 전송 경로를 사전에 결정하지 않고 패킷 단위로 결정.

 

IP는 비연결형 서비스이다. 즉 빠르게만 전송하는게 목적이다. 예를 들어보자. 쿠팡맨의 배송에서 가장 주안점이 무엇인가? 빠른 배송. 똑같다. L3 계층의 목적도 무조건 빠르게 보내는 것이다.

 

패킷

 

패킷의 전달 순서 - 패킷이 서로 다른 경로로 전송되므로 도착 순서가 일정하지 않음- 상위 계층에서 순서를 재조정한다.

 

패킷 분실 가능성

- 패킷이 100% 도착을 보장하지 않는다.

- 상위 계층에서 패킷 분실 오류를 복구한다.

 

IP프로토콜

- 비연결형 서비스를 제공

- 패킷을 분할/병합하는 기능을 수행

- 헤더 체크섬만 제공

- Best Effort 방식의 전송 기능

 

프레임의 최소 사이즈는 TCP 20Byte + UDP 20Byte + 프레임헤더 14Byte  = 54Byte 

 

IP 헤더 크기는 20Byte

 

0~31Bit = 4Byte

4Byte 총 5개 Destination Address까지해서 총 20Byte가 헤더이다.

1층의 0.5Byte(Version Number) : IPv 프로토콜을 담고있다. 4버전을 쓰면 IPv4로 들어간다.

그래서 대부분 패킷이 4로 시작한다. (Wire Shark로 확인해 볼 수 있다.)

 

Heder Length : Header 크기가 20Byte인데 Header Length안에서는 단위가 다르다. 4Byte가 1로 들오간다. 

따라서 Header 크기가 20이므로 5가 들어간다.  

그래서 WireShark로 보면 대부분 패킷이 45로 시작한다. (IPv4에서 헤더 랭스가 5이므로)

45가 아니면 잡아낸다. 

 

Packet Length는 1500이 넘으면 잡아낸다. Frame Data에서 1500Byte밖에 못 보내므로.

 

Identification(ID값) : 같은 영화를 분류하면 ID값이 같다. EX) A영화를 분할하면 A ID값, B영화를 분할하면 B 영화 ID값으로 나뉜다. 

 

MF(More Frament) : 마지막 패킷인지 아닌지 확인하는 것 마지막 패킷이면 0이 들어간다. 처음과 중간 패킷이면 1이 들어간다.

 

DF(Don't Fragment) : 이 패킷이 완벽하면 더 이상 나누지 말라는 뜻. 패킷 분할 금지 

 

Fragment Offset : 분할되기 전 데이터에서의 상대적인 위치. 8바이트 배수로 지정

즉 받는 쪽을 위해서 존재하는 것. 분할전에 0~100bit로 짤랐으면 Header 뒤에 앞부분이 0 끝부분이 100으로 붙는다는 뜻.

 

Time to Live(TTL) : 라우터를 거칠 때 마다 -1이 된다. TTL값이 0이 되면 라우터에서 Drop이 된다. 즉 쓰레기 값이 된다.(버린다고 생각하면 된다.)

 

Nmap으로 상대방의 OS를 알 수 있는 이유가 TTL때문이다.

OS마다 TTL 초기값이 정해져있다. 따라서 tracert로 알아 낼 수 있는이유.(TTL 값을 빼고 값을 비교해보면 된다.)

 

 

 

3계층의 데이터와 헤더를 합친 것이 패킷(패킷의 최대 바이트는 1500byte,MTU)

(이 최대 사이즈는 패킷이 정하는게 아니라 Frame에서 Data를 담는 곳이 최대 1500byte라 그렇다.)

 

4계층의 데이터와 헤더를 합친 것이 TCP에서는 세그먼트 / UDP에서는 데이터그램

 

 

728x90
반응형

최근댓글

최근글

Royal! © 2024