상세 컨텐츠

본문 제목

OSI Seven Layer 그리고 TCP/IP

Netwrok & Security

by thankee 2007. 12. 10. 14:19

본문

시작하기 전에

● 내 컴퓨터에서 야후 서버에 접속하는 과정
  -  야후 서버  -  스위치  -  라우터  -  ~인터넷~  -  라우터  -  스위치   -  PC
  -  익스플로러  -  도메인 입력  -  DNS에서 IP를 찾음(UDP프로토콜 사용)  -   IP로 MAC어드레스를
     찾음(ARP프로토콜 사용  -  IP로 야후 서버에 해당하는 라우터까지 라우팅 프로토콜을 이용하여
     찾아가서 알아낸다)  -  패킷이 도달하면 서로간의 통신을 위해 TCP(Transmission Control Protocol)
     프로토콜을 이용한다  -  마지막으로 HTTP등과 같은 프로토콜로 해당 정보를 보내온 HTML파일을
     해석하고 보여준다.
* IP로 해당 야후 서버 라우터까지 찾아가는 과정에서는 OSI참조 모델에서 3단계까지 만을 이용하여
   찾아간다.(그 이상의 단계는 두 컴퓨터가 통신을 위한 단계이다.)

OSI참조 모델(7계층)-OSI Seven Layer

● OSI(Open Systems Interconnection, 개방형 시스템 간 상호 접속) Seven Layer은 ISO 국제 표준 위원회에서
   통신을 하고자 하는 컴퓨터가 지켜야할 약속을 표준으로 제정한 것이다. 프로토콜이라고 칭해도
    무방하다(통신을 위한 약속이므로)

● OSI참조 모델은 단지 참조 모델일 뿐이다. 현실과 완전히 매치되지 않는다고 완전히 이해하지
   못하겠다고 좌절하지 마라. 많은 회사들은 이 참조모델을 따르려 최대한 노력하지만 예외가 있을 수
   도 있다는 것을 알자.

● OSI참조 모델은 통신을 하고자 한다면 있어야 하는 것들을 7개로 쪼개어 놓은 것이다. 각 회사들은
   7개로 쪼개어 놓은 7계층에서 특정 계층에 해당하는 장치나, 프로토콜을 제조하게 됩니다. 통신을 위해
   복잡한 장치들이 복잡한 정보를 처리해야 하고 통신을 하고자하는 컴퓨터 끼리 여러 가지 통일해야
   하는 것 등 신경 써야 할 것이 너무 많습니다. 이렇게 쪼개어 놓고 표준을 제정해 둠으로서 각
   제조회사들은 특정 계층에 해당하는 것을 표준에 맞춰 만들기만 해도 나중에 모든 장치가 모여
   네트워크가 될 수 있는 겁니다. 또 네트워크 상에서 문제가 발생해도 어느 계층에서 문제를
   발생시켰다는 등의 진단과 복구도 간단해 질 수 있습니다.

● 1계층 - 물리계층(Physical Layer) : 랜카드, 케이블, 커넥터, 스위치, 라우터, 전압 등 모든 물리적인 것을
   말한다.(라우터, 스위치의 물리적인 연결 외에 실제 작동은 다른 계층에 해당한다) 예) 실제 물리적인
   장치나 물리적인 것의 규격에 대한 것을 말한다.

● 2계층 - 데이터 링크 계층(Datalink Layer) : MAC어드레스를 보고 데이터를 전송하는 단계에서
   사용되는 MAC(CSMA/CD의 동작방식을 가리킴), LLC(Logical Link Control 데이터 흐름, 오류 제어,
   복원)등과 같은 것들. 물리적인 장비들이 데이터를 전송하는 논리적인 개념 예) 물리적인 장치가
   각 장치로 데이터를 보내는 것을 논리적으로 보는 것

● 3계층 - 네트워크 계층(Network Layer) : 네트워크 장비들이 가진 IP주소와 같은 것에 대한 동작 설명이다.
     *예) 라우터가 IP를 보고 경로를 설정하는 것(라우터의 물리적인 부분이 아닌 작동에 대한 것은 3계층에
       속한다.)
  즉 해당 패킷이 제 주소에 오도록 지속적으로 방향을 잡아주는 것이다.

