반갑습니다!

[Network] OSI 7 Layer 본문

CS

[Network] OSI 7 Layer

김덜덜이 2020. 10. 20. 00:26

우연히 네트워크 계층에 대해 잘 설명된 영상을 보게되어 정리하게 되었습니다.

1. Pysical Layer

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

  • 모든 파일과 프로그램은 0과 1의 나열
  • 0과 1만 주고받으면 된다.
  • 1을 보낼 때는 +5V의 전기를 전선으로 흘려보내고 0을 보낼 때는 -5V의 전기를 전선으로 흘려보내면 0과 1의 전송이 가능.

→ 이론상으로는 간단하지만 실제로는 잘 작동하지 않음

왜 그런지는 다음 그림을 보며 생각해보자.

만약 전자기파가 위의 그림과 같다면?

→ 주파수 값이 숫자 하나로 고정되지 않는다.

그런데 전선은 모든 주파수를 다 통과시킬 수 없기 때문에 데이터가 유실될 것이고, 데이터를 받는 컴퓨터에서는 전송한 데이터와 다른 데이터를 받게 될 것이다.

  • 이런 수직선과 수평선이 있는 전자기파는 항상 0~무한대 [Hz]의 주파수 범위를 가진다.
  • 즉, 이런 전기 신호를 통과시킬 수 있는 전선은 없다.

→ 그렇기 때문에 아날로그 신호로 바꿔서 전송해야한다.

정리

  • 0과 1의 나열을 아날로그 신호로 바꿔서 전선으로 흘려보낸다. (encoding)
  • 아날로그 신호가 들어오면 0과 1의 나열로 해석한다. (decoding)

Physical Layer는 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈(module)이라고 할 수 있다.

Physical Layer 기술이 구현된 곳은?

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

2. Data-Link Layer

모두 같은 네트워크에 있는 A, B, C가 D로 데이터를 동시에 전송하는 상황이라고 가정해보자. 이 때 어떻게 D에서 각각의 데이터를 구분할 수 있을까?

가장 쉬운 방법은 시작과 끝에 구분자를 두는 것이다.

예를 들어 시작을 1111, 끝을 0000이라고 한다면 D는 1111 0110 0000 1111 1100 0000 1111 0101 0000 가 들어오면 구분자를 통해 0110, 1100, 0101 을 구분할 수 있다. 그리고 이를 Framing이라고 한다.

Data-Link Layer란 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈이라고 할 수 있다.

Data-Link Layer 기술이 구현된 곳은?

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

3. Network Layer

IP 주소

  • 각 컴퓨터들이 갖는 논리적 고유 식별 주소
  • 서로 다른 네트워크에 있는 A와 B가 데이터를 보내려고 하면 목적지 PC의 IP 주소를 알아야 한다.

정리

Network Layer란

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

Network Layer 기술이 구현된 곳은?

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

4. Transport Layer

데이터를 받은 컴퓨터에 3개의 프로세스가 실행 중이라고 가정해보자.

이 때 컴퓨터는 어떤 데이터를 어떤 프로세스에게 전달해줘야할지 어떻게 알 수 있을까?

  • 데이터를 받고자 하는 프로세스들은 포트 번호(Port Number)를 가져야 한다.
  • 포트 번호란 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값이다.
  • 송신자는 전송할 데이터에 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 전송한다.
데이터 전송자는 포트 번호까지 미리 알고 있다
  • 사실 인터넷 브라우저에 www.naver.com을 입력하는 것은 www.naver.com:80이 생략된 것이다.
    • 이는 곧 미리 네이버의 포트 번호를 알고 있다는 의미이다.

정리

Transport Layer란?

  • Port 번호를 사용해서 도착지 컴퓨터의 최종 도착지인 프로세스가지 데이터가 도달하게 해주는 모듈

Transport Layer 기술이 구현된 곳은?

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

5. Application Layer

왜 Session Layer랑 Presentation Layer는 건너뛴 것인지?

  • 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다.
    • OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 밀렸기 때문
  • TCP/IP 모델 역시 네트워크 시스템에 대한 모델이다.
  • 현재는 기존의 TCP/IP 모델에서 조금 더 개선된 TCP/IP 모델을 사용하고 이는 아래의 그림과 같다

TCP/IP 소켓 프로그래밍

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

대표적인 Application Layer 프로토콜인 HTTP로 인코딩과 디코딩을 살펴보자.

다음과 같이 각 계층을 돌면서 encoding되고, 다시 decoding 되면서 데이터가 전송된다는 것을 알 수 있다.

출처