OSI 7계층(Open systems interconnection reference model)

2021. 2. 4. 21:03카테고리 없음

OSI 7계층 : 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신 계층을 나누어 설명한 것이다. 일반적으로 OSI 7계층 이라고 한다.

다시말해서,

네트워크 통신이 이러나는 과정을 7단계로 나눈것을 의미한다.

7계층으로 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다.

 

흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고 7단계중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다.

 

 

---------------------------------------------------------------------------------------------------------------------------

<* 국제표준화기구 : 1947년 출범한 나라마다 다른 산업, 통상 표준의 문제점을 해결하고자 국제적으로 통용되는 표준을 개발하고 보급한다. 163개국이 가입 활동하고 있음.

---------------------------------------------------------------------------------------------------------------------------

 

설명하기 전 용어 중 "프로토콜"이라는 말이 자주 나옵니다.

프로토콜이란 : 복수의 컴퓨나 중앙 컴퓨와 단말기 사이에서 데이터 통신을 원활하게 하기 위해서 필요한 통신 규약, 규칙을 의미합니다.

 

1계층 - 물리계층

물리계층에서는 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송하게 된다.

이 계층에서 사용되는 통신 단위는 비트이며, 비트는 1과 0으로 나타내어지는, 즉 전기적으로 on, off 상태라고 생각하면 된다.

물리계층에서는 단지 데이터를 전달만 할 뿐 전송하려는(또는 받으려는 )데이터가 무엇인지, 어떤 에러가 있는지 등에서는 전혀 신경쓰지 않는다.

단지, 데이터 전기적인 신호로 변환해서 주고받는 기능만 뿐이다. 계층에 속하는 대표적인 장비는 통신케이블, 리피터, 허브  등이 있다. ———> 케이블, 리피터, 허브를 통해 데이터를 전송한다.

리피터
허브
컴퓨터와 컴퓨터간의 통신 과정
물리계층에서 일어나는 데이터 전송과정

2계층 - 데이터 링크 계층

물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다.

따라서 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있다.

이 계층에서는 맥 주소를 가지고 통신하게 된다.

계층에서 전송되는 단위를 프레 임이라고 하고, 대표적인 장비로는 브리지, 스위치 등이 있다.(여기서 MAC 주소를 사용한다.)

 (주요 역할)

프레이밍(framing) : 데이터를 프레임(frame)으로 그룹화하여 전송. 즉, 데이터 배열에 data, header, trailer 등을 넣어서 캡슐화를 하는 작업을 의미. 각각의 노드(송신자, 수신자, 중간중간의 각종 라우터, 스위치 등의 하드웨어)에서 다음 노드로 데이터를 보낼 때, L3(network layer)에서 받은 데이터그램(datagram)을 캡슐화하는 작업을 의미한다. 그리고 캡슐화된 틀(데이터 배열)을 프레임(frame)이라고 한다.

에러제어 (error control): 에러를 감지하고 처리

송신 측에서 framing을 하고 이것을 0과 1로 이루어진 비트로 변환하고 보낸다. 수신 측에서는 이렇게 비트 배열로 된 데이터를 받게 될 텐데, 0과 1을 이루는 이 전기적인 신호들이 외부의 영향에 있어서 매우 오류가 날 가능성이 크기 때문에 수신받는 측 데이터링크층에서 전기적 신호를 보고 framing 해야한다. 이 과정에서 에러를 검출해낼 수 있는데, 에러를 검출하는 방법은

첫번째, 에러를 직접 수정.

두번째, 첫번째로 받은 데이터 배열을 폐기, 송신측에 재수신 즉, 데이터를 다시 보내달라는 재요청을 하는 것이다.

 

순서제어(sequence control): 패킷이나 요청 신호를 잘못 혼동하는 것을 피하기 위해서는 패킷 요청 신호에는 일련번호(sequence number)가 부여되어야 만한다.

링크관리(link management): 네트워크간의 데이터 링크의 설정, 연결 유무 관리

매체접근 제어 : 수 많은 컴퓨터가 있고, 매체가 여러개 임으로 다양한 회선형태의 수용등을 관리한다. 

 

이런식으로 여러 매체에서 링크가 오고 가면 매체의 주소, 혹은 일련번호를 알아야 받고 보내는 기능을 할 수 있을 것이다. 즉, 각 매체의 주소 역할을 하는 것이 IP주소(internet protocal address), MAC주소(media access control address)가 하는 역할이다.

----------------------------------------------------------------------------------------------------------------------------

<IP 주소 : 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호. >

 

