본문 바로가기

Kitri_NCS3기 보안과정/Network

170404 네트워크 기초( 계층구조 , OSI 참조모델, TCP/IP )

1. 계층구조

모듈화 : 크고 복잡한 시스템을 기능별로 여러 개의 작고 단순한 모듈로 독립화(모듈사이에 적절한 인터페이스 필요)

계층구조
: 상위모듈이 하위모듈에게 서비스 요청
 하위 모듈은 서비스를 실행하고 그 결과를 상위에 보고

계층적 모듈 구조의 장점 
 - 전체 시스템의 이해가 쉽고 설계 및 구현이 용이
 - 모듈간의 표준 인터페이스가 단순하면 모듈의 독립성 향상 → 시스템 구조의 단순화
 - 대칭구조에서는 프로토콜을 단순화 시킬 수 있음
 - 외부 인터페이스가 변하지않으면 내부기능의 변화가 전체 시스템의 동작에 영향을 미치지 않음

프로토콜 설계시 고려사항 
: 주소표현, 오류제어, 흐름제어, 데이터 전달방식

 1. 주소표현 
주소의 역할 : 서로를 구분
주소는 활용도를 높이기 위하여 구조적 정보를 포함 
 - 전화번호 : 국가코드 - 지역 코드 - 번호
 - 주민번호 : yymmdd-abcdefg
1: n 통신을 지원
 - 브로드캐스팅 : 모든 호스트에게 데이터 전달
 - 멀티캐스팅 : 특정 호스트에게 데이터 전달


 2. 오류제어

데이터변형 오류 : 데이터 깨져서 수신

데이터분실 오류 : 데이터가 안옴 

오류제어는 데이터링크 계층에서 동작. 재전송 방식 사용


3. 흐름제어

수신자의 처리능력에 비해 송신자의 속도가 너무 빠르다.

수신자의 버퍼가 부족하면 데이터 분실이 발생


4. 데이터 전달방식 

단방향 : 한쪽방향

양방향

ㄴ전이중 : 양쪽동시

   반이중 : 양방향이 가능하지만 한번에 한쪽씩



서비스 프리미티브

 프리미티브의 종류와 기능

- 연결형 서비스 : 데이터 전송 전에 미리 연결을 설정하는 방식

(CONNECT 연결설정 / DATA 데이터 전송 / DISCONNECT 연결 해제)

- 비연결형 서비스 : DATA

Request

클라이언트가 서버에 서비스 요구 

Indication

서버에 서비스요구가 도착했음을 통지 

Response 

서버가 클라이언트에 서비스 응답 

Confirm 

 클라이언트에 응답이 도착했음을 통지 



2. OSI 참조모델

: 통신을 하려면 서로 조건이 맞아야 가능하다. 그리고 복잡한 작업을 규정분할화된 규칙이 있으면 어떤 행동을 하기에 기준이되어 움직일 수 있을 것이다. OSI 참조모델은 이러한 통신기술의 도입과 통신기능의 확장을 쉽게 하려고 프로토콜을 7계층으로 분류하여 규정한 규격을 OSI 모델이라 한다.

OSI 참조모델은 각각 계층마다 특정 기능을 수행한다 . 

[ 물리계층 (1) - 데이터링크계층 - 네트워크 계층 - 전송계층 - 세션계층- 표현계층 - 응용계층(7) ] 의 단계로 이루어져 있다.

 - 각 계층은 헤더와 데이터단위로 정의됨 
 - 헤더는 각 계층의 기능과 관련된 정보가 포함. 하위 계층으로 갈수록 헤더가 더해짐
 - 상-하위 간의 주고받는것 = SDU(서비스 데이터단위) / 같은 계층간에 주고받는것 = PDU(프로토콜 데이터 단위)

 용어 정의


 계층 n 프로토콜 : n 계층 모듈끼리 사용하는 통신규칙

 동료 프로세스 : 동일 계층에 위치한 통신 양단 프로세스

 인터페이스 : 상하위 계층 사이의 접속방법

 서비스 : 상위계층이 하위 계층을 사용하는 방법

 


응용계층부터 하위 계층으로 갈때마다 각 계층의 정보를 담고 있는 헤더를 붙이면서 전달한다.

수신측은 전달받은 데이터의 헤더를 벗기면서 상위 계층까지 올라간다.


송신 호스트 : 데이터가 상위계층에서 하위계층으로 갈 수록 헤더 추가(2계층에서 만 트레일러가 추가됨)

