OSI 7 layer

jaden_94·2020년 10월 15일
1
post-thumbnail

통신은 어떻게 이루어 지는가?

컴퓨터의 통신은 어떻게 이루어지는지 궁금한 적이 있을 것이다. 컴퓨터의 파일이나 프로그램은 결국 이진수, 즉 0 과 1로 이루어진 데이터의 나열임으로
A 컴퓨터에서 B 컴퓨터로 파일을 전송하고 싶다면, 0 과 1의 나열을 전송하면 통신은 이루어지게 된다.
두 대의 컴퓨터를 전선으로 연결하고 1을 보낼 땐 +5v 전기를 전선으로 보내고
0 을 보낼 땐 -5v 전기를 전선으로 흘려보내면 0 과 1의 전송이 가능해 지고
이 말은 모든 종류의 파일, 프로그램이 전송이 가능해진다는 말과 같다.

하지만, 이렇게 쉬워보이는 과정에도 많은 장애요소들이 존재하고, 그 장애요소로 인해 통신이 올바르게 이루어지지 않을 수 있다.

예를들어, A 컴퓨터와 B 컴퓨터가 동시에 C컴퓨터에 데이터를 전송한다면 C컴퓨터가 받는 0 과 1의 나열은 A 가 보낸 데이터(0101)와 B(1010) 가 보낸 데이터를 구분하지 못하면(0101 / 1010 이 아니라 01011 / 010 으로 해석한다면?) 아무런 의미 없는 나열이 될 수 있다. 더욱이, 전선과 같은 매체들의 특성상 모든 주파수의 전자기파를 통과시킬 수 없는데, 0과 1로 이루어진 전자기파 즉 수직선과 수평선이 있는 전자기파는 0 ~ 무한대(Hz) 의 주파수 범위를 가지게 되고 전선은 이런 전기신호를 통과시킬 수 없게 된다.

통신을 위해 이러한 수 많은 장애요소들을 해결해하는 방법들을 함구해야 했고,
우리는 결국 장애요소들을 극복하고 통신을 할 수 있게 되었다.
이때 장애요소들에 따른 극복 방법들을 계층별로 분류하여 설명하는 것 그것이 바로 OSI 7 Layer 이다.

OSI 7 layer?

OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것

1.Pysical Layer

앞서 말했듯, 전선은 모든 주파수의 전자기파를 전송할 수 없다. 그렇기 때문에
송신측에서는 0과 1로 이루어진 디지털 신호를 아날로그 신호로 변환하여 전송해야만 한다. 반대로 수신측에서는 전달받은 아날로그 신호를 다시 0 과 1의 나열로 해석할 수 있어야 한다.

Physical Layer 의 역할
0과 1의 나열을 아날로그 신호로 변환 - > Encoding
아날로그 신호를 0과 1의 나열로 해석 - > Decoding

여기서 이 역학을 수행하는 것은 하드웨어 장비인데,
PHY칩 이 바로 그 역할을 수행한다

인터넷상에서 전세계의 수 많은 컴퓨터들이 스위치와 허브를 통해 연결되어 있다.
이 때, A, B, C 가 동시에 D 에 데이터를 송신한다면 D는 수신한 데이터를 A, B, C 로 각각 구분할 필요가 있다. 이 구분을 위해 송신자들은 약속된 특정 비트열을 보내려고 하는 데이터에 앞 뒤로 붙여서 보내 구분자 역할을 하게한다. 수신자는 약속된 비트열 구분자를 통해 어떤 컴퓨터가 어떤 데이터를 보내는지 구분할 수 있게 되고 이 작업을 Framing 이라한다.

Data Link Layer 의 역할
전송할 데이터에 header, trailer 를 합치는 framing 과정을 통해
여러 컴퓨터 간의 통신을 가능하게 해주는 역할 수행

여기서 이 역학을 수행하는 것은 하드웨어 장비인데,
랜카드가 바로 그 역할을 수행한다

3.Network Layer

