[네트워크] OSI 7계층

moonee·2021년 8월 24일
0

네트워크

목록 보기
1/3

우하한테크코스 테코톡 히히의 OSI7 Layer 를 바탕으로 쓰여진 포스팅입니다.


1. 물리 계층 Physical Layer

물리계층은 하드웨어적으로 구현되어 있다.

두 대의 컴퓨터가 통신하는 방법

두 대의 컴퓨터가 통신하기 위해서는 위와 같이 0과 1을 주고받으면 된다. 하지만 수직선과 수평선이 있는 전자기파는 항상 0~무한대[Hz]의 주파수 범위를 갖는다. 따라서 위와 같은 전기신호를 통과 시킬 수 있는 전선은 없다.


따라서 위와 같은 신호는, 아날로그 신호로 바꿔서 전송해야한다.

이렇게 두 대의 컴퓨터가 통신하는 과정은 아래와 같다.

  1. 송신측 컴퓨터에서 0101 0101 이라는 데이터를 보내려고한다. 따라서 이를 아날로그 신호로 바꾸어서 전선으로 내보낸다.
  2. 수신측 컴퓨터는 받은 아날로그 신호를 해석하여 0101 0101이라는 데이터를 얻는다.

물리 계층이란

  • 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘러보내고 encoding
  • 아날로그 신호가 들어오면 0과 1의 나열로 해석하여 decoding
  • 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈(module)

물리계층의 인코딩 / 디코딩

encoder 함수의 파라미터 값은 원본 데이터이고 반환 값은 아날로그로 변조된 신호이고, 반대로 decoder 함수의 파라미터 값은 아날로그 신호이고, 반환 값은 원본 데이터가 된다.



데이터 링크 계층 역시 하드웨어적으로 구현되어 있다.

여러 대의 컴퓨터가 통신하는 방법

서로 통신하고자 하는 컴퓨터마다 전선을 모두 연결하는 것은 비용측면에서 비효율적이므로 전선 하나를 가지고 여러 대의 컴퓨터와 통신할 수 있어야 한다.

✔️ 더미허브를 통한 연결

위와 같이 더미 허브를 통해 여러 대의 컴퓨터가 연결되고, 통신할 수 있게 된다.

하지만 만약 A컴퓨터에서 B컴퓨터에게 데이터를 전송한다면 중간에 있는 다른 컴퓨터도 해당 메시지를 읽을 수 있는 문제가 있다.

✔️ 스위치를 통한 연결

따라서, 더미 허브가 메시지의 목적지를 확인하여 정확히 목적지에만 메시지를 전달 할 수 있도록 구현한 것이 스위치이다.

✔️ 라우터를 통한 서로다른 네트워크 간 연결

그렇다면 만약 송신측 컴퓨터와 수신측 컴퓨터가 각각 다른 네트워크에 속한다면 어떻게 될까? 이를 위해서 라우터를 통해 서로 다른 네트워크끼리 연결시킬 수 있다. 라우터는 스위치의 기능도 하며, 우리가 익히 알고 있는 공유기가 라우터의 역할을 한다.

✔️ 인터넷

라우터와 라우터를 연결하여 전 세계의 컴퓨터들을 모두 연결한 것을 인터넷이라고 한다.

데이터 링크 계층의 역할

같은 네트워크 (같은 스위치로 연결된) 에 있는 여러 컴퓨터들이 데이터를 주고 받기위해 필요한 모듈로써, 전송받은 데이터를 구분하여 받는 (Framing) 작업을 수행 한다.

1-2계층의 인코딩/디코딩 과정

  1. 송신측에서 보내고싶은 데이터가 2계층 인코더의 인풋으로 들어간 후, 앞 뒤에 데이터를 구분해주는 flag가 붙은 값이 반환된다.
  2. 위에서 2계층에서 프레이밍 된 데이터가 1계층 인코더의 인풋으로 들어간 후, 아날로그 신호로 변조되어 반환된다.
  3. 아날로그 신호가 전선을 타고 수신자의 컴퓨터에 1계층 디코더의 인풋으로 들어간 후, 원본 데이터가 해석되어 반환된다.
  4. 반환된 값이 2계층 디코더의 인풋으로 들어간 후 앞 뒤에 붙여진 flag가 제거되어 원본 데이터가 반환된다.


3. 네트워크 계층 Network Layer

네트워크 계층은 운영체제의 커널에 소프트웨어적으로 구현되어 있다.

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

따라서, 네트워크 계층까지의 과정을 정리하면 아래와 같다.

  1. 3계층에서는 전송할 데이터 앞에 IP 주소를 붙여서 패킷형태로 만든 후 해당 패킷을 2계층에 전달한다.
  2. 2계층, 1계층에서는 위에서 기술한대로 프레이밍을 해주고, 아날로그 신호로 변조해주어 전선을 통해 다음 라우터로 전송한다.
  3. 라우터에서 받은 아날로그 신호를 해석 한 후, 또 다시 다음 라우터에 전송하여 아날로그 신호로 인코딩된다. (목적지를 찾을 때 까지)


4. 전송 계층 Transport Layer

전송 계층은 운영체제의 커널에 소프트웨어적으로 구현되어 있다.

컴퓨터가 전송받은 데이터를 어떤 프로세스에 줘야할지 어떻게 구분 할 수 있을까? 이를 위해서 데이터를 받고자 하는 프로세스들은 포트 번호를 가져야 한다.

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

즉, 전송 계층이란 포트번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈이다. 따라서 위의 3계층에 Input 값으로 들어오는 데이터는 포트번호를 가지고 있다.



5. 응용 계층 Application Layer

HTTP는 응용계층의 대표적인 프로토콜로서, 다른 계층과 마찬가지로 인코더와 디코더를 가진다.

따라서 송신측에서 HTTP 인코더에 데이터를 Input 값으로 넣으면 Status code, header, request 등의 값이 붙고, 해당 데이터가 4계층 인코더 Input 값으로 들어가서 포트번호를 가지게 되고, 1~3계층을 통과한다. 이렇게 전송된 데이터는 HTTP 디코더를 통과하여 원본 데이터를 수신측에 전달한다.

profile
기록

0개의 댓글