middlemoon

OSI 7계층에 대하여 정의해보기 본문

Network

OSI 7계층에 대하여 정의해보기

중대경 2023. 4. 9. 20:00

1계층 Physical layer)


두 대의 컴퓨터가 통신하려면 어떻게 해야할까?

 

컴퓨터는 0과 1로 이루어져있다라는 말을 들어보았을 것이다.

+5v에서 -5v가 만나는 지점이 있다. 

 

x축은 시간이며 y축은 전압이라고 했을 시 시간당 전압을 나타내는 그래프이라 가정하고

1초당 주파수는 총 4번진행이 되지만, 흐름에 따라 주파수가 모두 통과되지는 못한다.

 

주파수가 1초당 4번이 진행이 안되는 경우, 다른 주파수는 경우에따라 모두 통과하지 못하는 특성을 갖는다.

즉, 컴퓨터는 위의 사진처럼 0에서 무한대[Hz]의 주파수 범위를 가지게 되는데, 수직선과 수평선이 명확하게 존재하는 위의 사진은

전기신호를 통과시킬 전선은 없다. 첫번째 사진처럼 플로우에 맞게 나오는 통신을 하여야한다.

 

 

아날로그 신호

 

즉 두대의 컴퓨터가 통신하려면 0101 0101의 신호를 전송하기 위해 A의 컴퓨터에서 전선을 통해 보내면 아날로그 신호를 받는 컴퓨터는 해석을 하여 0101 0101이라는 것을 얻는 과정이 기본적인 신호이다.

 

 

1. What is Physical layer?

(물리계층 1계층)

Encoding - 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘러보냄

Decoding - 아날로그 신호가 들어오면 0과 1의 나열로 해석

Module - 물리적으로 연결된 두대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈(우리가 프로그래밍을 만들때 사용되는 함수)

 

 

 

 

 

2계층 Data-link Layer)


2계층 데이터링크층을 설명하기 전에, 한가지 알고 갈 필요가 있는데 A와 B의 컴퓨터가 있다고 가정해보자.

A는 B에게 데이터를 보내고 싶어한다. 그런데 A는 C에게도 데이터를 보내야되는데 이렇게 되면 A는 C뿐만 아니라 D, F,G 등 너무 많은 사람들에게 보내야할텐데 이것은 물리적인 시간과 비용이 많이 드는 단점이 있을것이다.

 

예를 들어, 어떠한 선(------) 이 선을 구리선이라고 가정해보자. 전선같은 역할을 하는것이다

 

A --- D --- F --- G --- B  이 부분에서 A는 B에게 0010 1100 이라는 전자기파를 보내고 싶어하여 구리선으로 데이터를 흘려보낸다.

그러나 D, F, G에게도 전달이 되는데... A는 B에게만 보내고 싶었지만 원치않는 결과를 얻게되는데, 이런 이슈들을 해결하기 위해

어떠한 선을 더미허브에 집어넣어 아래와 같은 형태로 넣게된다.

 

위의 문제를 해결하고자 A가 오로지 B만을 통신하게 도와주는 개념을 스위치 라고 한다.

스위치에도 만약 A에 해당하는 컴퓨터가 있고 B에만 해당하는 스위치 각각 스위치가 있을텐데, 떨어져 있다면 과연 통신이 안될까?

그것은 아닐것이다. 그렇게되면 우리가 흔히 쓰는 공유기에 개념이 존재하지 않게되는데

이러한 문제를 해결하고자 나온 개념이 바로 라우터(Router)의 개념이다. 전혀 다른 라우터안의 A,B가 있을 경우

라우터 통신을 하여 불필요한 데이터통신을 해결해주는 개념이라 생각하면 편하다.

 

B,C,D 라는 컴퓨터가 각각 (0101, 1111, 0001)이라는 데이터를 A에게 보냈다고 가정하자.

그렇게되면 A는 010111110001이라는 데이터를 전송받게되는데 이렇게되면 구분히 힘들어 A는 식별이 힘들것이다.

그리하여 특정한 비트열을 붙여서 앞에는 (2222) 뒤에는 (3333) 이라는 비트열 수가 붙는다고 가정하자.

그렇게되면 B는 A에게 2222 0101 0101 3333 이라는 수를 보내게되고 A는 0101 0101 이라는 데이터를 받을 수 있게 된다. 

 

 

 

 

2.What is Data-link Layer?

(데이터링크 2계층)

같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고받기위해 필요한 모듈정도라고 생각하면 좋을 것 같다.

 

 

 

 

 

 

3계층 Network Layer)


 

 

 

 

A가 55.10.54.75라는 데이터를 B에게 보내려한다. A에서 B로 통신하기 위해서는 B의 IP주소를 알아야한다.

