순서
1. Physical Layer - 물리계층
2. Data-Link Layer - 데이터링크계층
3. Network Layer - 네트워크계층
4. Transport Layer - 전송계층
5. Application Layer - 응용계층

✋각 계층마다 예시가 나오고 개념이 나오기 때문에 급하다면 각 계층마다 그래서 ~~Layer 란 이라는 부분을 확인하면 된다✋

유튜브 히히의 OSI 7 Layer 의 내용

Physical Layer - 물리계층

모든 파일과 프로그램은 0과 1의 나열이기 때문에 두 대의 컴퓨터가 통신하려면 0과 1만 주고받을 수 있으면 된다

위와같이 두 컴퓨터가 전선으로 연결되어 있고, 전류를 다르게 하여 0과 1을 나누어 주고받을 수 있게 되었다!

하지만 이 간단한 아이디어는 실제 상황에서는 주파수 값이 숫자 하나로 고정되지 않아서 잘 동작되지 않는다

그래서 두 대의 컴퓨터가 통신하려면 0과 1을 주고받을 수 있으면 된다 했기 때문에 아래와 같은 전자기파를 주고받을 수 있으면 된다

하지만 0 ~ 무한대[HZ]의 주파수 범위를 가지기 때문에 이런 전기신호를 통과시킬 수 있는 전선은 없다

그래서 아래와 같이 아날로그 신호로 바꿔서 전송해야 한다

그래서 최종적으로
1. 두 대의 컴퓨터가 0101 0101 이라는 데이터를 보내고 싶으면
2. 0101 0101을 아날로그 신호로 바꿔서 전선으로 보낸다
3. 수신측 컴퓨터는 아날로그 신호를 받을 것이고
4. 이 아날로그 신호를 해석해서 0101 0101이라는 데이터를 받을 수 있다

그래서 Physical Layer란

  • 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보내고(encoding)

  • 아날로그 신호가 들어오면 0과 1의 나열로 해석하여(decoding)

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

1계층을 두고 인코딩과 디코딩에 대해 알아보면

왼쪽은 데이터를 보내는 컴퓨터
오른쪽은 데이터를 받는 컴퓨터

위의 0101 0101이라는 데이터를 보내는 과정에 인코딩과 디코딩을 추가해 살펴보면

  1. 송신측은 0101 0101이라는 데이터를 1계층의 인코더로 들어가 아날로그 신호로 변조(인코딩)가 된다
    변조를 해주는 애를 인코더 라고 한다

  2. 아날로그 신호가 전선을 타고 흘러 데이터를 받는 컴퓨터로 도달

  3. 아날로그 신호가 1계층의 디코더로 들어가서 해석(디코딩)해서 원본 데이터인 0101 0101을 받게 된다
    해석 해주는 애들 디코더 라고 한다

그러면 Physical Layer기술은 어디에 구현되어 있을까?

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

PHY칩

사람1과 사람2가 통신을 하다가 새로운 사람에게도 데이터러를 보내고 싶어졌다, 그러면 새로운 사람과도 전선을 연결하면 된다

이렇게 통신하고 싶은 새로운 사람들이 생길 때마다 전선을 연결해야 한다
이런 방식은 일단 전선을 꽂을 구멍도 많이 필요하고 비용 면에서 비효율적이다

그래서 전선 하나를 가지고 여러 컴퓨터와 통신할 방법을 모색해야 한다

사람1이 사람4에게 메시지를 준다고 할 때

이렇게 모든 컴퓨턴와 연결된다면 사람1이 데이터를 보낸다면 모든 컴퓨터로 신호가 흐르고 전달 되게 된다
모든 컴퓨터가 신호를 받긴 하지만 잘 전달 된다

이 중간 선들을 하나의 상자에 넣는다 생각하고 상자와 다른 컴퓨터들을 연결할 수 있다
이 때 이 상자를 더미 허브라고 할 수 있다

더미 허브라는 말을 모르면 넘겨도 된다

다시 사람1이 사람4에게 메시지를 준다고 할 때

이 상자(더미 허브)가 메시지의 목적지를 확인해 사람4에게 만 메시지를 전달해 줄 수 있도록 한 것을 스위치라고 한다

스우치는 일종의 컴퓨터로서 이런 일을 처리한다

그러면 다른 네트워크 두 개가 구축되어 있을 때 사람1이 병관이에게 데이터를 보내려 할 거다
이 때 두사람이 전선으로 연결되어 있지 않아 통신할 수 없다

