728x90
반응형

OSC 7계층.

이것을 굳이 왜 나누고, 구분하는지 궁금했었는데, 이 7계층을 나눈 이유는 표준화를 통해 통신 제품과 소프트웨어가 상호 연동 될 수 있도록 안내하고 통신 도구간 명확한 비교를 제공하기 위함이라는 내용을 본적 있다.
OSI 7계층의 구분으로 L2 스위치, L4 스위치 이런 용어를 사용 하며 제품을 구입할 때나 아키텍처를 그릴 때 오해와 실수를 줄일 수 있는 것을 보면, 그리고 표준화의 중요성을 생각하면 틀린 말은 아닌 것 같다.

physical layer - NIC, 케이블과 같은 매체에서 물리적으로 실제 데이터가 전송되는 단계이다. 이때 단위는 bit를 쓴다.

Datalink layer - 데이터를 주고 받기 위한 교칙을 정하는 계층으로 대표적인 규칙으로 Ethernet이 있고, MAC 주소를 사용한다. 이더넷 헤더에는 출발지와 목적지 MAC주소를 포함하여 캡슐화 시킨 프레임(Datalink 단위)을 보내면, 물리 계층에서 이를 전기신호로 변환하여 전송한다. 허브는 수신하는 포트 외에 나머지 모든 포트로 데이터를 전송하지만, 목적지와 MAC 주소와 다른 컴퓨터에서는 이 데이터를 무시한다. 목적지 MAC 주소인 컴퓨터에서는 역캡슐화를 통해서 데이터를 수신한다. 스위치(스위칭 허브)는 MAC 주소를 학습이 가능해서 보내 본적이 없는 MAC 주소 일 경우에는 모든 포트를 통해 정보를 전달하지만,(flooding, 플러딩), 한번 보냈던 MAC 주소 일 경우 목적지 포트로만 정보를 보낸다.(MAC 주소 필터링)

Network layer - 라우터가 데이터가 수신 호스트에 도착하기까지 최적의 경로를 알려주는 라우팅을 수행한다.  이 계층에서도 캡슐화를 시켜 패킷으로 만드는데, 이때 헤더에는 IP주소가 포함된다.

Transport layer - TCP와 UDP가 속하는 계층으로 네트워크 연결을 설정하고 유지하는 단계이다. TCP는 연결형 통신 프로토콜로 정확한 통신을 위해 여러번 확인하는 절차를 거치고, 비연결 통신에서는 빠른 전송을 위해 확인 절차 없이 일방적으로 데이터를 보낸다. 이때 데이터 단위를 세그먼트(TCP) 혹은 프레그먼트(UDP)라고 한다.
세그먼트(TCP)는 데이터들을 사이즈 별로 구획을 나눈 것이다.
프래그먼트(UDP)는 데이터들을 데이터의 기능을 보존하는 여러 부분 집합 같은 형태로 쪼갠 것이다.
데이터를 쪼개는 이유는 한번에 보낼 수 있는 데이터 양이 한정적인데 반해, 데이터는 크기 때문이다. 그래서 송신 때는 MSS(Maximum Segment Size), PMTUD(Path MTU Discovery) 패킷을 분해해서 세그먼트로 만들고, 수신때는 이것들을 재조합한다.분리하는 것을 segmentation, 재조합하는 것을 Reassembly라고 한다. 
* MTU(Maximum Transfer Unit)
이때, UDP는 MTU를 고려하여 분리되지 않는다. UDP도 분리되어야하고 이 과정을 fragmentation(단편화)이라고 하는데, 이 프래그멘테이션은 L3(network) layer에서 이뤄진다. 보내려고 봤는데, 사이즈가 크면 분리하는 것이다. 
TCP는 미리 MTU에 맞춰 세그멘테이션을 진행했기에 Fragmentation(단편화)는 이뤄지지 않는다. 그리고, 분리된 것이 모두 모여 재조합되지 않으면 데이터로 기능을 하지 못하기 때문에, 일부가 오지 못하면 다시 전부를 받는 형식으로 진행된다. 그래서 데이터는 확실하게 전달되지만 그만큼 느리고 부하가 생기게된다.
반면 UDP는 IP단계에서 단편화가 발생해도 L4(Transport) Layer로 와서 재조합이 필요가 없다. UDP 프로토콜의 Fragment는 분리된 데이터라도 부분의 데이터의 의미를 가지고 있기 때문이다. 그래서 부분 데이터로 사용된다. 여기서 분리된 나머지 데이터들이 전송 실패가 될 때가 있는데, 그것들은 무시한다. 재전송을 요구하지 않는다. 그래서 비디오나 음성에서 부분 품질 저하가 이뤄지는 이유가 이런 것 때문이다. 완벽한 데이터가 올때까지 재전송 시키며 기다리지 않고 온 것들만 처리한다. 