여기서 55.10.54.75는 컴퓨터가 갖는 고유한 주소, 통상 IP주소라고 칭한다.

DNS의 한 개념인데 우리가 흔히 쓰는 도메인(ex-www.naver.com)을 입력하면 이 주소는 IP주소로 변환되어 사용을 할 수가 있다 !

 

55.10.54.75 data를 패킷이라고 가정하였을 때, 라우터인 (가)는 다른 컴퓨터인 IP 55.10.54.75가 맞는지 확인을 하게 되고

(마)로 이동한다. 그 후 (바)로 이동하면 다시 패킷으로 포장한 뒤 (라) 전달 후 원하는 B에 전달되는 과정이다.

 

3.What is Network Layer?

(네트워크 3계층)

많은 연결로 이루어지는 네트워크속에서 A에서 B로 전달되는 목적있는 데이터를 전송하기 위해

IP(www.naver.com = 55.10.54.75)라는 길을 찾고(routing) 마 -> 바-> 라-> B 처럼 자신 다음의 라우터에게 데이터를 넘겨주는것(Forwarding)의 과정이다.

 

 

 

 

 

4계층 Transport Layer)


세개의 상황이 있다고 가정해보자.

 

하나는 "Hello World", "OSI 7Layer", "Computer Science" 라는 데이터들을 

내가 작업하고 있는 컴퓨터안에 받는다고 가정해보고, 두번째는 저것들을 받을 수 있도록 실행중인 프로그램이 있을것이다.

우리가 흔히 사용하고 있는 크크오톡, 나이버(프로세스)가 있다.

 

데이터를 받는 컴퓨터(내가 작업하고 있는 컴퓨터)는 맨 위  "Hello World", "OSI 7Layer", "Computer Science" 라는 데이터들을

크크오톡, 나이버(프로세스)에 나누어 주려고 한다.

그렇다면 각 해당하는 데이터들을 프로세스에 각각 담기위해서 우리가 해야하는 행동은 무엇일까?

 

 

프로세스들은 포트 번호라는 것을 가져야하는데 

즉 크크오톡의 포트번호가 8081이라고 가정하고, 나이버가 9000이라는 포트번호라고 가정한 뒤,

"Hello World"를 보내기위해서 해당하는 Port : 8081 "Hello World"라는 포트번호와 함께 데이터가 수신되어야 하는 과정이다.

그렇기 때문에 전송자는 8081이라는 포트번호까지 미리 알아야 크크오톡에 데이터를 보낼수 있다는 사실이다.

 

 

4.What is Transport Layer?

(전송포트 4계층)

포트번호를 사용하여 최종 컴퓨터 도착지인 프로세스에 까지 데이터가 도달하게 하는 모듈이다

 

 

 

 

7계층 Application Layer)


TCP/IP 소켓 프로그래밍

  • 운영체제중에 4계층이 제공하는 API를 활용하여 통신가능한 프로그램을 만드는것을 TCP/IP소켓 프로그래밍이라고 칭한다.
  • 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로 만들어 동작이 가능하게끔 만든다.

Application Layer는 다른 계층과 마찬가지로 인코더(Input), 디코더(output)가 존재하며 

대표적으로 HTTP로 인코딩, 디코딩 과정이 존재한다.

 

사실은 클라이언트 측에서 "안녕"이라는 데이터를 보내면 서버에서 요청된 데이터 "안녕"을 받아 클라이언트에게 응답을 하면

클라이언트는 화면에 전달받은 데이터들을 확인할수 있다. 서버에서도 클라이언트에 대한 데이터를 전달받을 수 도 있는데

 

전송 측 : 7계층 Http encoder "안녕" Stauts code : 500 "안녕" -> 4계층 Port : xxxx Status code : 500 "안녕" -> 

3계층 0000 Port : xxxx Stauts code : 500 "안녕" 1111 -> 2,1계층 

수신 측 : 1-3계층 decoder -> Port : xxxx Status code : 500 "안녕"으로 해석 -> 4계층  Stauts code : 500 "안녕" ->

7계층 "안녕" 수신완료

 

 

 

 

 

TCP/IP와 OSI Layer7의 전망?

OSI Layer 7 Model에서 TCP/IP Model로 점유율이 높아지고 있는 추세이다.

Session Layer, Presentation Layer에 대한 부분들은 Application Layer와 통합된 개념이라

생각하면 좋을 것 같다.

 

오늘날 TCP/IP Updated를 많이 사용하고 있다.

 

 

 

 

 

 

 

출처 : https://www.youtube.com/watch?v=1pfTxp25MA8&t=1290s

'Network' 카테고리의 다른 글

CentOS7로 SSH연결 및 완료시키기  (0) 2023.04.08
Comments