본문 바로가기
computer science/네트워크

[네트워크] OSI 7 Layer

by 박연호의 개발 블로그 2020. 1. 9.

이번 시간에는 OSI 7 Layer에 대해서 공부해보겠습니다.

 

저는 OSI 7 Layer를 대학교 강의시간에 처음 들었습니다. 교수님이 7개의 단계로 나누어서 뭐라고 설명을 해주시는데, 그때는 사실 이게 왜 만들어 졌고 어떤 기능을 하는지 왜 7단계로 나누어야 하는지 이해를 못했습니다. 그냥 시험공부하기 위해서 암기했었던 기억이 있네요.

 

먼저 osi 7 layer의 목적은 다음과 같습니다.

 

"이 모델은 데이터가 전달 되기위한 과정을 계층화 한 것으로 프로토콜을 기능별로 나눈 것이다. 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다. '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가리키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다. 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어로 구현된다."

 

위키피디아에 osi 7 layer을 치면 다음과 같이 나옵니다.

 

OSI (Open Systems Interconnection) 모델은 기본 내부 구조 및 기술에 관계없이 통신 또는 컴퓨팅 시스템의 통신 기능을 특성화하고 표준화하는 개념적 모델입니다. 목표는 표준 통신 프로토콜과 다양한 통신 시스템의 상호 운용성입니다. 이 모델은 통신 시스템을 추상화 계층으로 분할합니다

위의 내용을 읽었을 때 무슨 생각이 드시나요. "아 OSI 7 Layer이런 거구나!!" 한번에 이해가 되시나요?" 대부분의 반응은 "대충 머리로는 이해가 되겠는데, 뭔가 이해가 안되는 찜찜함이 있을 겁니다. 그러면 도대체 OSI 7 Layer이 뭘까요 ?

 

OSI 7 Layer을 공부하기 전에, 우리가 택배를 보내면 어떤 과정을 거치는지 먼저 알아 봅시다.

 

1. 어떤 물건들을 보낼지 결정한다

2. 물건을 포장한다.

3. 우리집 주소와 상대방 주소를 적고 우체국으로 보낸다.

4. 우체국에서는 택배를 비행기로 보낼지 자동차로 보낼지 결정한다.

5. 실제로 택배를 보낸다.

6. 택배를 받는다.

 

위의 과정을 통해서 저희는 택배를 보낼 수 있습니다. 만약 위의 과정중에 하나라도 없게되면 택배를 보낼 수 없겠죠. 그리고 만약 택배를 받았는데, 물건에 포장이 잘못되어 있거나 안되어 있으면 (2)번 과정에서 문제가 생긴것이고, 다른 주소고 택배가 가게 되면 (3)번 과정에서 문제가 생겼음을 알 수 있습니다.

 

Host A가 Host B에게 데이터를 보낼 때 OSI 7 Layer(7 Layer ㅡ> 1 Layer)를 거치게 되고, 받을 때도 마찬가지 입니다(1 Layer ㅡ> 7 Layer)

아까 택배를 보낼 때 각각의 단계에서 특정한 일을 한 것과 마찬가지로 데이터를 보내개 되면 각각의 Layer에서 특정한 작업을 하게 됩니다.

이제 각각의 Layer에서 어떤 일을 하는지 알아 봅시다.


7. Application Layer : 사용자와 인터페이스 기능을 제공

응용 계층은 실제로 통신의 최종 목적에 해당하는 계층으로, 응용 프로세스(사용자, 응용 프로그램)가 네트워크에 접근하는 수단을 제공하여 데이터를 서로 교환하는 창구 역할을 하고 사용자 인터페이스를 제공합니다. 또한 최종 사용자와 가장 가깝게 위치해 있으며 사용자와 컴퓨터가 서로 상호작용할 수 있는 인터페이스 역할을 합니다. 간혹 크롬, 익스플로어 등 응용프로그램 자체를 응용 계층으로 생각하는 경우도 있지만 이런 프로그램은 응용 계층의 프로토콜을 사용하는 도구일 뿐입니다.

 

1. 파일 접근 및 전송 : 원격으로 다른 호스트 파일에 접근할 수 있게 하고, 원격 컴퓨터의 파일을 가져오며, 원격 파일의 관리 제                                            어한다. 

2. 메일 서비스 : 메일을 발송하고, 저장할 수 있는 토대를 제공한다.

 

프로토콜 : DHCP, DNS. FTP, HTTP, Telnet 

 

