CS/Network

네트워크 기초 지식

sangchu 2023. 4. 6. 14:03

학교 전공 공부와 더불어 이전부터 네트워크 공부의 필요성을 느껴서 널널한 개발자님의 네트워크 강좌를 듣고 정리하고자 한다. 해당 강좌는 사전 지식으로 운영체제 지식을 알고 있어야하는데, 운영체제도 이제야 막 전공으로 배우기 시작해서 그냥 맨 땅에 해딩하면서 알아가보고자 한다.

완전히 이해가 되지 않아도 일단은 다 기록할거라 글이 좀 더러울 수 있다.. 이 나중에 한번 싹 공부하고 복습할 때 글을 다듬을까 한다.  

 

들어가기 전...

다음 용어들은 다 같은 의미이다.

네트워크 = Internet = IP 프로토콜 = 인터넷 프로토콜 기반으로 작동하는 네트워크

이 중에서 가장 유명한게 4계층 프로토콜인 TCP/IP다.

 

해당 강좌는 TCP/IP를 이해하는 것을 목표로 두고 있다.

이해가 안돼도 일단 외워서 끝내도록 하자!

 

수강 전에 알고 있어야 하는 개념

  1. bit, byte 등 정보 표현의 단위를 알고 있다.
  2. 1 byte는 8bit임을 알고 있다.
    • 8bit = 1byte → 1024MB 단위 = 2^10 단위
    • KB → MB → GB → TB
    • 2^32 = 42억9천만… byte = 1GB
  3. bit 단위 논리연산을 할 수 있다.
    • 1011와 0010의 AND 연산(둘다 1, 즉 true여야 결과도 true), 결과는 0010
      0010은 2비트 연산, 총 4bit이므로 2^4가지의 경우의 수가 있다. 이 원리를 이용해서 16진수로 표기한다.
    • 논리 연산 중 Mask 연산은 어떤 정보를 자를 때 쓰는 연산이다.
  4. 2진수를 16진수로 변환할 수 있다.
  5. 1024MB가 1GB임을 알고 있다.
  6. Process와 Program의 차이를 알고 있다.
    • Program이 실행되면 그 Program을 Process라고 부른다.
    • Process는 ID를 갖고있다.(=PID)
  7. OSI 7 layer라는 말을 알고 있다.
    • OSI 7 layer를 일단 이해하려고 덤비지 않는다. 초보자 입장에서 깊이 이해하려면 오히려 방해가 될 것이다..
  8. 범용 운영체제는 User mode와 Kernel mode가 존재한다는 것을 알고 있다.
    • 컴퓨터는 아래 밑줄과 같이 3계층으로 이루어져 있다. Computer
      • S/W
        • APP - User
        • System(OS) - Kernel
      • H/W
  9. Buffer의 의미를 알고 있다.
    • Buffer라는 메모리 공간에 정보가 유입된다. 그것을 채우는것을 Buffering이라고 한다.
      데이터가 다 차고 일정 수준이 되면 그때부터 화면이 재생이 된다. 
  10. 개념(Abstraction)과 구현(Implementation)의 차이를 안다.
  11. 나는 ‘외워서’라도 네트워크를 잘 알고싶다!

 

Layer와 Layered의 구조

여기서 네모 박스 하나를 요소라고 생각하자.

 

위 그림은 도식화를 한 것이다. 도식화는 어떤 것을 이루는 구성 요소가 있는데 이 요소들간의 관계를 표현할 때 많이 한다.

또한 이해를 돕거나 설계에 대한 설명을 할 때 사용한다. 설계는 시스템을 이루는 요소를 정의하고 요소들 간의 관계를 규정하는 것이다.

 

layered구조는 주로 왼쪽 그림처럼 그린다. 그림을 보면 4층은 3층에 대해서 의존적이다.

 

의존적이라는 것도 범위가 있는데, 어떤 행위나 기능과 같이 한정된 것에 의존적일 수 있다. 예를들어, 만약 내가 지하철을 타고 출근을 한다면 나는 출근 행위에 한정하여 지하철에 의존적이다.

 

의존의 정도가 심하면 존립에 대해 의존적일 수 있다. 예를들어, 4는 3이 없으면 아예 존재할 수 없고, 내가 고등학교를 졸업했다는 것은 중학교를 졸업했다는 것이다. 즉, 하위 계층은 상위 계층의 전제조건이다.

 

IT에서는 Layerd 구조로 그림이 나와버렸으면 존립이 일렬종대로 의존적인가보다 생각하면 된다.

