OSI 7계층
OSI(Open System Interconnection model)는 네트워크 통신 방법을 개념적으로 설명한 국제 표준 모델이다.
-
OSI 7계층 덕분에 통신 주체(시스템/언어/기기)가 달라져도 서로 통신이 가능한 것 이었다!
-
OSI는 각 계층마다 자신의 역할을 마치고 아래와 같은 작업을 수행하게 된다.
-
OSI 계층 중 1~4 계층을 하위 계층, 5~7 계층을 상위 계층이라 칭한다.
-
하위 계층(Lower layers)은 Network 상에서 Data 전송 및 경로 설정 초점이 맞춰져 있다.
-
상위 계층(Upper layers)는 사용자가 사용할 Data의 의미와 인터페이스와 관련된 기능에 초점이 맞춰져 있다.
-
캡슐화(송신지)/역캡슐화(수신지)
-
캡슐화: 송신지의 PayLoad(Data)는 계층을 거칠 때마다 PayLoad(Data)가 어떤 정보 인지를 알려주는 Header/Trailer들을 달아주며 다음 계층으로 이동
-
역캡슐화: 수신받은 Packet(캡슐화된 데이터)는 계층을 거칠 때마다 Header/Trailer들을 지워가며 다음 계층으로 이동
-
-
왼쪽은 송신지의 캡슐화 과정을, 오른쪽은 수신지의 역캡슐화 과정을 보여준다.
- OSI 7 계층 표
Layer : Layer-Name | Description |
---|---|
L1: Physical | 네트워크 장치의 전기적, 기계적 특성을 이용해 데이터를 물리적으로 전송해주는 역할 |
L2: Data-link | 데이터가 오류 없이 전달되도록 전송 단위(Frame)를 관리하며 물리 계층의 신호(analog)를 데이터(digital)로 변환해주는 역할 |
L3: Network | 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할, 인터넷에서는 인터넷 프로토콜인 IPv4 및 IPv6가 주 네트워크 계층 프로토콜로 사용됨 |
L4: Transport | 네트워크에서 송신지와 수신지 간의 통신 서비스(프로그램에 이어주는 논리적 통신)를 제공하며, 데이터의 흐름을 제어하고 오류를 검출하는 기능을 담당 |
L5: Session | 응용 프로그램 간의 연결을 설정, 유지 및 종료하는 기능을 담당 |
L6: Presentation | 응용 프로그램이 데이터를 알맞게 표현할 수 있도록 변환 해주는 담당 |
L7: Application | 응용 프로그램에 프로토콜(표준화된 통신 방법)을 이용해 데이터를 처리하고 전달해주는 역할 |
물리(Physical) 계층과 Data-link 계층
물리 계층은 호스트와 통신 매체 간의 물리적인 연결을 담당하며, 주소 개념이 없고 단순히 데이터 전송을 처리하지만
데이터 링크 계층은 MAC 주소와 같은 주소 개념을 사용하여 송수신지를 특정할 수 있으며, 오류 검출 및 데이터의 흐름 제어를 포함한 좀 더 복잡한 기능을 수행한다.
=> 두 계층은 함께 작동하여 네트워크 통신이 이뤄지게 한다.
통신 매체를 통해 송수신되는 메시지는 다른 호스트에게 전달되는 과정에서 네트워크 장비를 거칠 수 있는데,
대표적인 네트워크 장비로 물리 계층에는 허브가 있고, Data-link 계층에는 스위치가 있다!
이더넷(Ethernet)
이더넷(Ethernet)은 다양한 통신 매체의 규격들과 송수신되는 프레임의 형태,이를 주고받는 방법 등이 정의된 네트워크 기술로
이더넷은 현대 LAN(특히 유선 LAN)환경에서 가장 대중적으로 사용이 된다.
-
물리 계층에서는 이더넷 규격 케이블을 사용
-
데이터 링크 계층의 프레임은 이더넷 프레임의 형식을 따름
서로 다른 컴퓨터가 각기 다른 제조사의 네트워크 장비를 사용하더라도 통신이 되는 이유는 이더넷 표준이 지켜지기 때문이다.
이더넷 프레임(Ethernet Frame)
-
위처럼 이더넷에 의해 Data-link 계층에서 주고받는 프레임의 형식이 정해지게 되었다.
-
이더넷 프레임은 상위 계층(=네트워크 계층)으로부터 받아들인 정보에 Header와 Trailer를 추가하는 캡슐화 과정을 통해 만들어진다.
(수신지는 역캡슐화 과정을 거쳐 Header와 Trailer를 제거한 후 상위 계층으로 올려 보낸다) -
이더넷 프레임은 아래의 구조로 이루어져 있다
-
Header: Preamble/SFD(1), 수신지 MAC 주소/송신지 MAC 주소(2), Type/Length(3)
-
Payload: Data(4)
-
Trailer: FCS(CRC)(5).
-
-
Preamble / SFD
Preamble / SFD 는 이더넷 프레임의 시작을 알리는 8 bytes 크기의 정보로
앞의 7 bytes(Preamble)는 10101010 값으로 프레임이 시작되고 동기화가 가능하다는 것을 알리고,
마지막 1 bytes(SFD)는 10101011 값을 통해 수신지 MAC 주소가 다음 Byte 부터 시작한다는 것을 알려준다.수신지는 이 Preamble을 통해 이더넷 프레임이 오고 있음을 알아차릴 수 있다!
-
수신지 MAC 주소(Destination MAC) / 송신지 MAC 주소(Source MAC)
MAC 주소는 일반적으로 고유하고 변경되지 않는 주소로 NIC라는 장치마다 부여된다!
(추가로 MAC 주소의 변경이 가능한 경우도 많으며, 고유하지 않을 수도 있으나.. 동일 네트워크에서 MAC 주소가 같을 확률은 현저히 낮다)MAC 주소는 6 Bytes 길이로 이뤄져 있으며, LAN 내에서 수신지와 송신지를 특정하는데 이용된다.
-
EtherType or Length
Field에 명시된 크기가 1500(16진수 05DC) 이하일 경우,
이 Field는 Frame의 크기(=Length)를 나타내는데 사용하고,
1536(16진수 0600) 이상일 경우 이 필드는 EtherType을 나타내는데 사용된다EtherType : 이더넷 프레임이 어떤 정보를 캡슐화했는지 나타내는 정보이다.
(대표적으로 상위 계층(=네트워크 계층)에서 사용된 프로토콜의 이름을 명시함) -
Payload(Data)
데이터는 상위 계층에서 전달받거나 상위 계층으로 전달해야 할 내용으로,
네트워크 계층의 데이터와 헤더를 합친 PDU가 이곳에 포함됨
PDU(Protocol Data Unit)란 각 계층의 데이터 전송 단위를 의미한다.
최대 크기는 1500 Bytes로 반드시 일정한 크기(46 Bytes 이상)여야 한다
-
FCS(Frame Check Sequence(CRC))
FCS(Frame Check Sequence)는 수신한 이더넷 프레임에 오류가 있는지 확인하기 위한 필드이다.
데이터 링크 계층에서 오류 검출이 이루어지기도 하는데, 바로 여기서 오류 검출이 이뤄지게 된다.
CRC(Cycle Redundancy Check), 즉 순환 중복 검사라고 불리는 오류 검출용 값이 들어감
-
송신지는 Preamble을 제외한 나머지 필드 값들을 바탕으로 CRC 값을 계산한 후, 이 값을 FCS 필드에 넣어준다!
-
수신지는 수신한 프레임에서 Preamble과 FCS 필드를 제외한 나머지
필드 값들을 바탕으로 CRC 값을 계산한 뒤, 이 값을 FCS 필드 값과 비교해서 오류를 검출한다.
=> 일치하지 않으면 프레임에 오류가 있다고 판단하여 해당 프레임을 폐기
-
NIC(Network Interface Controller)
-
호스트가 받은 신호를 제대로 이해하려면 통신 매체를 통해 전달되는 신호와 컴퓨터가 이해할 수 있는 정보 간 변환 이 이루어져야 한다!
=> NIC가 바로 그러한(정보를 신호로/신호를 정보로) 변환을 해주는 역할을 하는 기기이다!(컴퓨터에 메인보드에 보통 장착 되어있다)
NIC는 네트워크 인터페이스 카드, 네트워크 어댑터, LAN 카드, 네트워크 카드, 이더넷 카드 등 다양한 명칭으로 불리기도 한다.
-
MAC 주소는 NIC 마다 할당이되며, NIC는 MAC 주소를 통해 자기 주소 및 수신되는 프레임의 수신지 주소를 인식한다.
=> 그래서 Data-link 계층에서 어떤 Frame이 자신에게 도달했을 때,
자신과는 관련 없는 수신지 MAC 주소가 명시된 Frame이면 폐기,
또한 FCS 필드를 토대로 오류를 검출해 잘못된 프레임을 폐기하는 역할을 담당한다.
허브(Hub)
물리 계층에서는 단지 호스트와 통신 매체 간의 연결과 통신 매체 상의 송수신이 이루어진다.
(수신지의 주소를 특정할 수 없어 그냥 호스트<>통신매체 단위로 구분이 된다는 의미이다.)
- 허브의 특징
-
전달받은 신호를 다른 모든 포트로 그대로 다시 내보낸다!
-
물리 계층에는 주소 개념이 없기에 허브는 수신지를 특정할 수 없음
-
신호를 전달받으면 어떠한 조작이나 판단을 하지 않고 송신지를 제외한 모든 포트에 그저 내보내기만 함
-
신호를 전달받은 모든 호스트는 데이터 링크 계층에서 패킷의 MAC 주소를 확인하고 자신과 관련 없는 주소는 폐기함
-
-
반이중 모드(Half Duplex)로 통신
-
동시에 송수신이 불가능하다는 의미이며, 이로인해 콜리전 도메인이 존재한다!
-
콜리전 도메인: 동시에 허브에 신호를 송신하면 충돌(Collision)이 발생하며 이러한 충돌이 발생할 수 있는 영역을 지칭
-
넓은 콜리전 도메인으로 인한 충돌 문제를 해결하려면 CSMA/CD 프로토콜을 사용하거나 스위치 장비를 사용해야 함
-
CSMA/CD
-
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)는 반이중 이더넷 네트워크에서 충돌을 방지하는 대표적인 프로토콜
-
CS는 캐리어 감지를 의미하며 현재 네트워크 상에서 전송 중인 것이 있는지를 먼저 확인함
-
MA는 다중 접근을 의미하며 복수의 호스트가 네트워크에 접근하려는 상황을 확인함
-
CD는 충돌 검출을 의미 충돌을 감지하면 전송이 중단되고,
충돌을 검출한 호스트는 다른 이들에게 충돌이 발생했음을 알리고자 잼신호라는 특별한 신호를 보낸 후, 임의의 시간을 기다리고 다시 전송함
-
-
스위치(Switch)
CSMA/CD를 통해 충돌 문제를 어느 정도 완화할 수는 있지만 사실 이보다 더 근본적인 해결 방법이 있음
전달받은 신호를 수신지 호스트가 연결된 포트로만 내보내고, 전이중 모드로 통신하면됨
=> 이러한 기능을 지원하는 네트워크 장비가 바로 Data-link 계층의 스위치 (2계층에서 사용한다하여 L2 스위치라고도 부름)
스위치가 전달받은 신호를 원하는 포트로만 내보낼 수 있는 것은 스위치가 MAC 주소를 학습할 수 있기 때문
추가로 논리적으로 LAN을 분리하는 가상의(Virtual) LAN,즉 VLAN을 구성할 수도 있음
- 스위치의 특징
-
MAC 주소 테이블
-
MAC 주소 학습을 위해 포트와 연결된 호스트의 MAC 주소 간의 연관 관계를 메모리에 표 형태로 저장하게됨
-
스위치 포트와 연결된 호스트의 MAC 주소 연관 관계를 나타내는 정보를 MAC 주소 테이블이라고 부름
-
-
MAC 주소 학습
-
스위치가 처음으로 호스트 A에서 Frame을 수신함
-
프레임 내 송신지 MAC 주소 정보를 바탕으로 호스트 A의 MAC 주소와 연결된 포트를 MAC 주소 테이블에 저장
-
플러딩(Flooding) : 스위치는 송신지 포트를 제외한 모든 포트로 Frame을 전송
-
호스트 B와 D는 자신과 관련이 없는 Frame을 전송받아 Frame을 폐기함
-
호스트 C는 수신지 MAC 주소가 알맞아 스위치로 응답 Frame을 전송함
-
호스트 C의 MAC 주소와 연결된 포트를 알아내어 이 정보를 MAC 주소 테이블에 기록함
-
이후에 MAC 주소 테이블에 저장된 정보들을 이용해 아래의 기능 이용해 MAC 주소 테이블을 관리/이용
=> 필터링(Filtering) : 프레임을 어디로 내보내고 어디로 내보내지 않을지 결정
=> 포워딩(Forwarding) : 프레임이 전송될 포트에 실제로 프레임을 내보냄
=> 에이징(Aging) : 주소 테이블에 등록된 특정 포트에서 일정 시간 동안 프레임을 전송받지 못했다면 해당 항목을 삭제
-
-
VLAN(Virtual LAN)
-
스위치에 연결된 호스트 중, 서로 메시지를 주고받을 일이 적거나 브로드 캐스트 메시지를 받을 필요가 없어 굳이 같은 네트워크에 속할 필요가 없는 호스트가 있을 수 있음
=> 한 대의 물리적 스위치라 해도 여러 대의 스위치가 있는 것처럼 논리적인 단위로 LAN을 구획하여 위의 상황을 최적화해주는 기술이 VLAN임
-