● 4계층 - 전송 계층(Transport Layer) : 3계층에서부터 해당 프로그램까지의 통로. TCP/UDP프로토콜이나
   동작에 대한 것이 이에 해당한다. 예) TCP 프로토콜로 TCP 포트 80이라는 경로로 통신을 한다.
   상위계층에서 이 계층에 데이터를 얹으면 해당 프로토콜이 데이터를 전송하며 데이터가 에러 없이 잘
   전송되는지 확인한다. (실제 양 컴퓨터에 데이터가 도착하기 전까진 동작할 필요가 없으며, 제 목적지에
   도착하면 TCP/UDP가 작동된다.)

● 5계층 -세션 계층(Session Layer) : 데이터가 통신하기 위한 논리적인 연결을 말한다. 특정 응용프로그램은
   이 세션을 통하여 통신을 하게 된다. 통신을 하기위한 대문이라고 보면 된다. 하지만 4계층에서도 연결을
   맺고 종료할 수 있기 때문에 우리가 어느 계층에서 통신이 끊어졌나 판단하기는 한계가 있다.

● 6계층 - 표현 계층(Presentation Layer) : 전송되는 데이터의 표현 방식에 대한 설명이다. 해당 데이터가
   TEXT인지, 그림인지, GIF인지 JPG인지의 구분이다.

● 7계층 - 응용 계층(Application Layer) - 최종 목적지로서 HTTP, FTP, SMTP, POP3, IMAP 등과 같은
   프로토콜이다. 해당 통신 패킷들은 방금 나열한 프로토콜에 의해 모두 처리되며 우리가 사용하는
   브라우져나, 메일 프로그램은 방금 나열한 프로토콜을 보다 쉽게 사용하게 해주는 응용프로그램일
   뿐이다. 한마디로 모든 통신의 양 끝단은 HTTP와 같은 프로토콜이지 응용프로그램이 아니다.