수신 호스트 : 데이터가 하위계층에서 상위계층으로 갈 수록 헤더 제거


* 트레일러 ?

프레임에 오류없이 도착했는지 결정하기 위해 사용 

 - 프레임체크 문자열 (FCS)



계층별 기능 



 

 물리 ~ 전송 계층 까지는 데이터의 전송을 담당하며

 세션 ~ 응용 계층 까지는 데이터의 생성을 담당한다.




물리 계층

 데이터 전송속도 , 클럭동기화 방법, 물리적 연결형태 등 

데이터링크 계층 

 물리 계층의 물리적 전송 오류 해결

 전송 데이터 단위: 프레임

네트워크 계층 

 데이터의 전송경로 설정  

 호스트 구분을 위한 주소 개념 필요 ( 예 : IP )

 혼잡제어 : 데이터 전송경로의 선택에 따라 네트워크 혼잡에 영향을 미침

 전송 데이터 단위 : 패킷

전송 계층 

  송수신 프로세스 사이의 단대단 통신기능 지원

 프로세스 구분을 위한 주소개념 필요( 예 : 포트번호 )

 전송 데이터 단위 : 세그먼트

세션 계층 

 송 수신자 사이에 상위적 연결 개념인 세션을 지원

표현 계층 

 데이터의 의미와 표현방법 처리

 암호화/압축기능 

응용 계층 

 대표적인 서비스 : FTP , Telnet, 전자메일 등  


아래의 그림은 수행하려는 작업에따라서 OSI 계층에서 어떤식으로 동작하는지 보여준다




1. 물리계층 (Physical Layer)

- 두 시스템 간에 데이터를 전송하는데 전기적 신호를 데이터료 변환해 주는역활을 한다.

- 물리 계층은 허브, 라우터, 네트워크 카드, 케이블 등 전송매체를 통해 비트를 전송한다.

- LAN카드, 케이블, 허브, 라우터 등 물리적인 것과 데이터 전송에 사용되는 계층


 비트데이터를 전자기적 신호로 변환시켜 전송하고 전송된 데이터를 0과 1의 비트데이터로 복원해서 데이터링크 계층으로 넘겨준다 .



2. 데이터 링크 계층 (Data Link Layer)

- 물리적 주소를 이용하여 노드간 연결 (L3 이상의 장비는 전부 노드라 칭한다 )

- 비트를 프레임이라는 논리적 단위로 사용 

- 전송되는 다음 노드의 주소가 더해짐 

- 트레일러 정보( 오류검사) 를 붙여 물리계층에 전달 


3. 네트워크 계층 (Network Layer)

- 상위계층에 연결하는데 필요한 데이터전송과 경로선택 기능 제공 . 라우팅 프로토콜을 사용하여 최적화된 경로 선택

  (논리적 주소로 최초 출발지에서 최종 목적지까지의 최적 경로 결정)

- 수신측의 주소와 수신된 데이터의 주소를 확인하여 일치하면 전송계층으로

- 데이터를 패킷단위로 분할하여 전송한후 재 결합


4. 전송 계층(Transport Layer)

- 프로토콜과 관련된 계층으로 오류복구와 흐름제어 등을 담당, 두 시스템 간에 신뢰성 있는 데이터를 전송

- 또한 네트워크 계층에서 온 데이터를 세션 계층의 어느 애플리케이션에 보낼지 판단

- 시스템 중단간에 투명한 데이터를 양방향으로 전송하는 계층 

- 전송한 데이터와 실제 운영체제의 프로그램이 연결되는 통신 경로


5. 세션 계층( Session Layer ) 


- 응용프로그램 사이의 접속을 설정, 유지 , 종료 시켜주는 역할

- 사용자와 전송계층 간의 인터페이스 역할

네트워크에 있는 시스템간에 지속적으로 통신하려고 세션유지 및 오류감지와 복구를 수행 동기화 역할

- 데이터 단위 : 메세지

- 전승 계층으로 전송할 순서를 정하고 데이터를 점검 및 복구하는 동기위를 제공 

ex) 카톡 프로필이 바뀌는걸 실시간으로 확인 할 수 있게 해주는 것이 세션의 역할


6. 표현 계층(Presentation Layer)

- 데이터 표현의 차이를 해결 ( 서로 다른형식으로 변환 or 공통 형식 제공 ) - 인코딩

- 송신측에서 수신측에 맞는 형태로 먼저 변환을 해서 보내고 수신측에서는 응용 계층에 맞는 형태로 변환

