Inor

[Network] OSI 7 계층 (OIS 7 Layer) 본문

Computer Engineering/Network

[Network] OSI 7 계층 (OIS 7 Layer)

Inor 2017. 11. 24. 18:26

- OSI 7 계층 (OSI 7 Layer)



 OSI 7 계층은 서로 다른 두 기기간의 통신을 위해 표준화된 통신 프로토콜입니다. 프로토콜은 일종의 규약입니다. 표준화된 규약이 없다면 기기마다 호환성을 보장해줘야하는 불필요한 작업이 발생합니다. 이 문제는 아이폰과 안드로이드폰의 충전 케이블이 달라서 발생하는 문제와 비슷합니다. 아이폰 충전을 위해서 안드로이드 충전 케이블에 변환 잭을 사용하거나 아이폰 전용 케이블로 교체를 해야합니다.

 OSI 7 계층은 총 7개의 계층으로 구성되고 각 계층은 서로 독립적으로 모듈화되어 개발 됐습니다. 모듈화되어있기 때문에 통신 장애가 발생하면 계층별로 문제 해결이 가능합니다. 아래부터 쌓아 올라가는 스택 모형으로 구현되고 일반적으로 하위 계층은 하드웨어, 상위 계층은 소프트웨어로 구현됩니다. 중간의 Transport Layer는 전송 계층으로 상위 계층과 하위 계층을 연결하는 역할을 수행합니다.




- Physical Layer (물리 계층)


이미지 출처 : http://netwrk-internet.blogspot.kr/2011/06/


 물리 계층은 통신 케이블을 이용해 비트 스트림을 전송하는 계층입니다. 단지 데이터를 전달하는 역할만하고 오류 제어 기능은 수행하지 않습니다. 비트 스트림은 0과 1로 구성되어 있는데 물리 계층은 이 비트 스트림을 전자 신호로 표현하거나 전자 신호를 비트 스트림으로 변경하는 역할을 합니다. 데이터 링크 계층을 물리적으로 연결하는 역할을 합니다.


프로토콜 : Ethernet(이더넷)

장비 : 허브, 리피터



- Data Link Layer (데이터 링크 계층)


이미지 출처 : http://netwrk-internet.blogspot.kr/2011/06/


 데이터 링크 계층은 Point to Point간의 신뢰성 있는 전송을 보장하는 계층입니다. Point란 물리적으로 연결된 노드입니다. 데이터 링크의 전송 단위는 Frame(프레임)입니다. 프레임을 물리 계층에 전송하고 물리 계층은 물리적으로 연결된 노드로 비트 스트림을 전송합니다. MAC Adress를 이용해서 프레임을 노드로 전송합니다. MAC Adress는 네트워크 카드(랜 카드)가 갖고 있는 유일무이한 물리 주소입니다. 전송지 MAC Adress는 프레임의 헤더에 작성합니다.

 데이터 링크 계층 오류 제어와 흐름 제어로 신뢰성 있는 전송을 보장합니다. 손실, 손상된 프레임에대해 재전송 요청하는 방식으로 오류 제어를 수행합니다. 프레임을 송신하면 수신 받아야하는 노드에서 프레임이 도착했다는 확인 메시지를 전달해야 합니다. 만약, 확인 메시지가 오지 않으면 프레임은 손실된 상태이고 해당 프레임을 재전송 합니다. 손상은 프레임의 데이터가 변조된 상태를 의미합니다. 손상된 상태의 확인은 프레임의 트레일러를 사용해서 확인합니다. 프레임의 bit 개수(데이터 + 트레일러)가 짝수인지 확인하는 Parity Bit Check(패리티 비트 검사) 방법을 사용해서 손상된 데이터를 확인합니다.

 흐름 제어는 데이터 송, 수신 속도에서 발생하는 프레임 유실을 막기 위한 기술입니다. 두 기기의 프레임 송, 수신 속도가 다르다면 문제가 발생합니다. 주로, 송신 속도가 빠른 컴퓨터에서 수신 속도가 느린 컴퓨터로 프레임을 전송할때 문제가 발생합니다. 문제는 수신 속도가 느려 프레임을 받지 못하고 유실되는 상황입니다. 그래서 흐름 제어는 기기 중 느린 네트워크 속도에 맞춰서 프레임을 전송하는 방식으로 실행됩니다.


프로토콜 : MAC