> 실제 사용자와 상호작용할 수 있는 인터페이스 기능을 제공합니다. 


6. Presentation Layer  : 표준화된 데이터 형식을 규정

표현 계층은 데이터 표현의 차이를 해결하기 위해 서로 다른 형식으로 변환하거나 공통 형식을 제공하는 계층 입니다. 예를 들어 EBCDIC로 인코딩된 문서 파일을 ASCII로 인코딩된 파일로 바꿔주는 역할을 하며, 또한 그래픽 정보는 jpeg, 동영상은 mpeg 형식으로 변환하여 송수신하는 기능과 데이터 압축 및 암호화 기능 등을 제공합니다.

 

또한 송식 측과 수신 측 사이에서 표준화된 데이터 형식을 규정합니다. 즉 전송하려는 이미지가 png 인지, jpg 인지 압축되었는지 등 표현과 관련된 구분을 합니다. 그리고 두 시스템 간에 서로 다르게 사용하는 문자와 그래픽 문자 등을 번역하여 일관되게 전송 데이터를 이해할 수 있게 합니다. 네트워크로 전송되는 데이터의 보안을 위해 송식측에서 암호화하고 수식 측에서는 복호화하여 전송률을 높이기 위해 데이터를 압축하기도 합니다.

 

내가 보내는 데이터를 수신측에서도 알 수 있는 공통된 표현형식에 맞춰 변형해서 보내야 합니다, 그래야 수신측에서도 표현형식에 따라서 구조를 확인하고 내컴퓨터에 맞는 형식으로 변환해서 보여줄것입니다.

 

1. 암호화 : 데이터의 보안을 위해 암호화, 복호화를 수행한다.

2. 압축 : 데이터의 효율적인 전송을 위애 데이터 압축 및 압축 해제를 수행한다.

3. 코드 변환 : 전송에 사용할 수 있도록 데이터를 상호간에 수용할 수 있는 형식으로 변환 후 수신자에서 수신자가 이해할 수                                있는 형식으로 변환한다.

 

프로토콜 : JPEG, MPEG, SMB, AFP

 

> 송신측과 수신측 사이에서 표준화된 데이터 형식을 규정합니다. 데이터에 대한 포장/압축/복호화 그리고 데이터를 완성 및 표현하는 역할을 합니다. 


5. Session Layer  : 프로세스간 논리적 연결을 수립

먼저 session이란 프로세스들 사이에 메시지를 교환을 통해 서로를 인식한 후 이후부터 통신을 마칠때까지의 논리적 연결입니다.

 

세션 계층에서는 두 응용그램 계층 간의 연결을 수립, 관리, 종료하는 기능을 하며, 연결할 때 port를 기반으로 연결을 합니다. 세션 계층의 주요 기능은 상위 응용실체간의 대화를 위한 동기를 맞추고, 순차적인 데이터 교환 방법을 제공합니다. 또한 데이터 송신의 제어 기능, 데이터 전송의 동기점을 부가하는 기능, 재전송기능 등을 제공함으로써, 데이터의 교환을 원활하게 합니다.

 

1. 동기화 : 전송 계층으로 전송할 순서와 전송할 때 수신자 확인이 필요한 곳을 결정한다.

2. 세션 연결의 설정과 종료 : 세션 연결의 설정과 종료 및 관리 정차를 정의한다.

3. 대화 제어 : 누가 언제 보내는지 결정한다.

 

프로토콜 : SSH, TLS

 

> 소프트웨어 프로세스간에 세션(논리적 연결)을 수립합니다.


4. Transport Layer : 신뢰성 있는 데이터 전송

전송 계층은 데이터를 수신지까지 문제없이(신뢰성, 정확성) 빠르고 효율적으로(효율성) 전송해주는 역할을 합니다. 네트워크 계층에서는 다른 네트워크로 데이터를 전송하는데 라우터가 필요합니다. 하지만 라우터를 경유하는 패킷의 경우 라우터에 문제가 생기거나 패킷이 손상되면 데이터가 수신지에 도착하지 못할 수도 있습니다. 네트워크 계층은 IP 프로토콜을 사용하여 송신지에서 수신지로부터 단지 데이터를 "전달"하는 역할만 하고 데이터가 제대로 왔는지 검사하지 않습니다.

 