그런데 스위치와 스위치를 연결할 수 있다면 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 하는 장비를 라우터라고 한다(정확히는 스위치 + 라우터)

이렇게 연결이 되면 어떻게 해서든 통신이 가능할 것이다

이 때 위와같이 스위치를 공유기에 해당한다

이런식으로 계속 연결하여 전 세계의 컴퓨터들을 연결한 것을 인터넷이라 한다

한국과 일본의 연결을 본다고 할 때 아래와 같은 그림이 될 것이다

이렇게 한국과 일본의 연결에서 주황색 케이블은 아주 거대할 것이다
실제로도 아래와 같이 거대하다

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

앞에서 두 대의 컴퓨터가 0과 1로 된 데이터를 어떻게 주고 받는지 보았다(1계층 물리계층)
하지만 1계층의 기술로는 여러 대의 컴퓨터가 통신하도록 만들 수 없다

네 대의 컴퓨터가 스위치에 연결되어 있고, 3대의 컴퓨터가 거의 동시에 데이터를 보냈다면 병관이의 컴퓨터는 데이터를 아래의 사진처럼 받게 된다

병관이에게 온 데이터들을 잘 끊어 읽기 위해 송신자들은 데이터의 앞, 뒤에 특정한 비트열을 붙인다

  • 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈

  • Framing은 Data-link Layer에 속하는 작업들 중 하나이다
    위에서 여러 대의 컴퓨터가 통신하기 위해 특정한 비트열을 붙인다고 했는데 이러한 원본 데이터를 감싸는 행위를 Framing이라한다

1계층, 2계층을 두고 인코딩과 디코딩에 대해 알아보면

  1. 데이터를 보내는 컴퓨터의 데이터가 2계층 인코더로 들어가 Framing되어 나온다

  2. Framing된 데이터를 1계층 인코더로 들어가 아날로그 시그널이 나온다

  3. 아날로그 시그널은 전선을 타고 데이터를 받는 컴퓨터의 1계층 디코더로 들어간다

  4. 1계층 디코더로 나온 데이터는 해석된 데이터, 즉 Framing된 데이터가 나오게 된다

  5. 데이터를 받는 컴퓨터의 2계층 디코더로 들어가서 Framing이 제거되고 데이터가 나오게 된다

2계층 모듈도 1계층 모듈처럼 하드웨어,랜카드에 구현되어 있다

Network Layer - 네트워크계층

위이 데이터링크 계층에서 아래와 같은 인터넷의 구조를 봤을 것이다

인터넷의 구조를 축소, 각 라우터들에게 이름을 붙여준 모습

이와같이 라우터들을 거쳐 A컴퓨터가 B컴퓨터에게 데이터를 보내는 과정을 살펴보면

  1. A는 데이터 앞에 목적지 주소인 B의 주소를 붙인다, 이와같이 각 컴퓨터들이 갖는 고유한 주소를 IP주소라 한다, 요기서는 55.10.54.75가 IP주소이다
    (상대방의 IP주소를 알고 있어야 메시지를 보낼 수 있다)

  2. A가 라우터 에게 패킷을 전달한다
    그림에서 55.10.54.75로 감싸진 데이터를 패킷이라 부른다

  3. 는 패킷을 통해 목적지 IP주소를 확인, 에게 패킷을 전달한다
    (와 연결된 컴퓨터 중에서는 B의 IP주소 컴퓨터가 없다)

  4. 는 동일하게 패킷을 통해 목적지 IP주소를 확인, 패킷이 B에 도착하려면 어는 전선으로 패킷을 보내야 하는지 알아내야 한다, 우리는 그냥 에게 패킷을 줘야 한다는 것을 가 알고있다고 가정
    (알아내는 과정은 라우팅과 관련있다)

  5. 그렇게 가 보낸 패킷이 에게 도착하고
    가 했던 똑같은 방법으로 라우터 에게 패킷을 보낸다

  6. 는 자신과 연결된 컴퓨터 중 IP주소가 55.10.54.475 가 있다는 걸 알고, 패킷을 B에게 보낸다

그래서 Network Layer란?

  • 수많은 네트워크들의 연결로 이루어지는 inter-network속에서(라우터끼리의 연결),

  • 어딘가에에 있는 목적지 컴퓨터로 데이터를 전송하기 위해 IP주소를 통해 길을 찾고(routig),

  • 자신의 다음 라우터에게 데이터를 넘겨주는 것(forwarding)

