ETC - OSI 7 Layer (네알못 탈출기 1)

OSI 7 Layer Model (feat. TCP/IP Model)

나와 친구가 팀플을 하기로 했다. 내 컴퓨터에서 작성한 PPT 파일를 친구 컴퓨터로 넘겨주어야 할 때, 내 컴퓨터와 친구 컴퓨터는 “통신”을 해야한다. 즉, “통신”이란 여러 기계 (device)들이 데이터를 주고 받는 것을 말한다. 데이터를 주고 받는 통신 과정을 크게 7단계로 추상화한 모델이 바로 OSI(Open Systems Interconnection)다.


Network

OSI의 각 레이어를 알아보기 앞서 네트워크 (Network)가 무엇인지 간단히 알아보자.

네트워크는 여러 기계들이 서로 데이터를 전송할 수 있도록 연결한 망이다.

PC A가 PC B에게 데이터를 보내기위해서는 두 컴퓨터가 연결되 있어야 한다. 컴퓨터의 연결 방식은 크게 유선 연결과 무선 연결이 있다.

유선 연결은 케이블 선으로 두 기계를 연결해 선을 통해 데이터 (bit)가 전송될 수 있도록 하는 방식이다. 이 때 PC A와 PC B는 같은 Protocol 을 따라 통신해야한다. 내가 친구에게 말을 걸고 싶을 때, 둘은 서로 같은 언어로 말해야하는 것처럼 두 기계가 데이터를 전송할 때도 같은 규칙, 즉 같은 protocol을 따라야 한다. 유선 연결 네트워크 protocol 종류로는 ethernet, ntp 등이 있다.

무선 연결은 우리가 익숙한 wi-fi다. 무선 연결된 컴퓨터는 wi-fi protocol을 따라 통신한다.

위 사진처럼 PC들은 switch 에 연결되어 있고 각 switch는 router 에 연결된다. 이렇게 기계들이 switch, router로 연결되어 통신이 가능해진 망을 네트워크라고 한다.

네트워크는 그 규모에 따라 LAN (Local Area Network), WAN (Wide Area Network) 등이 있다.


TCP/IP Model

TCP/IP 모델을 설명하기 앞서 인터넷(Internet)을 알아보자.

우리는 ‘인터넷’이란 용어를 일상적으로 사용하지만 용어의 정확한 의미를 알고 있지는 않다. 인터넷은 “네트워크의 네트워크” (“Internet is a network of networks”) 이다. 앞서 살펴봤듯이 네트워크는 기계들이 스위치와 라우터로 연결되어 통신이 가능해진 망이다. 이 망들이 무수히 연결되있는 것이 인터넷이다. 인터넷에서 기계들이 통신할 때 따르는 통신 규약 (communication protocol)이 바로 TCP/IP 프로토콜이다.

TCP/IP 프로토콜은 데이터가 packet으로 만들어지는 방법, 데이터에 주소(IP Address; Internet Protocol Address)를 입력하는 방법, 전송 방법, 라우팅 방법, 그리고 데이터를 받는 방법 등을 규격화 한다. TCP/IP 모델은 이러한 규약들을 추상화해 4가지 레이어로 만든 것이다.

TCP/IP 모델은 4층으로 구성되고 OSI 모델은 7층으로 구성된다. 여기서는 TCP/IP 모델과 OSI 모델을 섞어서 5개의 층을 설명하려고 한다.


1. Physical Layer

  • 컴퓨터간 통신을 위해서는 bit (0과 1로 구성된 binary)를 전기 신호로 바꿔서 전선을 통해 다른 컴퓨터로 보내야한다.
  • Binary를 전기 신호로 변환하는 과정은 encoding, 전기 신호를 binary로 바꾸는 과정은 decoding 이라고 한다.
  • 하드웨어에 구현되어 있다.
  • 네트워크 1의 컴퓨터와 네트워크 2의 컴퓨터가 통신하고 싶을 때, 라우터를 통해 데이터를 전송해야 한다.
  • MAC Address (Media Access Control Address)는 네트워크에 할당된 고유한 주소값으로 MAC 주소를 보고 적절한 라우터로 데이터를 보낸다.
  • 하드웨어 랜 카드(Lan-card)에 구현돼 있고 기계마다 고유한 MAC 주소를 갖는다.

3. Network Layer (IP)

  • PC A에서 PC B로 데이터를 보낼 때, PC B의 IP 주소를 알아야 한다.
  • 웹 브라우저에서 http://www.google.com 을 입력할 때 사실 우리는 구글 서버의 IP 주소와 통신하는 것이다. DNS (Domain Name System)는 도메인 (www.google.com)을 IP(예. 125.209.222.141)로 바꾸는 시스템이다. DNS를 인터넷의 전화번호부인 셈이다.
  • (IP address) + (data) 묶음을 패킷 (packet) 이라고 하는데 라우터는 패킷에 적힌 IP 주소를 보고 알맞은 라우터에게 데이터를 넘겨 준다. 이를 포워딩 (forwarding)이라고 한다.
  • OS (kernel)에 구현돼 있다.

4. Transport Layer (TCP)

  • 포트 (port) 는 특정 프로세스 식별하는 값이다. 따라서 프로세스마다 고유의 포트 번호가 존재한다.
  • TCP의 인터넷 프로토콜별 포트 번호는 다음과 같다.
    • http : 80
    • ssh : 22
    • ftp : 21
  • 데이터가 전송될 때, 패킷에 포트 번호가 추가되어 (IP address) + (port number) + (data) 가 전송된다.
  • OS (kernel)에 구현돼 있음

5 & 6 & 7. Application Layer

  • TCP/IP 모델은 Session Layer와 Presentation Layer가 Application Layer로 통합된다.
  • 프로그램이 데이터를 처리한 후에 status code 를 출력한다. Http 프로토콜을 따른다면 프로그램이 정상적으로 작동했을 때 200을 반환한다.
  • 데이터는 (port number) + (IP address) + (status code) + (data) 형태로 전송된다.

Reference

  1. router switch image
  2. wiki TCP/IP
  3. wiki Internet
  4. wiki network