#오류에 대해 지적해 주시면 수정하겠습니다.

 

OSI 7 Layers은 왜 필요해?

아마 컴퓨터공학을 전공했다면, 한번쯤을 들어봤을 OSI 7계층,,

이거는 왜 존재해서 날 힘들게 하는 걸까?

 

자 예를들어 차가 고장났다고 생각해보자. 그러면 어디가 고장났는지 찾아볼 것이다.

봤더니만 타이어가 펑크가 난거였다. 그러면 타이어만 교체해 준다면 차가 다시 작동할 것이다.

이런일이 가능한 이유는 이미 각각 부품이 하는일이 명확하게 정해져 있기 때문이다.

하지만 해당 부품이 다른 기능에 관여한다면 어떨까? 예를 들어 어떤 타이어는 엔진에도 관여하는 것이다!

그럼 그 다른 부품까지 전부 갈아야 하는거다. 뿐만 아니라 고치는 사람 입장에서도 굉장히 힘든 일이 될꺼다. 어떤 회사의 어떤 부품은 어디까지 관여하고 또 관여 안하는지 모두 알아야 하니까!

https://jhnyang.tistory.com/194

 

이는 네트워크의 세계에서도 마찬가지다.

인터넷이 안된다고 하자. 만약 어떤 장비가 어떤 부분에 관여할지 정해져있지 않다면 우리는 정말 모든 회선과 부품을 바꿔야 할 수 도있다. 초기 네트워크 장치는 실제로 중구난방이었다. 회사 장비마다 호환되지않고 맡은 역할이 제각각이었다. 이러한 문제를 개선하기위해 국제표준화기구(ISO)1984년에 OSI 7계층을 발표한 것이다!

 

 

 


 

 

OSI 7 계층

모든 계층은 독립적이며, 하위 계층의 기능은 이용하고, 상위 계층에게는 기능을 제공한다.

모든 계층에는 기본적으로 인코더와 디코더가 있다. 이제 1계층 부터 살펴보자.

 

 


 

 

1계층 :  Physical Layer

아래와 같이 두 컴퓨터가 통신을 하고 싶다. 

 

이게 근데 디지털 신호는 바로 전선으로 전달될 수 없다. 그래서 데이터를 아날로그 신호(전기신호)로 바꿔서 전송한다. 그리고 전선이 감당할 수 있는 만큼 적당한 단위로 끊는일도 필요하다. 이러한 일들을 하는 것이 1계층의 인코더, 디코더라고 한다.

다음과 같이 데이터가 1계층 인코더를 거쳐 아날로그 신호가 되어 전선을 타고 목적지에 도착한다.

그럼 목적지에 있는 1계층 디코더가 아날로그 신호를 원래 데이터로 바꿔준다. 해당 과정은 모두 하드웨어적으로 구현되어있다고 한다!

 

 

 

 

2계층 : Data Link Layer

이번에는 좀 더 많은 컴퓨터들이 통신을 하고 싶다!

아래에 체크 표시된 컴퓨터끼리 통신이 하고싶다.

 

 

 

이제는 목적지 주소가 어딘지 명확하게 할 필요가 있어졌다. 데이터의 앞뒤에 특정한 비트열을 붙여서 목적지도 명확하게 하고 호옥시 놓친 비트가 있지는 않은지 검사한다. 이때 사용하는 주소가 MAC주소다. 또한 앞에 붙은 비트열을 Header, 뒤에 붙은 비트열을 trailer라 한다.

그러한 형태로 만드는게 2계층 인코더가 해야할 일이다! 또한 그러한 형태(단위)를 Frame이라 한다.

 

 

 

통신하는 과정을 보자면, 출발지에서 데이터를 2계층 인코더가 Frame단위로 인코딩한다. 그 인코딩 된것을 1계층 인코더가 아날로그 신호로 변경해서 목적지로 이동한다.

그럼 목적지에 있는 1계층 디코더가 아날로그 신호를 디지털 신호로 변경하고, 2계층 인코더가 Framing되어있는 데이터를 디코딩한다.

 

 

 

 

 

3계층 : Network Layer

이번에는 아까보다 좀 더 많은/더 멀리있는 컴퓨터와 통신을 하고 싶다!

아래에 체크 표시된 컴퓨터끼리 통신이 하고싶다.

 

