SMALL
OSI 7 Layer란 무엇인가?
통신에 관한 국제적인 표준기구인 International Organization for Standardiztion(ISO)라는 곳에서 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 의미한다.
이런식으로 구성이 되어있다. 후니형님은 외울때 '에-프-스-트-엔-들-피' 라고 외우셨다고 한다.
나는 이런식으로 '에-프-스-트-네-데-피' 로 외웠다.
이렇게 나눈 이유는 무엇인가?
간단하게 결론만 말하자면 3가지 장점이 있다.
1.데이터의 흐름이 한눈에 보인다.
2.문제 해결가기 편리하다.
3.계층을 7개로 나누고 각 층별로 표준화 하니 여러 회사 장비를 써도 네트워크가 이상없이 돌아간다.
7 Layer 에 대해 각 계층별로 어떠한 것을 하는지 알아 보고자한다.
먼저 맨 아래 1계층인 Physical Layer(피지컬 계층)이다.
여기서는 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송하게 된다. 사용되는 통신 단위는 비트로써 1과 0으로 나타내어지는, 즉 전기적으로 on, off 상태라고 생각하면 편하다. 이 계층에서는 다른 기능을 하진 않고 단지 데이터를 전달만 할뿐이다.
이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브 등이있다.
2계층 Data Link Layer(데이터 링크 계층)
1계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다.
통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있을 뿐만 아니라 MAC Address를 가지고 통신할 수 있게 해준다.
이 계층에서 전송되는 단위는 Frame 이며 대표적인 장비는 브리지, 스위치 등이 있다.
3계층 Network Layer(네트워크 계층)
네트워크 계층에서 가장 중요한 기능은 데이터를 목적지까지 가장 안전하고 빠르게 전달 하는 것이다. 보통 이것을 라우팅이라고 한다.
따라서 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 이 계층의 역할이다. 이 계층에 속하는 대표적인 장비는 라우터 이다.
라우팅 기능을 수행하는 스위치도 있어 그런 스위치들도 보통 Layer 3 스위치라고 한다.
4계층 Transport Layer(전송 계층)
통신을 활성화 하기 위한 계층이다. 보통 TCP프로토콜을 이용하며, 포트를 열어 응용프로그램들이 전송을 할 수 있게 해준다.
정보를 분할하고, 상대편에 도달하기 전에 다시 합치는 과정을 담당하며 사용하는 단위로는 Segment이다.
전송 계층은 양 끝단의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해주며 시퀀스 넘버 기반의 오류 제어 방식을 사용한다.
전송방식도 결정하며 (Port number, TCP, UDP등) 4계층 프로토콜에는 TCP,UDP가 있다.
5계층 Session Layer(세션 계층)
네트워크 상에서 통신을 할 경우 양쪽 host간 최초 연결이 되게 하고 통신 중 연결이 지속되도록 시켜주는 역할을 하는 계층이다. 통신을 하는 두 host사이에 session을 열고 닫고 관리하는 기능을 담당하고 데이터 동기화와 네트워크 오류 이벤트 검사, 오류가 발생한 지점 이후의 데이터만 재전송을 보장한다.
6계층 Presentation Layer(표현 계층)
전송하는 데이터의 Format(구성방식)을 결정하는 계층이다. 다양한 데이터 Format을 일관되게 상호 변환, 압축 및 암호화, 복호화 기능을 수행한다.
7계층 Application Layer(응용 계층)
사용자 인터페이스의 역할을 담당하는 계층이다. (IE,Chrome 등)
사용자와 가장 가까운 프로토콜을 정의한다. (HTTP, FTP,Telnet 등)
(출처 : 후니의 시스코 네트워킹)
위 그림을 보고 7계층을 이용한 이메일 전송에 대해 보고 지금까지 배운 7계층이 어떻게 동작이 되는지 한눈에 볼 수 있다.
Protocol 이란?
두 사람이 마주 보고 서로 대화를 하려고 한다. 그런데 한쪽은 한국어 한쪽은 불어로 이야기 하면 이야기가 통할까? 통하지 않는다. 물론 바디랭귀지는 예외하고! 이렇듯 각 다른 언어보다 같은 언어로 대화를 하는게 이야기가 통하듯 컴퓨터에서도 언어가 같아야 대화, 즉 통신이 가능하다.
그게 바로 프로토콜(Protocol)이다. 우리말로 하자면 규약, 협약 비슷한 뜻인데, 컴퓨터 끼리는 이런 프로토콜이 서로 같은 것 끼리만 통신이 가능하다.
그러면 같은 인터넷을 사용하고 있는 모든 PC들은 같은 언어를 사용하고 있을까? 정답은 "그렇다!" 이다. 인터넷을 사용하기 위해서는 TCP/IP 라는 프로토콜을 사용해야 한다. 정리하면 인터넷을 사용하는 모든 PC가 TCP/IP 프로토콜을 사용하기 때문에 인터넷에 접속할 수 있는 것이다.
가장 잘 알려진 프로토콜은 TCP / IP, IPX / SPX, X.25, AX.25 및 AppleTalk 이다.
TCP/IP
TCP/IP는 ARPANET에 의해 처음 개발 되었고 Transmission Control Protocol/Internet Protocol의 약자이다.
TCP/IP는 앞에서 언급했다시피 인터넷을 사용하기 위해 꼭 필요한 프로토콜 이다, 즉 인터넷에서의 공용어는 TCP/IP 인 셈인 것.
그러므로 1970년 초반부터 많은 프로토콜이 개발되었는데 그 중 인터넷의 발달으로 성공한 케이스라고 할 수 있다. 그 이유는 많이 사용되고 있기에! 그럼 간단하게 TCP, IP가 무엇일지 알아보고자 한다.
IP 프로토콜이란 TCP/IP기반 인터넷망을 통하여 데이터그램의 전달을 담당하는 프로토콜이다. 주요 기능으로는 IP 계층에서 IP 패킹의 라우팅 대상이 되고 IP 주소 지정을 해준다.
TCP 프로토콜은 OSI 계층모델의 관점에서 4계층 Transport Layer(전송 계층)에 해당하며 주요 기능으로는 양종단 호스트 내 프로세스 상호 간에 신뢰적인 연결 지향성 서비스를 제공한다.
OSI 7 Layer과 TCP/IP 비교
TCP/IP 프로토콜은 OSI 7 Layer Model 보다 먼저 개발되었다.
두 모델을 비교할 때, Session과 Presentation 2계층이 TCP/IP 프로토콜 그룹에 없다는 것을 알 수 있고 두 모델 모두 계층형 이라는 공통점을 가지고 있으며 TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수한 반면, OSI 7 Layer 는 표준이 되기는 하지만 실제적으로 구현되는 예가 거의 없어 신뢰성이 저하되어있다.
OSI 7 Layer 는 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다.
Routing table
먼저 라우팅 이란 무엇일까?
한 네트워크에서 다른 네트워크로 패킷을 이동시키는 과정과 네트워크 안의 호스트에게 패킷들을 전달하는 과정이다.
그럼 라우터란?
네트워크와 네트워크 간의 경로(Route)를 설정하고 가장 빠른 길로 트래픽을 이끌어주는 네트워크 장비이다.
인터넷 기반의 네트워크 환경에서는 어떤 형식으로든 네트워크가 외부의 다른 네트워크와 연결되어야 하고, 이를 위해서 서로 다른 네트워크 간을 연결하는 장비인 라우터의 비중이 높아 졌다.
라우터의 기능으로는
- 경로 설정 : 데이터 패킷이 출발지부터 목적지까지 갈 수 있는 경로를 검사하고 어떤 경로로 가는 것이 최선인지 결정
- 스위칭 : 경로 설정이 결정될 경우 데이터 패킷 스위칭 작업을 함
이 있다.
라우팅 테이블?
패킷이 목적지주소를 목적지 까지의 거리와 가는 방법 등을 명시하고 있는 테이블이다. 시간에 따라 주기적으로 업데이트를 하며 라우터기기의 손상이나 새로운 경로 생성이나 제거에 따라 변화한다. 라우팅 프로토콜의 가장 중요한 목적이 바로 이러한 라우팅 테이블의 구성이다.
라우팅 방식에는 정적, 동적 라우팅이 있다.
정적 라우팅은 관리자가 직접 라우터에 대해 접속하려는 상대 라우터를 지정하는 방식으로써 라우터 자체의 부하가 적고 회선 대역폭의 효율이 좋다는 장점이 있고 모뎀이나 브로드 밴드 네트워크와 같이 필요할 때만 연결하는 환경에서 주로 이용된다.
동적 라우팅은 라우터가 자체적으로 라우터 끼리의 접속 정보를 주고 받아 라우팅 테이블이 자동 갱신되는 방법으로써 장애가 발생된 라우터가 라우팅 정보에서 자동으로 제거됨으로 네트워크 장애의 영향을 피할 수 있고 일부 라우터가 사라지거나 추가되도 항상 최적의 경로로 데이터를 전송할 수 있다.
라우팅 프로토콜
라우터가 라우티드 프로토콜들에게 목적지까지 가장 좋은 길을 갈 수 있게 해주기 위해 사용하는 것이다.
※ 라우티드 프로토콜이란 무엇이냐? 라우터가 라우팅 해주는 대상을 의미한다.(TCP/IP, IPX,Apple Talk등)
라우팅 알고리즘이라고도 하며 자신의 라우팅 테이블에 자기가 찾아갈 경로에 대한 정보를 기억해 두고 주로 목적지, 목적지까지의 거리, 어떻게 가야하는가에 대한 내용이 있다. 라우팅 프로토콜에 따라 목적지까지의 최적 경로를 찾는 조건들이 틀려진다.
라우팅 프로토콜의 종류에는
RIP(Routinf Infomation Protocol), OSPF(Open Shortest Path First - 최단 경로 우선 프로토콜), IGRP(Interior Gateway Routing Protocol) 등이 있다.
추가적으로 라우팅 테이블은 이렇게 생겼다.
위의 그림을 통해 라우터가 가지고 있는 라우팅 테이블 내용은
PC-A에서 PC-B로 패킷을 보내는데 라우터에서 테이블을 보고 0.1 인터페이스로 설정된 녀석이 오면 그에 맞는 MAC주소로 바꿔서 받고 그런 다음 라우터에서 라우팅 테이블을 참고해 보니 PC-B(0.11)로 보낼려면 0.2 인터페이스를 통해 그에 맞는 맥주소로 바꿔서 보내준다.
만일, 테이블에 네트워크 패킷의 대상(해당 아이피 주소)이 없을때는 Default route인터페이스가 있으면 거기로 전송하고 없으면 패킷을 버린다.
PC-A에서 PC-B로 ping을 1회 보낼때 플로우를 본인이 생각하는 대로 작성하기
먼저 Ping에 대해 정확히 짚고 넘어가야 겠다. Ping이란?
Packet Internet Grouper의 약어이며, 컴퓨터 네트워크 상태를 점검, 진단하는 명령이다.
ping 명령의 기본 작동원리로는 네트워크 상태를 확인하려는 대상(target) 컴퓨터를 향해 일정 크기의 패킷(packet, 네트워크 최소 전송단위)을 보낸후(ICMP echo request) 대상 컴퓨터가 이에 대해 응답하는 메세지(ICMP echo reply)를 보내면 이를 수신, 분석해 대상 컴퓨터가 작동하는지, 또는 대상 컴퓨터까지 도달하는 네트워크 상태가 어떤지 파악할 수 있다.
ping 명령은 TCP/IP 프로토콜 중 ICMP(Internet Control Message Protocol)을 통해 동작하므로, 이 프로토콜을 지원하지 않는 기기를 대상으로는 수행할 수 없다. 또한 보안상 이유로 ICMP 사용을 차단하는 기기도 있다.
그렇다면 이제 내가 생각하는 플로우는 다음과 같다.
1) PC-A에서 ping을 보내는데 target을 PC-B로 설정을 한뒤 ICMP echo request 를 보낸다.
[출발지 IP(0.10),MAC(AA:AA:AA) 목적지:IP(0.11),MAC(CC:CC:CC)]
2) 라우터에서 라우팅 테이블을 보고 0.1 인터페이스를 패킷을 수용한다.
3) 그런 다음 라우터에서 해당 인터페이스를 보고 IP(0.11)으로 보내려면 0.2 인터페이스를 통해 전송하라고 지시
[출발지 IP(0.10),MAC(DD:DD:DD) 목적지:IP(0.11),MAC(BB:BB:BB)]
4) PC-B에서 패킷을 받고 출발지 ,목적지 IP를 바꿔서 ICMP echo reply를 보낸다.
[출발지 IP(0.11),MAC(BB:BB:BB) 목적지:IP(0.10),MAC(DD:DD:DD)]
5) 라우터에서 라우팅 테이블 보고 0.2 인터페이스를 찾아 패킷을 수용한다.
6) 그런 다음 라우터에서 해당 인터페이스를 보고 IP(0.10)으로 보내려면 0.1인터페이스를 통해 전송하라고 지시
[출발지 IP(0.11),MAC(CC:CC:CC) 목적지:IP(0.10),MAC(AA:AA:AA)]
7) PC-A 에서는 요청했던 응답을 받는다.