수 많은 컴퓨터가 연결되어 있는 인터넷 상에서 A 가 B로 데이터를 전송하려면 필요한 것이 무엇일까? 그것은 바로 B 컴퓨터의 주소이다. 그 주소를 우리는 IP 라고 부른다. A 가 B의 IP주소를 알았다면, 해당 IP 주소로 데이터를 보내면 되는데 이 때 수 많은 라우터를 거쳐 B에 도달하게 됨으로 A는 전송할 데이터에 B의 IP 주소와 데이터를 함께 포장해 전송하게 되고 이 포장의 이름을 패킷이라고 한다. A 가 B에게 데이터를 보내는 동안 총 3개의 라우터를 거친다고 생각해보면, A 는 IP와 전송할 데이터(2단계를 거쳤음으로 framing되어있음) 를 담은 패킷을 자신과 연결된 라우터로 보내고, 라우터는 패킷을 까보고 자신과 연결된 컴퓨터 중 해당 IP 주소를 가진 컴퓨터가 있는지 확인 후 없다면 다음 라우터로 보내게 된다. ( 이 때, 라우터가 다른 많은 라우터들과 연결되어 있다면 어떤 라우터로 패킷을 보내야 할 지 알아야하는데 이 과정은 추후에 라우팅 방법을 학습하여 알아보도록 하자 ) 2번 라우터 역시 1번 라우터와 같은 과정을 통해 3번 라우터로 패킷을 전송하고 3번 라우터는 자신과 연결된 해당 IP를 가진 컴퓨터에게 해당 패킷을 전달하게 된다.

Network Layer 의 역할
전송할 데이터에 IP주소를 더한 패킷을 바탕으로 전송 방향을 찾고(routing)
자신 다음 라우터로 해당 패킷을 전송(forwarding) 하는 것

이 기술은 운영체제이 커널에 소프트웨어적으로 구현되어 있다.

4.TransPort Layer

위에서 알아 본 3개의 계층 덕분에 인터넷 상의 모든 컴퓨터가 통신을 할 수 있게 되었다. 그런데, 컴퓨터에는 다양한 프로그램이 실행되고 (프로세스) 있고, 그렇다면 전달 받은 데이터는 어떤 프로세스를 위한 데이터인지는 어떻게 구분해야할까? 이를 구분하기 위해 프로세스들은 서로 겹치지 않은 정수값인 포트번호를 가지고 있다.

Transport Layer 의 역할
전송할 데이터가 어떤 프로세스를 위한 데이터인지 구분하기 위해 Port 번호라는
개념을 사용하여 특정 프로세스를 위한 데이터를 구분하는 것

이 기술 역시 운영체제이 커널에 소프트웨어적으로 구현되어 있다.

5.Application Layer

갑자기 왜 마지막 계층인 Application Layer 로 넘어왔을까?
우선 밑의 그림을 확인해보자

사실 현대의 인터넷은 OSI 모델이 아닌 사진의 가장 우측, 업데이트된 TCP/IP 모델을 따르고 있다.TCP/IP 5계층 모델은 OSI 7계층 모델의 Application, Presentation, Session 계층을 통합해 Application 계층으로 구분 짓고 있기 때문에, 이 계층에 대한 설명으로 포스팅을 마무리 하겠다.
운영체제의 TransPort Layer에서 제공하는 API 를 활용해 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍(네트워크 프로그래밍) 이라고 하는데. 이렇게 프로그래밍을 할때 자신만의 프로토콜을 만들 수 있다. 대표적인 Application Layer 프로토콜의 예는 HTTP가 있을 수 있다.

Application Layer 의 역할
운영체제의 TransPort Layer에서 제공하는 API 를 활용해 통신가능한 프로그램을 만들 때 프로그램의 효용을 위해 직접 프로토콜을 정의하고 이 프로토콜을 붙여줄 인코더와 해석 할 디코더가 직접 구현된 계층
대표적인 예 : HTTP

[도움을 얻은 곳]

  • https://ko.wikipedia.org/wiki/OSI_모형
  • https://www.youtube.com/watch?v=1pfTxp25MA8&t=385s

0개의 댓글