하지만 전송 계층은 수신지에 신뢰할 수 있는 데이터를 전송을 보장할 수 있으며 오류를 점검하는 기능이 있기 때문에 데이터에 오류가 발생하면 재전송을 요청할 수 있습니다.  즉 네트워크 계층에서는 수신지까지 데이터를 전송하고, 전송계층 에서는 데이터가 제대로 도착했는지 확인 합니다. 또한 전송 계층은 전송된 데이터의 수신지가 어떤 애플리케이션인지 식별하는 기능도 있습니다.

 

전송 계층에는 신뢰할 수 있고 데이터를 정확하게 전송하는 통신인 연결형 통신과 효율적으로 데이터를 전송하는 비연결형 통신이 있습니다. 연결형 통신(TCP)은 신뢰성이 우선이므로 데이터를 전송하고 데이터를 잘 받았는지 확인하는 과정을 거치지만, 비연결형 통신(UDP)는 효율성이 우선이므로 데이터를 잘 받았는지 확인하지 않고 일방적으로 데이터를 전송합니다.

 

예를 들어 인터넷 동영상처럼 잠깐의 끊김이 크게 문제 되지 않고 빠른 전송이 요구되는 곳에는 UDP를 사용하고 데이터의 신뢰성과 정확성이 우선시되는 곳에는 TCP를 사용합니다.

 

프로토콜 : TCP,UDP

데이터 : TCP(segment), UDP(datagram)

장비 : L4 스위치

 

> 송/수신자간에 신뢰성있는 데이터를 주고 받을 수 있도록 해주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줍니다. 전송계층은 효율적인 데이터과 오류 검출 및 복구와 흐름제어 등을 수행합니다.


3. Network Layer : 패킷의 경로지정(IP, 외부 네트워크)

네트워크 계층은 현재 네트워크에서 다른 네트워크에 있는 장치까지의 데이터 전송을 담당합니다. 데이터 링크 계층은 이더넷 규칙을 기반으로 같은 네트워크상의 데이터를 전송할 수 있지만 다른 네트워크나 인터넷으로 데이터 전송을 담당하는 부분이 네트워크 계층 입니다.

 

네트워크를 통해서 데이터를 전송하려면 수신지 주소를 반드시 알아야 합니다. LAN에서는 MAC주소 만으로도 통신이 가능 하지만 다른 네트워크에는 데이터를 전송할 수 없습ㄴ디ㅏ. 따라서 네트워크를 식별할 수 있는 IP 주소를 사용해야 합니다. IP 주소로 수신지 컴퓨터를 지정할 뿐만 아니라 데이터를 어떤 경로로 전송할지도 결정해야 하는 이를 라우팅이라고 합니다. 라우팅은 라우터가 수행하며 라우팅 테이블을 통해 정보를 등록하고 관리합니다.

 

라우팅과 스위칭은 데이터와 함께 송신지 및 수신지 주소를 포함한 헤더를 추가합니다. 이 주소는 데이터 링크 계층의 헤더에 포함된 물리 주소와 다릅니다. 데이터 링크 계층의 주소는 한 노드에서 다음 노드로 프레임이 이동함에 따라 변경되는 현재와 다음 노드의 물리 주소일 뿐이지만 네트워크 계층의 주소는 송신지와 최종 수신지의 주소로 전송 도중에 바뀌지 않습니다.

 

1. 논리적 주소 지정 : 송신자와 수신지 주소를 헤더에 포함한다.

2. 라우팅 : 다양한 경로 중 패킷의 경로를 설정한다.

3. 주소 변환 : 대응하는 물리주소를 찾기 위해 논리 주소를 해석한다.

4. 다중화 : 하나의 물리적 회선만 사용하여 많은 장치에 데이터를 동시에 전송한다.

 

프로토콜 : IP, ICMP, IGMP

데이터 : Packet,

장비 : 라우터, L3 스위치

 

> 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당합니다. 라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷을 전달해주며  라우팅, 흐름 제어, 오류 제어 등을 수행합니다. 


2. Data Link Layer : 프레임에 주소부여(MAC, 내부 네트워크)

데이터 링크 계층은 (두 개의 직접 연결된노드 사이의) 노드 간 데이터 전송을 제공하며 주소지정, 순서제어, 흐름제어, 오류 처리 기능을 제공합니다. 예를 들어 컴퓨터-스위치-라우터가 연결되어 있는 상황에서(라우터-라우터도 포함) 이들간의 패킷을 주고받는 과정은 1계층에서 패킷을 0과1의 전기적 신호로 바꾸어 전송되는데 이때 주변 상황에 의해 그 신호가 훼손될 수 있는데 이런 신호의 훼손을 방지하는 역할을 합니다.

 