● 쉽게 무역과 비교해서 설명하도록 하겠다. 이해에 보다 많은 도움이 될 것이다.
  - 1계층은 사용자가 전선이나 통신 장치의 물리적인 것을 장치별로 통일 시켜놓아 데이터가 흐를수
    있도록 물리적으로 설정하는 것이다. 즉 무역에서 물리적인 것들, 배의 구조, 크기, 돛단배이냐
    증기 배이냐, 항구의 크기, 위치 등을 말한다.
  - 2계층은 각 장치가 데이터를 어떻게 전송하느냐에 대한 논리적인 것이다. 예로 CSMA/CD로
    동작한다면 랜카드는 송신에 데이터가 들어오고 있는지 아닌지 감시하고 있다가 비었을 때 다음
    장치에 해당하는 주소를 포함시켜 선로 상에 데이터를 띄우고 충돌이 있는지 감시하고 충돌이 있으면
    재전송하는 것을 말한다. 또한 들어오는 데이터가 나에게 해당하는 것인가 아닌가 계속 감시하는
    것도 여기에 속한다. 2계층에서 데이터를 계속 듣다가 자신에게 해당하면 데이터를 가지고 3계층에
    던져 준다. 
    무역에 빚댄다면 배가 항구에 들어오고 나가는 것을 말한다. 배가 잘 들어오도록 등대를
    설치하는등, 각 배들이 효율적으로 들어오고 나가도록 규칙을 세우는 등 논리적인 것을 말한다.
  - 3계층에서는 IP를 보고 그에 해당하는 다음 경로를 설정해 준다. 자신에 해당하는 IP가 아니면 경로를
   설정하고 다시 2계층에 던져 주고, 2계층은 선로 상에 띄우면 1계층의 물리적인 장치가 전기 신호를
   전달한다. 3계층에서 자신에 해당하는 IP라면 4계층에게 던져준다. 
   무역에서는 이 배가 자신의 항구에 들어오는 것인지 아니면 다른 항구에 가기위해 잠시 쉬었다가
   가는 것가 하는 것이다. 그 배가 다른 곳으로 가는 것이라면 제대로 갈 수 있도록 방향을 제시해주고,
   자신의 항구에 오는 것이면 받아 들이는 등을 말하는 것이다.
  - 4계층은 이제 통신을 활성화하기 위한 계층이다. 보통 TCP프로토콜을 이용하며, 포트를 열어서
    응용프로그램들이 전송을 할 수 있게 한다. 만약 데이터가 왔다면 4계층에서 해당 데이터를 하나로
    합쳐서 5계층에 던져 준다. TCP프로토콜은 Port를 통해 통신을 관리하게 된다. Port는 말그대로
    항구와 같은 개념이다.
    무역에서는 각 국가간에 조약을 말한다고 생각하면된다. 국가간에 무역을 위한 조약이 있으며
    (요즘 말이 많은 국가간에 FTA같은 조약을 말하는 것이다) 그 조약에 근거해서 서로 무역을
    하게 된다. 문제가 생기면 특정 국가에 항구를 막아버리는 경우(해킹이 의심되는 경우 Port 차단)
    도 있다. 국가간에 무역은 어떻게 어떤 절차로 약속을 해서 효율적이고 신뢰성있는 무역을
    보장하는 것과 같다.
  - 5계층은 해당 세션이 활성화 되었는지 아닌지 판단하고 세션을 새로 만들어 주는 등 통신의 대문
    역할을 한다.(포트와 비슷하지만 다른 계층이다). TCP의 Port와 Session을 두 국가, 두 회사간의
    무역에 빚대서 설명하면 다음과 같다. 일단 물리적으로 항구(Port)만 있으면 배가 드나들 수
    있겠지만, 실제로 두 나라간, 두 회사간 교역을 위해서 두 국가간, 두 회사간 조약이나 계약이
    성립되어야 한다. 즉 물건(데이터)을 국가(컴퓨터)간에 전송하기 위해서는 일단 국가간에
    조약(TCP, UDP등의 프로토콜)을 맺어야 하며, 그리고 그 국가와의 교역을 위해 서로 항구(Port)를 
    열어주게 된다. 두 국가가 교역(통신)을 위한 기반을 만들면, 두 나라 내에서 무역에 관심있는
    각 회사들은 서로 계약(Session)을 맺고 무역(전송)을 한다. 회사간 계약없이 물류(데이터)가
    두 국가간에 오고 갈 수 도 있다.
    즉 세션없이 전송을 하는 경우도 있을 수 있다는 말이다. 하지만 보통 Session을 설정하고
    데이터를 전송하게 된다. 그렇게하는 것이 대부분 경우 보다 신뢰성 있고, 통제가 가능한
    또는 특정 상황에 맞는 무역, 신속한 대처를 보장하기 때문이다.
  - 6계층(표현계층)에 데이터가 도착하면 헤더를 보고 해당 데이터가 무엇인지 판단한다.
    또는 전송할 때 해당데이터 형식에 대한 헤더를 덧붙인다. 수입되어 들어온 물건의 종류를
    판단하여 적절한 조치를 할 수 있도록 도와주는 단계이다.
  - 7계층은 해당 프로토콜이 해당 형식에 대한 데이터를 받아서 그에 적절한 처리를 한다. 예로 HTTP는
    HTML을 해석하여 보여준다거나, FTP는 해당 파일을 특정 공간에 저장해준다거나, SMTP나 POP3는
    해당 메일을 가지고 있다가 사용자가 요청하면 보여주는 식이다. OSI참조 모델보다 인터넷에 적당한
    모델은 TCP/IP의 4계층으로서 더욱 더 현실적으로 실제 네트워크와 연관 지을 수 있다.
    무역에서는 물건들이 필요로 하는 곳에서 처리 되어지는 것과 같다. 

TCP/IP

