OSI 7계층

치즈말랑이·2022년 8월 4일
0

https://www.youtube.com/watch?v=1pfTxp25MA8
이 영상을 보고 정리해본다.


이미지 출처: https://velog.io/@jakeseo_me/OSI-7%EA%B3%84%EC%B8%B5-%EC%8B%9C%EB%A6%AC%EC%A6%88-5-%EC%84%B8%EC%85%98-%ED%91%9C%ED%98%84-%EC%9D%91%EC%9A%A9-%EA%B3%84%EC%B8%B5

1. Physical Layer

두 대의 컴퓨터가 통신하려면 0과 1을 주고받을 수 있으면 된다.
그러면 모든 데이터를 주고 받을 수 있기 때문이다.

주파수: 1초당 진동한 진동 횟수
전자기파는 주파수 값이 고정되어 있지 않다.
파동이 진행되는 동안 주파수 값이 계속 변한다.
전선은 모든 주파수를 다 통과시키지 못한다.
그래서 특정 주파수만 통과시킬 수 있는 전선을 지나게 되면 데이터가 소실, 변조될 수 있다.

여기서, 0과 1로 이루어진 전자기파는 항상 0~무한대의 주파수 범위를 가진다.
그래서 이런 전기신호를 통과시킬 수 있는 전선은 없다.
-> 아날로그 신호로 바꿔서 전송해야 한다.

0101 0101을 보내고 싶다면 아날로그 신호로 바꿔서 보내야 한다.

결론

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

Pysical Layer 기술은 PHY칩, 하드웨어적으로 구현되어 있다.

스위치와 라우터 배경지식

여러대의 컴퓨터가 통신하고 싶을때 전선 하나만 사용하는것이 경제적이다.
전선을 병렬로 연결하면 여러대의 컴퓨터가 통신할 수 있지만, 내가 보내고 싶은 컴퓨터 뿐만 아니라 엉뚱한 컴퓨터에도 데이터가 전송된다.
그래서 그 전선에 스위치를 달아서 보내고 싶은 사람에게만 데이터를 전송할 수 있다.

스위치가 여러개 있는 경우, 스위치끼리 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비를 라우터라고 한다.
L3스위치: 스위치 + 라우터
ex) 공유기

이렇게 전세계의 컴퓨터들이 계층구조로 연결되어있는 것을 인터넷이라고 한다.

2. Data Link Layer

여러 컴퓨터에서 보낸 데이터를 동시에 받을때 데이터가 섞이면 안된다.
그래서 송신자는 데이터의 앞뒤에 특정한 비트열 붙인다.
예를들어서 송신자가 데이터를 보낼 때 앞에는 1111, 뒤에는 0000을 붙인다고 해보자. -> Framing
... 0000 1111 0110 1000 0001 1111 1011 0000 1111 ...
1111, 0000 기준으로 자르면 된다.

결론

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

Data Link Layer 기술은 랜카드, 하드웨어적으로 구현되어 있다.

3. Network Layer

더 많은 컴퓨터들 사이의 통신을 위해서 사용
A가 B에게 데이터를 보낸다고 할때 A는 데이터 앞에 목적지 주소, 즉 B의 주소(ip)를 붙인다.
ip주소: 각 컴퓨터들이 갖는 고유한 주소
A가 B에게 데이터를 보내기 위해서는 B의 IP주소를 알아야 한다.

우리가 주소창에 www.naver.com을 입력하면 이 영어주소는 IP 주소로 변환되어 사용된다.
따라서 우리는 naver의 IP주소를 알고있는것과 마찬가지이다.
즉, 상대방의 IP주소를 알고 있어야 데이터를 보낼 수 있다.

[55.10.54.75 [data]] 이렇게 감싸져 있는것을 패킷 이라고 부른다.

  1. A가 바로 연결되어있는 라우터a에 패킷을 전달하면 라우터a는 패킷을 열어서 목적지 IP 주소를 확인한다.
  2. 라우터a에 연결된 컴퓨터중에 목적지IP인 컴퓨터가 없으면 데이터를 다시 포장해서 상위 라우터b 에 보낸다.
  3. 라우터 b는 어느 전선으로 패킷을 보내야 하는지 알아야 한다. 연결된 라우터가 많은데, 어떤 라우터에 패킷을 줘야할지 모르기 때문. -> 라우팅 자세하게 공부하면 알게됨
  4. 라우터c에 패킷을 줘야한다고 알고 있다고 가정한다면, 라우터b는 라우터c에게 패킷을 넘겨주고, 라우터c는 라우터d에 패킷을 보낸다.
  5. 라우터d는 자신과 연결된 컴퓨터들 중에 IP주소가 55.10.54.75인 컴퓨터가 있다는 것을 알아서 그 컴퓨터에 패킷을 전달한다.

결론

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

Network Layer 기술은 운영체제의 커널에 구현되어 있다.

4. Transport Layer

이제 인터넷 상의 모든 컴픁터가 서로와 통신할 수 있게 되었다.
그런데 컴퓨터에는 여러 개의 프로그램들이 실행되고 있다.
컴픁터는 세 개의 데이터를 여러 프로세스들에게 나누어 주려고 한다.
어떤 데이터를 무슨 프로세스에게 줘야할지 컴퓨터는 어떻게 알 수 있을까?

먼저, 데이터를 받고자 하는 프로세스들은 포트번호(Port Number)를 가져야 한다.
포트번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값이다.

송신자는 데이터를 보낼때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
[Port:9000 [안녕하세요!]]
데이터 전송자는 포트번호를 미리 알고 있어야 한다.

결론

Port 번호를 사욯아여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈

encoder
1. [data]
2. [Port:9000 [data]]
3. [Destination: 55.10.54.75 [Port:9000 [data]]]
decoder는 역순

Transport Layer 기술은 운영체제의 커널에 소프트웨어적으로 구현되어 있다.

OSI VS. TCP/IP

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

5. Application Layer

서버, 클라이언트 패러다임

https://snnchallenge.tistory.com/100

TCP/IP 소켓 프로그래밍

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

마치며

  • MVC 패턴은 소프트웨어 아키텍처중 하나이다.
  • MVC 와 마찬가지로 소프트웨어 아키텍처중에 Layered Architecture라는게 있다.
  • Layered 아키텍처를 따르는 대표적인 예가 네트워크 시스템이다.
  • 즉, 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다.
  • OSI 7 Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것이다.
profile
공부일기

0개의 댓글