Session layer - 통신을 하기 위한 session을 만드는 계층이다.  연결 성립, 제어, 운영, 종료 등을 책임 진다. 또한 각각 알맞은 application으로 data가 갈 수 있도록 data들을 분리해서 유지한다. 여기서부터 데이터 단위가 데이터이다. 운영체제(OS)가 여기에 속한다. 그리고 TLS/SSL 프로토콜도 여기에 속한다고 볼 수는 있는데, 정확히는 Transport layer와 session layer 사이로 볼 수 있다.

Presentation layer - 받은 데이터를 application이 알 수 있는 형태로 변환시키는 계층이다.

Application layer - Application을 사용하는(사용자가 직접 다루는) 단계이다.

 OSC 7계층은 Network Access(Physical & Data link), Internet(Network), Transport(Transport), Application(Session, presentation, Application) 와 같이 TCP/IP 4계층으로 나눌 수 있다.

http://www.incodom.kr/OSI

IBM PC에서 맥킨토시로 바로 가지 않고 L3 스위치, 라우터를 거치는 과정을 표현 한 그림이다.
정리를 간단히 해보면
Application layer  - 응용 프로그램으로 데이터를 만듦(수신 때는 데이터(사용자가 데이터라고 생각하는)를 수신)
Presentation layer - 받은 데이터를 전송 할 수 있도록 인코딩(수신때는 디코딩), 그리고 암호화(수신때는 복호화)
Session layer - 통신 장비의 연결 관리(유지)
Transport layer - 패킷 분리(TCP) 및 재조합/ 패킷 오류 관리
Network layer - 패킷 분리(UDP), 라우팅(경로설정), 프로토콜 식별, 에러 탐지, 논리적 주소(IP) 관리
Data link layer - 장비 식별(물리적 주소 MAC 관리), 에러 탐지
Physical layer - 아날로그(전기)를 디지털(1010)으로(디저털을 아날로그로(전기)) 변환, Data link에서 추가된 MAC주소를 보고 이동한다.

[CISCO1]_#06_[osi 7 계층, 프로토콜, 전송단위 ,장비, 과정.] (tistory.com)
https://lu-coding.tistory.com/29

L2 스위치 => 데이터 링크 간을 스위칭(스위칭 허브), 프레임의 MAC 주소를 읽어서 전달
      브릿지 => 스위치와 하는 일은 비슷하나 스위치는 하드웨어 단계에서 진행되는 것이라면, 브릿지는 소프트웨어 단계에서 진행된다.
      1)  learning 기능 : 전송했던 특정 목적지의 MAC 주소를 MAC Address Table에 기록해두고, 그 목적지에 데이터를 다시 보낼 때, Mac Address Table를 참고한다.(aging, 데이터가 더 안들어오면 테이블에서 삭제)
      2) Flooding - 목적지 정보가 Mac Address Table에 없다면 어느 포트에 이 목적지가 연결되어 있는지 모르기에 전부 보낸다.
      3) Forwarding - 목적저 정보가 Mac Address Table 에 있다면 해당 포트로 전송한다.