● OSI 참조 모델보다 10년 일찍 개발이 시작된 프로토콜로서 서로 다른 기종 끼리 IP(Internet Protocol)를
이용하여 통신을 하는 네트워크를 말한다.(Apple의 Appletalk나 노벨의 IPX와 같이 3계층에 있는
프로토콜들 중 하나이다.)

● 인터넷은 TCP/IP를 사용하여 묶여진 네트워크다라고 말할 수 있을 정도로 TCP/IP는 인터넷에서
    중요한 개념이다.

● TCP/IP 프로토콜은 TCP, IP프로토콜 외에도 HTTP, FTP, Telnet, ARP, IP, TCP, UDP,ICMP, SMTP
   모두를 포함한다.

● TCP/IP 네트워크를 구성하기 위해 4개의 계층으로 나누어 두었다.
  - 1계층 - 네트워크 접근 계층(Network Access Layer) : OSI참조 모델에서 각 장치의 물리적인 것과
    동작의 논리적인 것을 나누었던 물리계층, 데이터 링크 계층을 하나로 합친 것과 같다. 즉 물리적인
    연결과 데이터가 전달되는 논리적인 것을 말하며 여기서 데이터 전달시 사용하는 주소는
    MAC어드레스 이다. 즉 CSMA/CD는 여기에 포함된다.
  -  2계층 - 인터넷 계층(Internet Layer) : Internet Protocol(IP)로서 서로 다른 모든 통신을 위한 컴퓨터
     장비들이 가지고 있어야할 주소 체계를 정리한 것이다. 따라서 그 IP주소로 경로설정(라우팅-라우팅
     프로토콜 이용)을 이용하여 목적지까지 경로를 무사히 설정하게 해준다. 또한 데이터를 조각내고
     재배열하는 일을 수행
한다.
  - 3계층 - 전송 계층(Transport Layer) : 2계층의 경로설정 중에는 참조될 필요가 없는 프로토콜이며
    실제 양끝의 컴퓨터 간에 통신을 하기위한 프로토콜이다. 데이터가 인터넷 계층을 통하여 잘
    전달되는지, 에러는 없는지 확인한다.
  - 4계층 - 응용 계층(Application Layer) - OSI참조 모델은 5, 6, 7계층에 해당 한다.

● 실제 네트워크에서의 패킷(실제 패킷에 붙어있는 각 계층에서 붙인 헤더 정보이다)

네트워크 전송 계층

출발지
00:06:C4:32:01:2C

목적지
00:06:C4:12:02:12

인터넷 계층

출발지
192.168.0.1

목적지
172.16.10.100

전송 계층

출발지
TCP 1723포트

목적지
TCP 80포트

응용계층

GET/index.html.HTTP/1.1

● OSI참조 모델과 TCP/IP 4계층 함께 보기

응용 계층
응용 계층
표현 계층
세션 계층
전송 계층
전송 계층
네트워크 계층
인터넷 계층
데이터링크 계층
네트워크 접근 계층
물리 계층

● 실제 응용프로그램에서 특정 목적지를 향해 패킷을 날릴 때는 7계층(TCP/IP의 4계층)에서부터
   차례로 자신의 계층에 해당하는 패킷을 붙이고 물리 계층에서 데이터를 전송하며, 데이터를 받은
   모든 장치들은 역으로 계층을 오르며 자신에 해당하는 패킷을 뜯어본다. 자신에 해당하는 것이
   아니거나 오류가 있거나 한다면 위로 보내지 않고 버리거나, 재전송 요청 하는 등의 조치를
   취함으로서 각 장치들은 자신에게 필요한 일만 할 수 있게 되는 것이다. 패킷에 붙는 헤더정보는
   스택 형식으로 덧붙여지는 것이라고 말할 수 있다.

● 이러한 패킷을 잡아 그 패킷에 어떤 정보가 있는지 분석하는 프로그램에는 프리웨어인
   이더리얼(Ethereal)이 있다.
  - 이더리얼 다운 받는 곳 : http://ethereal.secuwiz.com/distribution/win32/

참조 서적 : 최성열 님의 달과 마토의 EZ 네트워크

by thankee from tistory.com

관련글 더보기