데이터 링크 계층에서는 3계층에서 받은 데이터의 앞 부분에 이더넷 헤더와 끝 부분에 트레일러를 추가해서 프레임으로 만듭니다.

이더넷 헤더는 데이터를 어디로 보낼지에 대한 출발 MAC주소와 목적MAC 주소가 정의되어 있습니다.

트레일러는 데이터의 에러, 오류를 검사하는데 프레임이 오류 없이 잘 도착했는지 결정하기 위해 사용하며 이때 프레임 체크 문자열(FCS)를 사용합니다.

 

데이터 링크 계층은 2개의 부 계층이 존재하는데 하나는 MAC 계층이고 다른 하나는 LLC 계층이며 크게 다음과 같은 역할을 합니다.

LLC는 네트워크의 로컬 장비 간 논리적 연결을 수립하고 제어하는 데 필요한 기능을 가리킵니다. MAC은 장비가 네트워크 매체에 대한 접근을 통제하는 데 사용하는 절차를 가리킵니다.

 

1. 흐름 제어 : 송신측과 수신측간의 속도차를 보장한다.

2. 에러 제어 : 통신상 오류와 잡음이 발생할 확률이 높으므로 전송 오류를 검출하고 이것을 수정, 패킷을 재전송 한다.

3. 순서화 : 패킷이나 ACK 신호를 잘못 혼동하는 것을 피하기 위해서는 패킷와 ACK 신호에는 일련번호가 부여된다.

4. 데이터 링크 연결 관리 : 네트워크 엔티티 간에 데이터 링크의 설정, 유지, 단락 및 데이터 전송 등을 제어한다.

 

 

물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할

Mac 주소를 통해 통신한다. 프레임에 Mac 주소를 부여하고 에러검출, 재전송, 흐름제어를 진행한다.

 

프로토콜 : MAC, PPP, HDLC, ALOHA 

데이터 : Frame

장비 : 브리지, L2 스위치

 

> 물리 계층으로 송수신되는 정보를 관리하며 안전하게 전달되도록 도와주는 역할을 합니다. LLC 계층과 MAC 계층으로 나뉘며 MAC 주소를 통해 통신하며 프레임에 MAC주소를 부여하고 에러검출(CRC), 재전송, 흐름제어 역할을 합니다.


1. Physical Layer : 실제 데이터 전송(전기적 신호)

물리 계층은 두 시스템 간에 데이터를 전송하기 위해 링크를 활성화 하고 관리하는 전기적, 기계적, 절차적 특성 등을 정의합니다. 또한 허브, 라우터, LAN 카드, 케이블 등을 통해 상위 계층인 데이터 링크계층에서 형성된 데이터 패킷을 전기 신호나 광신호로 바꾸어 물리적 장치를 통해 다른 시스템에 전기신호로 전송합니다. 

 

송신 측의 물리 계층은 데이터 링크 계층에서 0과 1로 구성된 비트열의 데이터(프레임)을 받아 전기 신호로 변환한 후 전송 매체를 통해 수신 측에 보냅니다. 그러면 수신 측의 물리 계층은 전기 신호를 0과 1로 구성된 비트열로 복원하여 데이터 링크 계층에 전송합니다.

 

프로토콜 : Ehternet, RS-232C

데이터 : bit

장비 : LAN 카드, 케이블, 허브, 라우터, 등

 

>  데이터가 네트워크 인터페이스를 통해 물리적으로 전송되는 유일한 계층으로 데이터를 적절히 인코딩한 후 데이터를 송/수신, 신호처리 하는 역할을 합니다.

 


PDU(Protocol Data Unit) ?

Application Layer의 데이터는 Physical Layer 까지 오면서 각 layer의 제어정보를 추가하게 됩니다. 이때 데이터 + 각 layer의 제어정보 덩어리를 PDU라고 하는데, 이 제어정보는 보통 header라고 부릅니다.

결국에 처음 데이터의 크기가 10이라면 Physical Layer을 지난 데이터의 크기는 10보다 크게 됩니다. 

 

각가의 layer에서 PDU는 다음과 같이 부릅니다.

 

'computer science > 네트워크' 카테고리의 다른 글

[네트워크] 서브넷 마스크와 서브네팅  (0) 2020.01.31
[네트워크] IPv4와 IPv6  (0) 2020.01.30
[네트워크] HTTP  (0) 2020.01.29
[네트워크] 4 way handshake  (0) 2019.12.18
[네트워크] 3 way handshake  (0) 2019.12.17