Layerd 구조의 대표적인 예로 OSI 7 Layer가 있다. 

 

 

네트워크와 네트워킹

Network는 우리말로 의역하면 ‘관계’, Networking은 ‘상호작용’을 뜻한다.

 

 

위 예시를 보자. 만약 철수가 Olivia와 대화하려면 '2m 이내 존재→ 말 → 언어 선택'이 협의가 돼야지 그제서야 상호작용이 가능하다. 이는 의존관계가 성립하므로 Layered 구조다.

 

계층별로 규칙을 정하는데 이 규칙을 Protocol이라고 부른다.

OSI 7Layer는 의존적 관계가 성립하는 프로토콜(규칙)을 L1, L2 … L7까지의 계층구조로 나열되어 있다.

각 계층은 개념을 관념적으로 풀어서 설명한 것이다.

 

개념과 구현(혹은 실체)

OSI 7Layer는 명백히 개념에 관한 얘기다.

박은빈은 연예인의 일종이다. 여기서 연예인은 개념(컨셉)이다. 이 컨셉에 대한 실질적 사례, 구현 형태가 박은빈이다. 이러한 관계를 상속 관계라고 한다.

UML은 IT에서 그림 그리는(모델링) 규칙이다.

 

OSI 7Layer가 어려운 이유를 다음과 같은 예를 들어 설명해 보겠다.

박은빈이라는 배우가 넘 좋아서 팬클럽 가입했다. 이 배우와 친해지기 위해 박은빈이 아닌 연예인, 더 나아가 여성에 대해서 공부한다고 친해지진 않는다.

 

OSI 7Layer는 이 예시에서 여성(개념) 부분이다. 우리는 해당 강의에서 이것이 아닌 TCP/IP 네트워크에 대해 공부하고 싶은것이다.

TCP/IP에서 P는 Protocol을 뜻한다. 이 규칙은 위에서 ‘구현’(박은빈)에 해당한다.

 

TCP/IP에 대한 문법, 규칙을 먼저 공부해야지, 그 윗단(연예인, OSI 7 layer)을 공부하는 순간 못빠져나온다. 따라서 이것을 먼저 공부하고 OSI 7 layer를 공부하는게 낫다.

 

User mode와 Kernel mode

컴퓨터는 다음과 같이 구성되어 있다.

  • S/W
    • User mode(SW)
    • Kernel mode(SW)
  • H/W

그림으로 자세히 나타내면 다음과 같다. 

HW에서 NIC(Network Interface Card)은 LAN 카드와 같다.

LAN카드를 꽂으면 그 Driver가 설치돼야 작동할 수 있는데, Driver은 어떤 HW가 있을 때 그 HW를 제어하기 위한 SW이다.

 

운영체제(커널)를 이루고 있는 구성요소가 존재(Protocol가 구현된 SW)하는데, 그 중에 TCP하고 IP가 있다.

저 위에 어플리케이션(크롬)이 있는데 이를 통해 우리가 웹을 사용할 수 있다.

 

우리가 커널 모드를 유저모드의 어플리케이션에 접근할 수 있도록 커널이 길을 열어준다.

 

커널(OS)은 신계, 유저모드는 인간계로 비유할 수 있다.

신의 영역에 내 말을 전달하고 싶으면 신이 정해준 인터페이스를 통해 해야한다.

인터페이스는 file형태이다. 특별히 TCP IP를 추상화시킨 인터페이스 파일은 File이라고 안하고 Socket이라고 부른다.

Socket(File)을 열었다는 주체는 Process이다.

Socket의 실체 = File = 특별히 네트워크(TCP IP) 추상화가 이루어진 인터페이스 파일

 

L5부터는 User mode application이다. 이는 Process 수준에서 설명 가능하고 어떤 프로그램이 가지고 있는 특징에 해당한다.

 

TCP는 전송 계층(L4)으로 전송에 대해 다루고, IP는 네트워크 계층(L3)으로 네트워크 자체에 대해 다룬다. TCP/IP 에서 /가 계층이 다름을 표현한 것이다.

 

NIC이라는 건 완벽히 Physical(물리계층)인데 Data Link(Ethernet)는 커널의 Driver 영역하고 하드웨어의 일정 수준 펌웨어까지 합쳐서 생각하면 된다.

 

 

 

'CS > Network' 카테고리의 다른 글

컴퓨터 네트워크 - 네트워크란?, 패킷, LAN, WAN  (1) 2024.03.30