(송신측 표현계층 → 수신측 표현계층에 맞춤 → 응용계층)

- 데이터압축 및 암호화 기능 제공

- 송신측과 수신측 사이의 표준화된 데이터 형식 규정 


7. 응용 계층 (Application Layer)

- 파일 전송, 데이터베이스, 원격접속, 이메일 전송 등 응용 서비스를 네트워크에 접속시키는 역할을 하며, 여러가지 서비스를 제공한다.

- 사용자와 소통하는 구간, 직접 정보를 입력받아 하위 계층과 사용자 사이에 연결 전달

- 실제로 통신의 최종 목적에 해당하는 계층


계층별 대표 프로토콜 

응용 계층 

 HTTP, SMTP, SNMP, FTP, Telnet, SSH & Scp , NFS, RTSP

표현 계층 

JPEG,  MPEG, XDR, ASN.1, SMB, AFP

세션 계층 

TLS, SSH, ISO 8327/ CCITT X.255, RPC, NetBIOS, AppleTalk 

전송 계층 

TCP , UDP, RTP, SCTP, SPX, AppleTalk 

네트워크 계층 

IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, BGP, OSPF, RIP,IPX, DDP 

데이터 링크 계층 

LAN(Ethernet, Token Ring), WAN(PPP,HDLC), Frame relay, ISDN, ATM,  무선랜, FDDI 

물리 계층 

전선, 전파, 광섬유 ,동축케이블 , 도파관 , PSTN, Repeater, DSU, CSU, Modem 



3. TCP / IP 

 현재 대부분의 통신 프로토콜은 TCP/IP 로 사용되고 있다 OSI Model은 Reference로서의 가치만 있다.
왜 OSI 7계층 모델이 있음에도 불구하고 TCP/IP 모델을 사용하는가 ? 그것은 개방성에 있다. 즉 하드웨어, 운영체제, 접속매체 어떤것에도 구애받지 않고 동작할 수 있다는 이점이 있기 때문이다. 인터넷을 사용하는 현시대에는 셀수없이 많은 네트워크로 연결된 사용자들이 있다. 그렇기 때문에 종류에 상관없이 호환이 되는 TCP/IP가 사용되고 있는것이다.


TCP/IP Protocol Architecture


OSI 모델과 다르게 어플리케이션 계층, 전송계층, 인터넷 계층, 링크 계층 4개의 층으로 이루어져 있다.


TCP  : 메세지나 파일을 좀더 작은 단위인 패킷으로 나누어 전송 수신시에는 전송된 패킷을 재 조립하는 역할 

- 통신간에 패킷의 전달과정 중에 데이터의 손상이 일어나거나 데이터의 순서가 뒤바뀔 수 도 있는 문제가 있는데. 이러한 경우를 TCP에서 올바르게 통신 할 수 있도록 도와주는 역할을 한다 .  IP는 이러한 기능은없이 TCP 패킷을 전송하는 일만을 한다.


기능 

- 패킷이 빠졋을 경우, 재전송을 요청하는 기능

- 패킷에 일련번호를 줌으로써, 서로 다르게 도착될지도 모르는 패킷의 순서를 재조합하는 기능 



IP : 각 패킷의 주소부분을 작업한다. 패킷들을 목적지에 정확하게 도달 할 수 있게 해줌.



< 각 계층 별 기능 >




1. 응용 계층 

네트워크를 사용하는 응용프로그램(텔넷, DNS, FTP 등)으로 이루어지며 OSI 모델의 응용, 표현, 세션계층을 모두 포함한다.

응용 프로그램들로 제공되는 서비스는 표현계층과 세션계층에서 정의하고 있다.


2. 전송계층 


TCP 와 UDP

: 데이터를 전송한다는 점에서 유사하지만 특성이 약간씩 다르다.


TCP ? 

- 연결 지향적 : 데이터를 전송하는 측과 데이터를 수신하는 측에서 전용 데이터선로(session) 를 만든다는 의미이다. (신뢰도 ↑)

- 자체적 오류 처리

- 전송중 순서가 뒤바뀐 메세지 교정


UDP ?

- 비연결지향

- 오류처리기능 없음

- 단순히 데이터를 받거나 던져주기만 하는 프로토콜.

- 실시간 멀티미디어 정보를 처리하는데 사용  