역시 해당 컴퓨터를 찾아가기 위해서는 주소가 필요하다. 이때 주소를 IP주소라 부른다. 2계층에서 MAC주소를 아는데, IP주소를 따로 알아야할까? 이에 대해서는 IP주소와 MAC주소에 관한글에서 더 자세히 다루겠다.

어쨌든, IP주소가 필요하다. 

3계층의 인코더는 데이터에 IP주소를 붙여준다. (IP주소만 있는건 아니다)

이러한 단위를 Packet이라 한다.

 

위에 그림과 같이, 출발지에서 데이터를 우선 3계층 인코더가 packet단위로 만들어주고, 2계층 인코더가 앞뒤로 비트열을 붙여 framing해주고 1계층에서 아날로그 신호로 변경해 목적지로 보낸다.

마찬가지로 목적지에서는 1계층 디코더가 제일먼저 아날로그 신호를 디지털신호로 변경해주고, 2계층 디코더가 frame의 헤더와 트레일러를 분리하고, 3계층 디코더가 데이터만 남기고 디코딩해준다.

3계층은 1.2계층과 달리 운영체제의 커널에 소프트웨어로 구현되어있다.

 

 

 

 

4계층 : Transport Layer

3계층까지로 목적지까지 도착하는건 가능해졌다. 하지만 목적지 컴퓨터의 어느 프로세스에게 줘야할지는 알 수가 없다. 

목적지 컴퓨터에 디스코드와 카카오톡이 있다고 할 때 우리는 데이터를 카카오톡에게 줘야한다고 해보자.

 

 

 

 

프로세스끼리도 각각을 식별할 수 있는 번호가 있는데 그 번호를 포트번호라 한다.

그럼 목적지에 원하는 프로세스에게 데이터를 전송하기 위해서 포트번호가 필요하다는 것을 납득할 수 있다.

4계층 인코더는 포트번호를 붙여 segment/datagram단위로 인코딩한다. 각각 계층마다 해당 역할을 하는 프로토콜이 여러가지가 있는데, 4계층에는 대표적으로 TCP라는 프로토콜과 UDP라는 프로토콜이 있다. TCP에서는 인코딩 단위를 segment라 하고, UDP에서는 Datagram이라 한다. 어쨌든 둘다 포트번호는 포함한다.

4계층까지 포함한 통신과정을 보자면 아래와 같다.

목적지에 있는 데이터를 4계층 인코더가 인코딩 하고 이하 3계층과 같다.

목적지에 도착해서도 1계층->2계층->3계층->4계층 순서로 디코딩 과정이 진행된다.

 

 

5,6,7계층

사실 5,6,7계층은 명확하게 이해가 되지 않았다.

통신 관점으로 설명을 하였는데, 현재 사용하는건 TCP/IP모델이라 그런걸까 각 계층에 대한 명확한 설명은 찾지 못했다.

짧게 설명하자면 다음과 같다.

 

5계층 : Session layer전송단위는 message이며, 실제 이용자의 응용프로그램 사이에서 세션이라 불리는 연결을 확립하고 유지하며 동기화하는 기능을 수행한다.

 

6계층 : Presentation layer전송단위는 message이며, 송,수신자 둘 다 데이터를 이해할 수 있도록 데이터의 표현방식을 바꾼다.

 

7계층 : Application layer

전송단위는 message이며, 최 상위 계층으로 사용자가 네트워크에 접속하는 것을 가능하게 한다. 그리고 사용자의 인터페이스를 제공한다.

 

명확하게 이해가 되는 그날까지,,,,

 


 

마무리

OSI 7계층은 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이며 다음과 같이 계층구조를 가지고 있고 각 계층은 다른 계층으로부터 독립적이다.

캡슐화 되는 방향은 7->1방향이며, 반캡슐화는 1->7방향으로 이루어진다.

 

 

 

 

 


References

https://www.youtube.com/watch?v=dK5cRUCTDqE

https://www.youtube.com/watch?v=1pfTxp25MA8

https://jhnyang.tistory.com/373

https://jhnyang.tistory.com/403?category=947031

https://jhnyang.tistory.com/194

https://hahahoho5915.tistory.com/12

'Network' 카테고리의 다른 글

[Network스터디]IP address/MAC address(+깨알ARP)  (0) 2021.09.26
[Network스터디]TCP와 UDP  (0) 2021.09.19

+ Recent posts