CS_N_05

이정빈·2024년 2월 5일
0

CS스터디

목록 보기
10/10

사전 개념 정리

위 그림을 먼저 그리고 시작을 하겠습니다. 각각 OSI 7 Layers와 DoD 표준에 의한 Network 레이어들은 위 그림 처럼 나누고 표기 할 수 있습니다.

이렇게 레이어를 실제로 구현하면 위의 그림 처럼 구현할 수 있습니다.

이렇게 Process, 즉 화면을 구성하는 파일이 있을 때, 이러한 프로세스를 TCP/IP라는 프로토콜로 구성하고 NIC(컴퓨터와 네트워크 간의 통신을 가능하게 하는 하드웨어로써, 컴퓨터에 설치되어 내부 버스와 연결되어 데이터를 전송하고, 네트워크 프로토콜에 따라 데이터 패킷으로 분할하거나 패킷을 조립하여 전송합니다.)를 통하여 정보를 효율적으로 전송하고 받기 위해서 Driver(NIC와 컴퓨터의 운영체제 간의 통신을 위한 소프트웨어로 NIC를 인식하고 제어하기 위해 NIC의 Driver가 필요합니다. Driver를 통해 동작을 관리하고, 네트워크 프로토콜에 따라 데이터를 처리합니다.)를 이용하여 NIC를 제어하여 Client에 제공합니다.

이때, 소켓(Socket)이라는 개념을 알아야 합니다. 소켓은 User 모드 Application process가 접근 할 수 있도록 만든 파일로 일반적인 파일과 유사한 개념을 가지고 있습니다. 하지만, TCP or UDP 같은 다양한 프로토콜을 사용하여 Application Process(실행되는 SW)가 네트워크 통신을 위해 OS의 리소스를 사용할 수 있도록 제공되는 인터페이스 입니다. 즉, 이렇게 커널 영역에서 정보를 주고 받아야 하기 때문에 하드웨어와 커널 영역의 식별자들의 집합이라고 생각할 수 있습니다.(Port, IP, MAC)

식별자란?

  1. MAC(L2) : NIC에 대한 식별자
  2. IP(L3) : Host에 대한 식별자
  3. Port(L4) : 다양하게 불릴 수 있지만, Process, Service, 인터페이스 넘버라고 볼 수 있습니다.

MAC(1)

네트워크에 접속하는 모든 장비는 MAC 주소라는 물리적인 주소가 있어야 하고 이 주소를 통해서 서로 통신하게 되는데, 이러한 주소는 NIC에 새겨지게 됩니다. 대게 해당 주소를 변경 할 수 없다고 하지만, 엄밀히 말하면 변경 할 수 있습니다.

MAC 주소 변경 방법
일반적으로 ROM 형태로 고정되어 나오기 때문에 바꾸는 것이 어렵지만, 주소 자체가 메모리에서 구동되기 때문에 메모리에 접근을 해서, MAC 주소를 바꾸는 것이 가능합니다. ipconfig 명령어 혹은 네트워크 및 인터넷 설정란에서 변경이 가능합니다 :) 하지만, 이러한 변경을 운영체제에서 막는 경우도 종종 있습니다.

MAC 주소는 48비트의 16진수 12자리로 표현되며, 제조사 코드(24비트, OUI)와 뒤의 24bit는 UAA로 구성이 되어 있어 네트워크에서 각 장비를 구분할 수 있게 해줍니다. 이렇게 NIC에 부여되는 MAC 주소는 전기 신호가 들어오면 2계층에서 데이터 형태로 변환하여 내용을 구분한 후 도착지 MAC 주소를 확인하여 자신이 가지고 있는 도착지 주소와 비교했을 때 다르다면 보내려면 패킷을 폐기합니다. 만약, 목적지 주소가 자기 자신이거나, 브로드 캐스트 혹은 멀티 캐스트 같은 그룹 주소인 경우는 처리해야 할 주소로 인식하여 상위 계층으로 넘겨 줍니다.

IP(2)

IP 주소는 위에서 설명 했듯이, Host에 대한 식별자입니다.

💡 HOST?
인터넷에 연결된 컴퓨터를 말합니다.

이런 IP주소는 두가지가 있습니다. IPv4, IPv6가 있으며, 각각은 할당할 수 있는 주소의 갯수에 따라 차이가 존재합니다.

  • IPv4(32bit , 2322^{32}), IPv6(64bit, 2642^{64})
    위의 사진은 IPv4의 주소를 나타내고 있습니다. IP 주소도 두 부분으로 나눌 수 있는데 네트워크 주소호스트 주소입니다. 이 두 영역은 명확하게 구분하지는 않습니다.

다양한 IP를 구분해서 사용하기 위해서 IP 주소 체계는 필요한 호스트 IP 개수에 따라 네트워크의 크기를 다르게 할당할 수 있는 클래스라는 개념을 도입했습니다. 이렇게 클래스라는 개념을 도입하며 사용했던 것이 서브넷입니다. 서브넷을 사용하여 IP 주소의 일부를 호스트로 바꾸어 더 작은 네트워크로 분리하여 관리하는 것 입니다.

위 사진을 보면 A클래스에는 구분자가 첫번째 옥텟, B는 두번째 이렇게 점점 뒤로 가는 것을 볼 수 있습니다. 이렇게 클래스를 나누어서 할 수 이있는 것은 앞의 옥텟을 보면서 해당 네트워크가 로컬인지 다른 네트워크인지를 앞의 옥텟을 보면서 확인 할 수 있게 됩니다.

이러한 특징에 의해, 클래스라는 개념이 나올 당시에는 서브넷 마스크가 필요가 없이 맨 앞의 옥텟을 보고 어느 클래스에 속해있는 네트워크 인지 쉽게 확인이 가능했습니다. 하지만 인터넷의 사용량이 증가하며, 네트워크에 연결된 컴퓨터가 많아 짐에 따라 클래스 리스, CIDR(Classless Inter-Domain Routing) 기반의 주소 체계를 만들어 냈습니다. 두번째는 NAT와 사설 IP 주소, 세번째는 IPv6입니다.

이렇게 Host가 많아지는 문제가 있었지만, A 클래스의 많은 주소를 다 할당해 사용하지 않는 비효율성의 문제를 해결하기 위해 클래스리스 네트워크 에서 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용하는데 이것은 Subnet Mask라고 부릅니다.

예를들어 보면 IP 주소가 192.168.0.10이고 netmask(서브넷 마스크)의 주소는 0xffffff00 - > 255.255.255.000 임을 알 수 있습니다. 그래서 위 사진의 경우는 앞의 24비트가 네트워크 주소, 나머지 뒤의 8비트가 호스트 주소임을 알 수 있습니다. 여기서 Netmask는 IP 주소에서 네트워크 ID를 나타내는 것입니다.

즉 여기서 Net ID는 192.168.0임을 알 수 있습니다. 이렇게 클래스 리스 기반의 IP 네트워크에서는 서브넷 마스크가 필요하고 서버나 PC에 IP 주소를 부여 할 때도 사용되어야 합니다.

라우팅이 뭘까요?
Public IP와 Private IP 차이는 뭘까요?
라우팅 프로토콜에 대해서 설명해주세요.
IP는 어떻게 할당될까요?
NAT가 뭘까요?
ICMP가 뭘까요?

profile
백엔드 화이팅 :)

0개의 댓글