1계층, 2계층, 3계층을 두고 인코딩과 디코딩에 대해 알아보면

  1. 데이터는 데이터를 보내는 컴퓨터의 3계층 디코더에 들어가서 목적지 ip주소가 붙어서 나온다
    (이는 구조체(객체)의 변수 중 하나에 데이터, 하나에 주소 가 있다고 생각해도 된다)

  2. 2계층 인코더에 들어가서 Framing이 된다

  3. 1계층 인코더에 들어가서 아날로그 신호가 되어 나온다

  4. 아날로그 신호는 전선을 타고 인접한 라우터에 들어간다

  5. 라우터의 1계층 디코더, 2계층 디코더, 3계층 디코더에 의해 데이터를 해석한다

  6. 해석된 데이터는 다시 3계층 인코더, 2계층 인코더, 1계층 인코더에 의해 데이터에 ip주소를 붙이고, Framing하게된다

그러면 Network Layer기술은 어디에 구현되어 있을까?

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

Transport Layer - 전송계층

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

데이터를 받는 수신자는 전 세계의 컴퓨터로부터 데이터를 받을 것이고, 컴퓨터에서는 실행중인 프로세스들이 존재한다
이 때 받은 데이터들을 컴퓨터는 무슨 프로세스에게 나눠야 할 지 어떻게 알까?

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

그래서 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 잇는 프로세스의 포트 번호를 붙여서 보낸다

이렇게 데이터 전송자는 포트 번호도 미리 알고보낸다

예시로는 네이버가 있고, 네이버는 포트번호 80번을 생략하고 있는 것이다

이렇게 프로세스의 포트번호에 맞는 데이터를 할당해준다

그래서 Transport Layer란?

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

  1. 4계층의 인코더로 값이 들어가서 포트번호가 붙어 나온다

  2. 3계층 인코더로 값이 들어가서 목적지 컴퓨터 ip가 붙어 나온다

+. 나머지는 같으니 생략

그러면 Network Layer기술은 어디에 구현되어 있을까?

3계층과 마찬가지로 운영체제의 커널에 소프트웨어적으로 구현되어 있다

Application Layer - 응용계층

세션 계층(Session Layer)과 표현 계층(Presentaion Layer)를 넘긴 이유(feat. OSI7계층과 TCP/IP계층)

알다시피 OSI 네트워킹 모델은 총 7개의 Layer로 나뉘어져 있다
근데 세션 계층과 표현 계층을 넘긴 이유는

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

그러면 전의 Data Link Layer와 Physical Layer를 설명한 이유는 TCP/IP모델도 오리지널 TCP/IP모델이 있고 업데이트 된 TCP/IP모델이 존재하기 때문이다

그리고 오늘 날 업데이트 된 TCP/IP모델이 더 많이 사용된다

다시 응용 계층의 설명으로 돌아와서

TCP/IP 소켓 프로그래밍 이라는 말을 들어보았나요??

운영체제의 Transport Layer에서 제공하는 API를 활용해 통신 가능한 프로그램을 만드는 것, 네트웤 프로그래밍 = TCP/IP 소켓 프로그래밍

소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어 동작 시킬 수 있다
또 이런 TCP/IP소켓 프로그래밍을 통해 누구나 자신만의 Application Layer인코더와 디코더를 만들 수 있다

누구든 자신만의 Application Layer프로토콜을 만들어 사용할 수 있다

Application Layer의 인코더 디코더가 있을 것이다, 대표적인 Application Layer의 프로토콜인 HTTP로 인코딩 & 디코딩하는 과정이 있다

예시로는 URL인코딩/디코딩이 있다

정리하며 더 궁금한 점, 느낀점 🙃

  • 40분 짜리 영상에, 발표할 때 사용하신 자료들을 찾아도 비슷한 자료들이 나오지 않아서 만들며 정리를 했는데, 발표준비에 많은 시간을 사용했다는 것을 자료를 만드는 과정에서 느꼇다

  • 네트워크계층부분에서 DNS에 대한 내용이 조금 나왔다
    DNS는 IP주소를 변환해서 편하게 해준다~ , 어떤 기술 덕분에 무수한 ip가 생길 수 있다 는 내용을 학교, 책에서 본 기억이 나는데 더 깊은 내용이 무었인지 궁금하다

  • 학교에서는 OSI7계층에서 Framing하는 과정들이 크게 나오지 않고 이걸 왜 배우는지 이해 못 했었는데 예시와 상황을 보고 각 계층의 특성을 이해할 수 있었는 것 같다

profile
괴물신인

0개의 댓글