L3 스위치 => 네트워크 간 라우팅(라우터), 패킷의 IP 주소를 읽어서 라우팅
      라우터 => 이 또한 스위치와 하는 일은 비슷하나 하드웨어 단계에서 진행되는 것이라면, 라우는 소프트웨어 단계에서 진행된다.
      1) 코어 라우터 - 인터넷 서비스 제공자(ISP)의 랜이나 여러 ISP 네트워크 연결
      2) 센터 라우터 - 전국 네트워크 WAN 회선을 거처 본점과 회사의 지점등을 연결할 때 사용
      3) 원격(WAN) 라우터 - LAN과 WAN을 중계할 때 사용
      게이트웨이(게이트웨이 라우터) => 외부 네트워크와 외부 네트워크를 연결하는 것으로, L3 라우터를 게이트웨이라고도 할 수 있다. 또, 한 네트워크(segment)에서 다른(프로토콜이 다른) 네트워크로 이동하고 이 때 프로토콜 간의 특수한 변환을 L4 Layer에서 진행하기에 L4 스위치라고도 볼 수 있다. L4 게이트웨이로 L3 라우터를 겸해서 사용하기도 한다.

L4/L7 스위치 => L4/L7 로드 밸런서, 부하 분산(로드밸런싱). 라운드로빈, 최소 연결 알고리즘 등을 지원한다.
라운드로빈- 서버에 들어온 요청을 순차적으로 배정(서버간 스펙이 같을 때, 세션이 짧을때), 가중 라운드로빈 - 각 서버에 가중치를 주고 가중치가 높은 서버부터 배정(서버간 트래픽 처리 속도가 다를 때), IP 해시 방식 - 클라이언트의 IP 주소를 해시함수를 통해 특정 서버에 매핑(동일 서버 연결), 최소 연결(least connection) 방식 - 연결이 가장 적은 서버에 매칭,  최소 응답시간(least response time) 방식 - 서버의 현재 연결상태와 응답시간 고려해서 트래픽 배분.
* L4 로드 밸러서 - Layer3~4의 IP 정보와 TCP/UDP 정보를 통해 로드 밸런스. 
패킷 레벨에서만 로드를 분산하기 때문에 빠르고 효율적이다. 정교한 라우팅은 힘들고, 사용자의 IP가 수시로 바뀐다면 로드밸런싱이 불가능하다.
* L7 로드 밸런서 - Layer3~7의 IP 정보와 TCP/UDP 정보 및 패킷 내용까지 참조하여 로드밸런싱
세부적인 라우팅이 가능하지만 패킷 내용을 복호화 해야되서 비용이 증가하고 부하가 걸릴 수 있으며 보안이 위험해질 수 있다. 캐싱 기능을 지원하고 비정상적인 트래픽을 필터링하여 안정성을 높일 수 있다.
*  AWS에서 Network Load balancer(NLB)가 L4 로드밸러서이고, Application Load Balancer(ALB)가 L7 로드밸런서로 볼 수 있다.

CIDR(사이더)

기존 주소 할당 방식인 Netwrok class를 대처하기 위해 개발된 Classless Inter Domain Routing 으로 클래스 없는 도메인간 라우팅 기법이다. 

IP가 255.255.255.255 와 같이 있다면 255.255.255.255/24에서 /24가 사이더 이다. 

사이더 블록이라 불리는 IP 주소들을 그룹핑하고, 그룹들을 계층적으로 관리하여 Network class 방식에 비해 유연하고 보다 효율적으로 사용이 가능하여 부족해지는 IPv4 주소 문제를 해결할 수 있다. 그리고 접두어를 이용한 주소 지정 방식을 가지는 계층적 구조를 사용하여 라우팅에 부담을 최소화 시킬 수 있다.

 

728x90
반응형

+ Recent posts