오류 처리를 하면 신뢰성은 있겠지만 메세지를 재요구 하거나 하는 동안 정지 상태가 되는것이다. 이때문에  TCP는 실시간으로 계속해서 데이터를 처리하기에는 적합하지 않다. UDP는 오류처리의 기능은없지만 중간에 패킷이 소실되더라도 개의치 않고 다음 패킷을 받아들이므로 실시간 메세지 처리가 가능하다.


3. 인터넷 계층 

IP (Intenet Protocol) : 데이터 그램이라는 패킷을 만들고 수신지에 해당 패킷을 전송한다.

 - 데이터를 정의하고 데이터의 경로를 배정하는일 (라우팅) 담당.

 - 데이터의 정확도를 위해 IP 프로토콜을 사용.



ARP / RARP 등으로 IP와 MAC주소로 변환 할 수있다.

ICMP : 오류 메세지를 전송하는 프로토콜 (IP에 캡슐화 되어 전송됨)

4. 물리 계층

네트워크나 다른 네트워크의 송신지에서 수신지 까지 데이터를 주고 받는데 , 물리 계층과 데이터 링크 계층에서 하는 일은 LAN과 WAN을 연결하여 인터넷을 구성하는 것.   

 

이더넷을 쓰는 통신방식은 CSMA/CD



<TCP/IP 계층 구조와 주소관계>


라 우 팅 !


주로 하는일은 최적의 경로를 설정하는것.
라우터는 라우팅을 수행하는 장치로 라우팅 테이블을 참조하여 경로를 설정하며 다른 네트워크를 연결한다.

※ 라우팅 테이블 : 라우터가 패킷의 적절한 경로를 찾기 위한 가장 기본적인 도구 
    필수 정보 =  목적지 호스트 : 최종 목적지
          다음 홉 : 패킷을 전달하기 위한 인접 경로

경로설정시 고려사항 
공평 원칙 : 한 패킷의 우선처리를위해 다른패킷이 손해를 보면안됨
효율 원칙 : 전체 네트워크의 효율성에 대해 고려해야 함

정/동적 라우팅 
정적 : 전송이 이루어지기 전에 경로 파악 ↔ 경로의 갱신이 어렵다 ? (= 네트워크의 변화등에 대처능력이 떨어진다)
동적 : 네트워크의 상황에따라 적절히 조절 ↔ 경로설정시 하는일이 많다 ? ( = 성능이 떨어진다 )

라우팅에 사용되는 패킷이 있는데 Hello와 Echo 패킷이 있다. 
hello 패킷은 주변 라우터에 뿌려서 경로 정보를 파악하는데 사용하고 (정찰)
echo 패킷은 라우터 사이의 전송 지연시간을 측정해준다.

<라우팅의 정보처리방법>
 
- 소스라우팅 
송신 호스트가 패킷의 전달 경로를 결정
전송 경로는 패킷내부에 기록됨
- 분산 라우팅 
라우팅 정보를 분산 관리
호스트의 갯수가 많아질 수록 효과적
- 중앙 라우팅
특정 호스트(RCC)가 모든 라우팅 정보 관리(하나의 호스트가 모두 관리) 
송신호스트는 RCC에게서 경로정보를 받아 전송
호스트의 갯수가 많아질수록 비효율적
- 계층 라우팅
분산라우팅 + 중앙라우팅
네트워크의 규모가 커질수록 효과적임


혼잡제어 


1. 혼잡의 원인 

- 타임아웃기능 

: 패킷의 재전송으로 혼잡도 증가 

요소1. 타임아웃시간이 작을때

요소2. 패킷분실시 

요소3. 의도적인 피기배킹 사용

요소4. 패킷생존시간이 작으면 패킷이 강제로 제거되어 타임아웃


- 라우팅 알고리즘

: 혼잡이 발생하지 않는 경로를 배정하도록 설계

 혼잡이 발생하는 경로를 선택하면 혼잡이 주변으로 확대



2. 제어방법! 

트래픽 성형 

혼잡의 발생은 트래픽이 특정시간에 집중되는 버스트 현상이 원인이다.

패킷 발생정도를 네트워크에서 예측가능한 정도로 조절.

ex ) 리키 버킷 알고리즘 


혼잡 제거

혼잡을 가중시키지 않기 위해서는 특정지역의 혼잡이 다른것으로 확대 되는것을 막는방법이 중요하다.

자원 예약 방식은 이러한 문제를 해결해줄 수 있다.

자원 예약 방식은 호스트와 서브넷이 미리 네트워크 자원의 사용정도를 협상해서 할당하는 방식이다.

ex) 초크패킷