<MAC 주소 : 데이터 링크 계층에서 사용하는 네트워크 인터페이스에 할당된 고유식별 주소, 고유 식별자이고, 물리주소나 하드웨어 주소 라고도 불립니다.>

 

이렇게 글로 쓰여진 정의만 보면 두개의 역할에 대해서 헷갈릴 수 있다. 그래서 다음과 같은 예시로 정리해 보았다.

어떤 기숙사가 있다고 생각해보겠습니다.

 

기숙사는 이름은 '코코넛 기숙사'라고 하겠습니다. 

위의 그림처럼 여러 학생들이 기숙사에서 살고 있습니다.

각 방에 있는 학생들에게 택배를 주기 위해서는, '코코넛 기숙사'의 주소로 택배를 보내는 것 이외에 호수나 받는 학생의 특징을 적어야 합니다.

택배를 학생에게 주기 위해서는 학번을 추가적으로 적는다고 하겠습니다.

위와 같은 상황에서 ip주소와 맥 주소는 각각 아래의 예시와 대응됩니다.

 

ip 주소는 주소 -> '코코넛 기숙사'

mac 주소는 학번 -> '20184500123'

그림으로 표현하면 위와 같습니다.

택배를 보내기 위해서 빨간 이동 경로처럼 '네트워크에서 목적지에 가기 위한 주소'가 필요합니다.

목적지에 도착하면 내부의 다양한 '학생들을 구분하기 위한 주소'가 필요합니다.

 

요약

ip 주소는 보낸 주소에서 부터 도착지 주소까지의 경로를 찾기 위해 필요한 주소입니다.

mac 주소는 주소 내에서 다양한 기기들이 있을 , 해당 기기들이 각각 어떤 기기들인지 식별하기 위하여 필요한 주소입니다.

----------------------------------------------------------------------------------------------------------------------------------------------

이렇게 데이터 링크는 주소를 확인, 데이터 전송 준비, 등 을 하여 물리계층에서 보내는 역할만 수행할 수 있도록 준비합니다.

 

 

3계층 - 네트워크계층(network layer)

네트워크 계층은 어떤 송신자에게 보낼 것이고, 어떤 경로로 보낼 것이며, 어떤 방식으로 보낼 것이며, 목적지까지 가장 안전하고 빠르게 전달하는 (라우팅)기능을 선택하는 역할을 수행합니다.

 

여기서 사용되는 방법(프로토콜)은 종류가 다양하고 라우팅하는 기술도 다양합니다.

 

대표적인 장비로는 라우터이며, 요즘은 스위치라는 장비에 라우팅 기능을 같이 결합한 장비도 있습니다.

 

네트워크 계층의 대표적인 프로토콜은 IP(internet protocal)입니다.

3계층과 관련된 장비인 라우터를 통해 다른 네트워크상의 컴퓨터와 패킷을 주고 받을 수 있는 최적의 경로를 탐색하게 되는데, 이때 IP주소를 이용하여 탐색하게 됩니다.

 

4계층 - 전송계층(transport layer)

4계층인 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다. 전송계층에는 오류를 점검하는 기능이 있어 오류가 발생하면 데이터를 재전송하도록 요청한다.

 

뿐만 아니라, 한 가지 기능이 더 있는데. 바로 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별도 한다.

여기서 애플리케이션이란 웹브라우저, 메일프로그램, 혹은 서버 클라우드 등 사용자 서비스에 대한 정보를 의미한다.

 

전송계층은 연결형 통신과 비연결형 통신 두가지로 나눠서 볼 수 있다.

전송에 있어서 신뢰성, 정확성, 효율성을 따지게 되는데 

정확하게 정달하는 것을 목표로하는 것을 연결형 효율적으로 데이터를 보내는 것을 비연결형이라고 한다. 

 

연결형 통신 방식에는 TCP(transmission control protocol)

비연결형 통신 방식에는 UDP(user datagram protocol)

를 사용한다.

 

TCP : 전송을 제어하는 프로토콜 즉, 인터넷상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다.

 

TCP는 일반적으로 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 배달되는 패킷을 추적 관리하게 됩니다.

TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용합니다. TCP 아래와 같은 특징을 지닙니다.

 

[ TCP 특징 ]

  • 연결형 서비스로 가상 회선 방식을 제공한다.
  • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
  • 흐름 제어 및 혼잡 제어.
  • 높은 신뢰성을 보장한다.
  • UDP보다 속도가 느리다.
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식.

----------------------------------------------------------------------------------------------------------------------------------------------

여기서 3 - way handshaking이란 전송 제어 프로토콜(TCP)에서 통신을 하는 장치간 서로 연결이 잘 되어 있는지 확인하는 과정, 방법을 의미합니다.

 