장비 : 브릿지, 스위치



- Network Layer (네트워크 계층)


이미지 출처 : http://netwrk-internet.blogspot.kr/2011/06/


 네트워크 계층은 최종 목적지(노드)까지 경로를 설정하는 역할을 수행합니다. 경로 설정 작업은 라우팅이라고 합니다. 데이터 링크 계층은 물리적으로 연결된 다음 노드까지의 연결을 보장한다면 네트워크 계층은 각 노드를 지나며 최종 노드까지 도착을 보장합니다. 네트워크 계층이 있기 때문에 인터넷이 가능합니다. 만약 모든 컴퓨터가 물리적으로 연결되어 있다면 네트워크 계층 없이도 인터넷이 가능합니다. 네트워크 계층은 서로 다른 네트워크간의 연결 장치를 통해서 다음 네트워크까지 이동을 지원합니다.

 최종 노드까지 전달하기 위해서 경로 설정을 도와주는 프로토콜이 IP 입니다. IP는 네트워크 계층의 데이터 전송 단위인 패킷의 헤더에 포함됩니다. IP는 신뢰성있는 전송을 보장하지 않습니다. 네트워크 계층에서 전송하는 패킷은 순서를 보장해주지 않습니다. 네트워크 계층에서 전송한 패킷은 네트워크를 떠돌다가 손실되는 경우도 존재합니다. 대신 네트워크 계층의 상위 계층인 전송 계층에서 신뢰성을 보장합니다.


프로토콜 : IP, ICMP

장비 : 라우터



- Transport Layer (전송 계층)


이미지 출처 : http://netwrk-internet.blogspot.kr/2011/06/


 전송 계층은 End to End간의 신뢰성있는 전송을 지원하는 계층입니다. End는 프로세스를 의미합니다. 프로세스는 운영체제에서 배우는 용어로 현재 실행되고 있는 프로그램입니다. 예를 들어, 크롬이 컴퓨터에 설치 되어 있다면 크롬 프로그램이 컴퓨터에 존재하는 상태입니다. 사용자가 크롬을 실행하면 프로세스가 1개 생성된 상태가됩니다.

 전송 계층은 네트워크 계층에서 전달 받은 패킷을 프로세스에게 전달하기 위해 포트 번호(Port Number)를 사용합니다. 포트 번호는 운영체제가 프로세스에게 부여하는 유일무이한 번호입니다. 포트 번호는 패킷의 헤더에 포함되어 있습니다.

 전송 계층은 패킷을 프로세스에게 전달하기 전에 재조립합니다. 네트워크 계층이 패킷을 순서대로 보내주지 않기 때문입니다. 재조립하기위해 패킷의 세그먼트 번호를 사용합니다. 세그먼트 번호를 확인하며 패킷의 손실, 손상이 있는지 확인하고 문제가 있는 패킷에대해 재전송 요청을 합니다.

 전송 계층은 연결형과 비연결형으로 구분되는데 연결형은 TCP이고 비연결형은 UDP입니다. TCP는 신뢰성있는 데이터 전송을 보장합니다. TCP는 데이터를 전송하기 전에 두 프로세스간의 연결을 설정합니다. 이 연결은 데이터를 보내겠다는 신호이고 데이터 전송이 완료되면 연결을 해제합니다. 네트워크 계층에서 순서에 상관없이 데이터를 전송해도 TCP는 데이터를 순서대로 조립합니다.

 UDP는 신뢰성있는 데이터 전송을 보장하지 않고 프로세스간 연결을 설정하지 않습니다. UDP는 네트워크 계층에서 전송하는 패킷을 모두 독립된 패킷으로 인식하고 송신 받는대로 프로세스에 전달합니다.


프로토콜 : TCP, UDP, ARP

장비 : 게이트웨이



- Session Layer (세션 계층)


