OSI 7 Layer TCP/IP

Jae Hoon Shin, 신재훈, Noah·2021년 1월 18일
0

일단 컴퓨터와 컴퓨터가 통신을 하려면...

두대의 컴퓨터를 전선 하나로 연결한다고 상상해보자.

0과 1을 주고 받을 수 있으면 모든 데이터를 주고 받을 수 있으므로 이제 두 컴퓨터는 모든 데이터를 주고 받을 수 있게 되었다!

Physical Layer

두 대의 컴퓨터가 통신하려면 0과 1을 주고받을수 있으면 된다.
그리고 2대의 컴퓨터가 전자기파 (주파수)를 주고받으면 서로 encoding, decoding 하면 된다.

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

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

  • Module = 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을수 있게 해주는 모듈

Physical Layer 기술은 어디에 구현되어 있나

  • PHY 칩
  • 사실 1계층 모듈은 하드웨어적으로 구현되어있다.

여러대의 컴퓨터가 통신하려면??

그래서 전선하나로 여러 컴퓨터에 연결할 방법을 모색해야했다.

여기서 말하는 라우터는 우리가 잘 알고있는 공유기에 해당된다.

우리나라와 일본을 잇는, 그러니까 대륙간에도 해저 케이블이 있어서 서로 이어주는 유선케이블이 있다

이런식으로 컴퓨터 끼리 연결이 가능한 것인데,
1계층에 속하는 기술 만으로는 여러 대의 컴퓨터가 통신하도록 만들 수 없다.

같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
(Framing은 Data-link Layer에 속하는 작업들 중 하나)

이렇게 3대의 컴퓨터가 예림에게 데이터를 동시에 보내면, 예림은 010111110001 이렇게 받는데, 잘못 끊어 읽으면 누가 어떤 데이터를 보냈는지 모른다.

  • 이를 위해 송신자는 데이터의 앞 뒤에 특정한 비트열을 붙인다.

예를 들어 시작이 1111, 끝이면 0000을 붙힌다면
저 동그라미 친 부분이 데이터가 되는 것이다.


아래 사진의 순서는 왼쪽부터이다.

  • 랜카드
  • 2계층 모듈도 1계층 모듈처럼 하드웨어적으로 구현되어있다.!

Network Layer


A 는 B 에게 'data'라는 데이터를 보내고 싶다.
B의 주소가 55.10.54.75 인것을 알고 있어서 데이터 앞에 붙였다.
여기서 A의 목적지, 즉 B의 주소는 고유 IP 주소이다. (55.10.54.75)
55.10.54.75 'data' => 패킷이라고 부른다.

컴퓨터는 저 패킷을 가 라우터에게 보낸다

가 라우터는 패킷을 받아서 열어 봅니다.
"엥? 나랑 연결된 컴퓨터 중에는 IP 주소가 55.10.54.75 인 컴퓨터가 없군!"
그러면 가 는 패킷을 다시 포장하고, 라우터 마에게 전달한다.
이런 방식을 반복하여 B에게 도착한다.

그래서 Network Layer란??

  • 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서
  • 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해,
  • IP 주소를 이용해서 길을 찾고 (routing)
  • 자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)

Network Layer 기술은 어디에 구현되어 있나

  • 운영체제의 커널에 소프트웨어적으로 구현되어 있다.

Transport Layer

이제 인터넷 상의 모든 컴퓨터가 서오롸 통신할 수 있게 되었다.

자 이제 예를 들어 데이터를 받는 컴퓨터가 오른쪽 3개 인사 메시지의 데이터를 받는다고 치자.

그런데 컴퓨터에는 여러개의 프로그램들이 실행되고 있었다.
컴퓨터는 저 3개의 데이터를 프로세스들에게 나누어 주려고 한다.
어떤 데이터를 무슨 프로세스에게 줘야할 지,
컴퓨터는 어떻게 알 수 있을까??

먼저, 데이터를 받고자 하는 프로세스들은 포트 번호 (Port Number) 라는 것을 가져야 한다.

  • 포트번호 : 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값.

송신자 입장에서, 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.


포트 번호가 있기에 자기 프로세스를 잘 찾아갈 수 있다.

그래서 결국 Transport Layer란?

  • Port Number를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 데이터가 도달하게 하는 모듈

Transport Layer 기술은 어디에 구현되어 있나

  • 운영체제의 커널에 소프트웨어적으로 구현되어 있다.

OSI 모델 vs TCP/IP 모델

  • 사실 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다.
  • TCP/IP 모델도 OSI 모델과 마찬가지로 네트워크 시스템에 대한 모델이다.

오늘날 Updated 모델이 더 많이 사용된다.

Application Layer

TCP/IP 소켓 프로그래밍

  • 운영체제의 Transport layer에서 제공하는 API 를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍 이라고 한다
  • 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있는데
  • 뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있다.
  • 누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다는 뜻
  • Application Layer 도 다른 레이어들과 마찬가지로 인코더, 디코더가 있을텐데, 대표적인 Application Layer 프로토콜인 HTTP로 인코딩 & 디코딩을 살펴보자

모두들 MVC 패턴에 익숙할거라 믿는다.
MVC 패턴은 소프트웨어 아키텍쳐 중 하나인데,

  • MVC와 마찬가지로, 소프트웨어 아키텍쳐중에 Layered Architecture 라는게 있는데
  • Layered 아키텍쳐를 따르는 대표적인 예가 네트워크 시스템이다.

그러니까 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다.

  • OSI 7 Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것

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

profile
🇰🇷🇺🇸 #Back-End Engineer

0개의 댓글