간단하게 비유하면 a b에게

1. b 내말 들리니?  b a에게

2. 잘들려 a 너도 내말 들리니?

3. 잘들려! 같은 방법으로 서로 의사소통이 환경이 구성 되었는지, 연결이 되었는지 확인하는 과정이다.

네트워크 상에서는 서로 패킷을 주고 받아야 함으로 위와 같은 과정을 수행합니다.

* TCP의 3-way Handshaking 과정

 

 SYN 은 synchronize sequence numbers ACK는 acknowledgements 의 약자.

 

[STEP 1]

 A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태  가 되는 것이다.

 

[STEP 2] 

 이때 서버는 Listen 상태로 포트 서비스가 가능한 상태여야 한다. (Closed :닫힌상태) B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.

 

[STEP 3]

 A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.

 위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP 3 Way handshake 방식입니다.

 

이렇게 3번의 신호 과정을 주고 받는다 해서 3-way Handshaking 이라고 합니다.

 

그렇다면 4-way handshaking도 같이 한번 확인해 보겠습니다.

4-way handshaking이란 TCP을 해제하기 위한 과정입니다. 

* TCP의 4-way Handshaking 과정

 

[STEP 1]

클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.

 

[STEP 2] 

서버는 일단 확인메시지를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 TIME_WAIT상태다.

 

[STEP 3]

서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.

 

[STEP 4]

클라이언트는 확인했다는 메시지를 보낸다.

 

그런데 만약 "Server에서 FIN을 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN패킷보다 늦게 도착하는 상황"이 발생한다면 어떻게 될까요? 

 

Client에서 세션을 종료시킨 후 뒤늦게 도착하는 패킷이 있다면 이 패킷은 Drop되고 데이터는 유실될 것입니다. 