이미지 출처 : http://netwrk-internet.blogspot.kr/2011/06/


 세션 계층은 프로세스간의 연결을 유지해주는 계층입니다. 전송 계층에서 설정한 연결을 유지하도록 해줍니다. 세션 계층부터는 소프트웨어 개발자가 직접 코딩해야하는 부분입니다. 세션 계층은 대화 기능과 동기 기능을 수행합니다.

 세션 계층은 두 프로세스간 토큰으로 대화 기능을 수행합니다. 토큰의 종류는 데이터 토큰, 해제 토큰, 동기 토큰이 있습니다. 데이터 토큰은 데이터를 전송할 수 있는 권한을 의미하고 해제 토큰은 프로세스간 연결 제어를 관리합니다. 동기 토큰은 동기화를 목적으로 사용됩니다. 동기 토큰은 신뢰성을 보장하기 위해서 사용합니다.

 세션 계층은 동기 기능으로 신뢰성을 보장합니다. 데이터의 복구를 위해 동기점을 사용합니다. 동기점 이전의 데이터는 프로세스간 데이터에 문제가 없다는 합의를 통해 설정됩니다. 데이터를 복구할때 동기점 이전까지 데이터에대한 복구 과정을 진행할 필요가 없다는 의미입니다. 데이터에 문제가 있다면 동기점 이후에 발생하고 데이터 복구 절차를 진행합니다.


프로토콜 : SSH, TLS



- Presentation Layer (표현 계층)


 표현 계층은 컴퓨터마다 다른 데이터 표현 방식을 변환해주는 역할을 합니다. 번역기와 비슷한 역할이라고 생각하면 됩니다. 서로 다른 언어를 사용하는 외국인(프로세스)끼리 대화를 하려면 번역기 역할을 수행하는 기기가 필요합니다. 컴퓨터마다 데이터의 표현 방식이 다릅니다. 16bit, 31bit, 64bit 등 데이터를 표현한 방식이 다릅니다. 이때 컴퓨터에 맞게 데이터를 변환하는 역할을 수행하는 계층이 표현 계층입니다.

 표현 계층은 데이터를 압축과 암호화 작업을 수행합니다. 압축은 데이터의 전송 속도를 높이기 위해서 수행되는 작업입니다. 대용량 멀티미디어를 전송할때 중요합니다. 암호화는 데이터의 안전한 전송을 위해서 수행하는 작업입니다.


프로토콜 : JPEG, MPEG, ASCII



- Application Layer (응용 계층)


 응용 계층은 하위 계층들을 이용해 사용자가 응용 프로그램을 사용하도록 사용자 인터페이스를 지원합니다. 경우에 따라서 표현 계층과 세션 계층의 작업을 수행하기도 합니다. 사용자에게 보이는 유일한 계층으로 메일 전송, 인터넷 접속 등의 작업을 수행합니다.


프로토콜 : HTTP, FTP, SMTP, DNS, Telnet




- OSI 7 Layer를 이용한 데이터 전송 과정


이미지 출처 : http://netwrk-internet.blogspot.kr/2011/06/


 데이터 전송 과정은 OSI 7 Layer의 각 계층을 차례로 지나며 진행됩니다. 엄청 복잡하게 생겼지만 결국 OSI 7 Layer가 4개 있는 그림입니다. 그림은 A 디바이스에서 B 디바이스로 데이터 전송 과정을 보여주고 있습니다. 먼저 A 디바이스에서 사용자가 데이터 전송을 요청하면 각 단계를 거치며 헤더에 전송에 필요한 데이터가 추가됩니다. 전송 계층부터 데이터 전송을 위한 캡슐화가 진행됩니다. 데이터 링크 계층에서 캡슐화가 완료되고 데이터 전송을 시작합니다.

 디바이스 B까지 가기 위해서 2개의 노드를 거치는데, 이 과정에서는 전송 계층까지 올라가지 않고 네트워크 계층에서 다음 노드까지의 경로를 설정하고 다시 캡슐화를 진행합니다. 결국 IP를 이용해서 최종 목적지에 도착하면 전송 계층까지 올라가며 데이터의 헤더를 분석하고 프로세스까지 전달하는 작업을 진행합니다.

 저는 이 과정을 설명할때 택배를 예시로 활용합니다. 홈쇼핑에 물건을 주문하면 주문 정보가 접수되고 택배 발송을 시작합니다. 택배 물품은 포장 과정을 거치며 프로세스(주문자의 집) 주소(포트번호)를 할당 받습니다. 그러나 바로 주문자의 집으로 도착하는 것이 아니라 각 물류 센터를 거칩니다. 여기서 물류센터까지의 목적지 설정은 IP가 담당합니다. 택배 물품은 모든 물류센터를 거치며 최종 목적지 도시까지 오게되고 주문자의 집 주소(포트번호)를 활용해서 최종 목적지에 도착합니다.

Comments