이러한 현상에 대비하여 Client는 Server로부터 FIN을 수신하더라도 일정시간(디폴트 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거치게 되는데 이 과정을 "TIME_WAIT" 라고 합니다.


출처: https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake [Mind Net]

----------------------------------------------------------------------------------------------------------------------------------------------

 

[UDP 특징]

  • 비연결형 서비스로 데이터그램 방식을 제공한다

  • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.

  • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.

  • 신뢰성이 낮다

  • TCP보다 속도가 빠르다

 

위에서 말했지만 UDP는 비연결형 서비스이기 때문에 연결을 설정하고 해제하는 과정이 존재하지 않습니다. 그럼으로 패킷을 받고 보내고 하는 과정에 패킷에 순서를 부여하거나 재조립을 하거나 흐름제어 또는 혼잡제어 같은 기능도 처리하지 않기에 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만 신뢰성있는 데이터의 전송을 보장하지는 못합니다. 그렇기 때문에 신뢰성보다는 연속성이 중요한 서비스입니다.  예를들면 실시간 서비스, 스트리밍에 자주 사용됩니다.

 

[UDP 서버의 특징]

  • UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없다.

  • 소켓 대신 IP를 기반으로 데이터를 전송한다.

  • 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.

  • 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.

  • 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.

  • 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다.

TCP UDP 비교

 

 

5계층 - 세션 계층(session layer)

세션계층에서 부터는 애플리케이션과 관련된 계층이라고 할 수 있습니다. 세션(session)이라는 말 뜻은 대화가능한 송신과 수신이 가능하다라는 뜻입니다. 대화 관리자로 통신장치들 간의 상호작용을 유지하고 동기화하며 원활한 흐름을 유지하기 위한 단계를 뜻하기도 하며.

데이터가 통신하기 위한 논리적인 연결을 의미하기도 합니다. 

예를 들어 설명하면, 

각국의 정상이 만나서 여러가지 안건에 대해 논의하고 의결서(계약서)를 써서 서로 나눠가지는 정상회담이 있다고 가정합니다.

 

[주요기능]

  • 접속 및 접속 해제 
  • 데이터 교환 
  • 대화 관리자 
  • 에러복구

세션계층에서  세션을 생성하고 "동기점"이라는 것을 설정합니다.

동기점이란 두 개의 프로세스(서로 대화하려는 프로세스들)가 메시지 전송과정에서 생기는 오류를 복구하려고 시도할 때 메세지가 어디까지 전송이 되었는지 어떻게 오류가 되었는지 확인하기 위해 전송한 곳까지 점을 찍어두는 일을 의미합니다.

동기점을 찍어두면 동기점 이전과 이후를 전송된 메시지와 비교하여 오류난 곳을 찾아 그 곳부터 다시 재전송을 합니다.

동기점은 주동기와 부동기로 나눠져 구분 짓는데 주동기가 큰다위로 나누기, 부동기가 작은단위로 나누기로 생각하면 편합니다.

 

세션계층에서는 두 프로세스간에 대화를 관리하기 위해서(어떤 대화를 할지, 어떤 내용을 전달할지 허가 해주는 일) "토큰" 이라는 특수 메시지를 사용합니다.

토큰을 가지는 것은 특정 대화를 할 수 있는 권리를 소유한다는 개념이되는데 토큰의 종류는 세가지로 나눠집니다.

"데이터 토큰", "해제토큰", "동기 토큰", "액티비티 토큰"

 

데이터 토큰은 데이터를 전송할 수 있는 권리

해제토큰은은 연결을 해제할 수 있는 권리

동기 토큰은 동기점을 설정할 수 있는 권리

액티비티 토큰은 전송하려는 메시지의 단위를 설정하는 토큰

으로 구분합니다.

여기서 액티비티 토큰의 권한인 메시지 단위는 대체로 파일단위로 많이 사용합니다.

 

세션 연결을 위해서는 서버가 필요한데 서버는 세션 연결을 위해 2가지를 지원합니다.

1. 다중 세션 연결 지원

2. 단일 세션 연결 지원

 

<다중 세션 연결 지원>

그림과 같이 여러 세션이 하나의 서버를 통해 각 세션과 연결하는 것을 의미합니다. 이 연결을 장단점이 존재합니다.

채팅으로 비유하자면 하나의 방에 여러 대화자가 참여하는 것으로 비유할 수 있습니다.

<장점>

1. 서버가 하나임으로 과정이 단순하고, 연결이 쉽다.

2. 서비스 시간이 짧은 응용 환경에서 유리하다.

 

<단점>

1. 만약 서비스가 길게 필요한 세션들이 존재할 경우 다른 세션의 자원(대기시간, 순서할당)이 부족

2. 세션이 많아지면 많아질 수록 서버의 과부하

 

 

<단일 연결 지원>

하나의 대표서버에서 세션들이 서비스를 필요로 할 때 마다 자식 서버를 할당해주는 방식을 사용합니다.

처음 서비스가 필요한 세션이 대표서버에 서버 할당을 요청하고, 대표서버에서 새로운 서버를 할당하고 서비스를 시작할 수 있게 만들어줍니다.

즉, 채팅방에서 대화가 필요한 사람들끼리 채팅방을 만드는 것으로 비유할 수 있습니다.

<장점>

1. 세션관리가 수월하다.

2. 자원관리가 수월하다.

 

<단점>

1. 서버의 수가 많아지면 오버헤드가 증가함으로 따로 서버를 생성하고 서비스 실행 가능 상태로 만들어주는 시간이 길어질 수 있다.

 

 

위에서 언급한 UDP, TCP/IP 중에서 TCP/IP의 경우 단일 연결 지원을 사용한다.

 

 

 

6계층 - 표현계층(presentation layer)

 

표현계층은 메세지의 표현 방법에 대해 다룬다.

 세션게층에서 프로세스가 주고 받은 메세지를 어떻게 표현 할 것이고, 해석 기능을 제공한다.

송신프로세스가 전달하는 의미를 수신 프로세스에서 정확히 이해할 수 있게 만들어준다.

 

데이터를 표현하는 방법은 여러가지가 있고 컴퓨터마다 다르다. 보통 문자를 표현하는 방법으로 흔히 우리가 아는 ASCII코드와 EBCDIC코드를 사용하는 방법으로 나눠지는데 컴퓨터끼리 소통을 하려면 서로 같은 문법을 사용하던가 아니면 변환하는 과정이 필요하다.

표현계층에서는 표현하는 문법, 규격을 정하는 계층이라고 생각하면된다.

 

 

 

7계층 - 응용계층(application layer)

 

응용계층은 사용자의 다양한 네트워크 응용환경을 지원하는 역할을 수행한다. 기능은 한 분야에 한정되지 않고 매우 광범위하기 때문에 모든 내용을 다룰 수 없다. 다시말해 사용하는 사용자 혹은 개발자에 따라 개발하는 API, 디자인 등 프로그램 환경에 따라 응용계층은 달라질 수 있다. 

큰 범위의 모델로 예시로 들면

"클라이언트-서버 모델" - 단적인 예시로 카카오톡 같은 서비스를 생각하면 쉽다.

"클라우드 서비스" - 웹을 이용한 서버를 통해 우리는 편리하게 서비스를 사용하고 있다.

 

즉 정리하면  사용자가 OSI 환경(네트워크)을 이용할 수 있는 서비스를 제공하는 계층이라고 생각하면 된다.