CS/NETWORK

TCP/IP

휴먼코딩 2024. 7. 17. 22:44

IP 주소

ipconfig/all

스크린샷 2024-07-15 222139

58-86-94는 OUI, F9-26-16은 UAA가 된다.
IP 주소는 논리적 주소이며 컴퓨터 네트워크에서 장치들이 서로를 인식하고 
통신을 하기 위하여 사용하는 특수한 변호이다.

IP를 기반으로 통신하지만 
사실은 그 밑의 물리적 주소인 MAX 주소를 통해 통신한다.

MAC 주소

스크린샷 2024-07-15 221956

네트워크 인터페이스에 할당된 고유 식별자이며 보통 장치의 NIC에 할당된다.
48비트로 이루어져있으며 24비트의 OUI와 24비트의 UAA로 구성되어있다.

OUI: IEEE 에서 할당된 제조사 코드

UAA: 제조사에서 구별되는 코드

IEEE(Institute of Electrical and Electronics Engineers)

전기 및 전자 공학, 컴퓨터 과학, 통신 등 다양한 분야에서 국제적으로 인정받는
기술 표준을 개발한다.
1. 표준화: 다양한 기술 분야에 대한 표준을 제정한다.
ex) Wi-Fi(802.11), Ethernet(802.3)

2. 출판: 기술 관련 저널, 학술지, 컨퍼런스 자료 등을 출판
연구 결과와 최신 기술 정보를 공유한다.

3. 교육 및 전문 개발: 기술자와 엔지니어를 위한 교육 프로그램과 인증 제공

ARP: IP 주소 → MAC 주소 변환

RARP: MAC 주소 → IP 주소 변환

스크린샷 2024-07-15 223030

ARP

IP 주소를 물리적 MAC 주소로 변환하는 프로토콜이다.

주로 LAN (Local Area Network)에서 사용되며 
네트워크 내에서 특정 IP주소를 가진 장치의 MAC 주소를 찾는데 사용된다.

작동방식

네트워크 통신을 위해 IP 패킷을 올바른 MAC 주소로 포장하는 데 사용된다.
1. 장치가 특정 IP 주소의 MAC 주소를 알지 못할 때 ARP 요청을 브로드캐스트하여 
연결된 네트워크에 있는 장치에게 모두 보낸다.
2. 해당 IP 주소를 가진 장치가 유니캐스트로 데이터를 전달해 주소를 찾는다.

RARP (Reverse Address Resolution Protocol)

MAC 주소를 IP 주소로 변환하는 프로토콜이다.
네트워크를 부팅하는 장치가 IP 주소를 동적으로 얻기 위해 사용된다.
1. 장치가 특정 IP 주소의 MAC 주소를 알지 못할 때 RARP 요청을 브로드캐스트하여 
연결된 네트워크에 있는 장치에게 모두 보낸다.
2. 해당 IP 주소를 가진 장치가 유니캐스트로 데이터를 전달해 주를 찾는다.

이진수

이진수(Binary)란?
이진수는 0과 1의 두 가지 숫자만을 사용하는 숫자 체계이다. 
컴퓨터와 디지털 시스템에서는 모든 데이터를 이진수로 처리한다.

이진수의 특징

1. 기본 숫자: 이진수는 0과 1만을 사용한다.
2. 비트(Bit): 이진수의 각 자리는 '비트'라고 하며, 하나의 비트는 0 또는 1의 값을 가진다.
3. 바이트(Byte): 8개의 비트로 구성된 단위를 바이트라고 하며, 컴퓨터 메모리의 기본 단위이다.

스크린샷 2024-07-15 223518

이진수의 활용

1. 데이터 저장: 모든 데이터(숫자, 문자, 이미지)는 이진수 형태로 저장된다.
2. 연산: 컴퓨터 내부의 모든 연산(덧셈, 뺄셈 등)은 이진수로 수행된다.
3. 네트워킹: IP 주소와 같은 네트워크 주소는 이진수 형태로 표현된다.

이진수로 변환: 숫자를 이진수로 변환하거나 이진수를 10진수로 변환하는 함수 사용

비트 연산: AND, OR, NOT 등의 비트 연산을 통해 데이터 처리

IPv4와 IPv6

인터넷 프로토콜 주소 (IP 주소)를 정의하는 두 가지 프로토콜이다.
각 장치가 식별되는 방식을 제공한다.

대부분의 네트워크는 IPv4를 사용하고 있으나 IPv6이 점차 도입되고 있다.
IPv6은 주소 고갈 문제를 해결하고 보안을 강화하며 다양한 기기간의 연결을 지원하는 장점이 있다.

IPv4 (Internet Protocol version 4)

IPv4는 인터넷 초기에 개발된 IP 주소 체계이다
주소 형식
32비트로 구성되며, 보통 4개의 8비트 숫자(옥텟)로 나타낸다. 
각 옥텟은 0부터 255까지의 값이 가능하며 192.168.0.1과 같은 형태로 표현된다.

주소 고갈 문제
IPv4는 주소 공간이 4,294,967,296(약 42억 9천 4백 96만 7천 2백 96)개의 주소만 가능하며
이는 현재의 인터넷 접근 요구를 충족시키기에 부족하다. 따라서 IPv4 주소 부족 문제가 발생한다.

네트워크 클래스
IPv4는 주소를 클래스 A, B, C, D, E로 나누어 관리하며, 이는 네트워크의 크기와 범위를 정의하는 데 사용된다.

NAT(Network Address Translation)
IPv4 주소 부족 문제를 해결하기 위해 NAT가 사용되어왔다.
NAT는 프라이빗(IPv4 주소가 고유하지 않은) 주소를 사용하는 여러 장치가 하나의 공인 IPv4 주소를 공유할 수 있게 해준다.

체크섬 선택 

IPv6 (Internet Protocol version 6)

IPv6는 IPv4의 한계를 극복하기 위해 개발된 인터넷 프로토콜이다.

주소 형식
128비트로 구성되며, 16진수로 표현된다. 
각 세그먼트는 콜론(:)으로 구분된다. 예를 들어, 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같은 형태로 표현되며
앞의 연속되는 0은 생략 가능하다.

주소 공간
IPv6는 거의 무한히 많은 주소를 제공한다. 
총 주소 수는 약 340,282,366,920,938,463,463,374,607,431,768,211,456 개이며, 
이는 현재와 미래의 모든 기기에 충분한 주소 공간을 제공한다.

간소화된 헤더 포맷
IPv6는 헤더 포맷이 간소화되어 라우팅 및 처리 효율성을 높인다. 
또한, 특정 기능들이 옵션으로 분리되어 있어 확장성이 좋다.

IPsec 내장
IPSec은 데이터 패킷을 암호화 하는 보안 네트워크 프로토콜 제품군이다.
이 제품군이 IPv6에 내장되어있다.

IPv4와의 호환성
IPv6는 IPv4와 하위 호환성을 가진다. 
이를 통해 점진적으로 IPv4에서 IPv6로 전환할 수 있다.

체크섬 선택 필수

스크린샷 2024-07-15 224544

IPv4에는 CRC를 통한 손상된 패킷을 확인하고 폐기하는데 쓰는 체크섬 필드가 있다.
그러나 IPv6은 해당 체크섬 필드가 존재하지 않는다.

왜냐하면 상위 프로토콜(TCP, UDP)에 체크섬필드가 있기 때문에 
헤더의 효율화를 위해 버전이 업그레이드 되면서 사라졌다.

CRC: 순환중복검사로 네트워크 상에서 데이터에 오류가 있는지 확인하기 위한 체크값을 결정하는 방식

데이터를 전송하기 전에 주어진 데이터의 값에 따라 CRC 값을 계산하여 데이터에 붙여 전송하고
데이터 전송이 끝난 후 받은 데이터의 값으로 다시 CRC 값을 계산한다.
이어서 두 값을 비교하고 이 두 값이 다르면 데이터 전송 과정에서 잡음 등에 의해 
오류가 덧붙여 전송된 것을 알 수 있다,

IPv6에서 TTL은 HOP limit로 대체되었다.

TTL은 IPv4에서 TTL 필드는 패킷이 네트워크에서 무한순환하지 않도록 하는 변수이다.
패킷이 네트워크에서 라우터를 거칠 때마다 TTL 값이 1씩 감소한다.
값이 0이 되면 패킷이 폐기된다.

클래스풀

초기의 IP주소 할당체계

IP 주소는 인터넷 주소로 네트워크 주소, 호스트 주소, 두 부분으로 나뉜다.
네트워크주소는 호스트들을 모은 네트워크를 지정한다.

네트워크 주소가 동일 = 로컬 네트워크

호스트 주소 = 호스트를 구분하기 위한 주소

네트워크 호스트 = 컴퓨터 네트워크에 연결된 컴퓨터나 기타 장치

스크린샷 2024-07-15 225213

네트워크 주소를 매기고 그에 따라 크기를 다르게 클래스를 할당하는 주소체계.
구분하는 기준자 (1, 2, 3 옥탯)을 서브넷 마스크라고 한다.

클래스 A

첫 번째 옥텟(8비트)이 네트워크 식별자로 사용된다.
범위: 0.0.0.0 ~ 127.255.255.255
예시: 10.0.0.1, 100.1.1.1
호스트 부분: 나머지 24비트 (2^24 - 2개의 호스트 주소 사용 가능)

클래스 B

첫 번째 두 개의 옥텟(16비트)이 네트워크 식별자로 사용된.
범위: 128.0.0.0 ~ 191.255.255.255
예시: 172.16.0.1, 150.1.1.1
호스트 부분: 나머지 16비트 (2^16 - 2개의 호스트 주소 사용 가능)

클래스 C

첫 번째 세 개의 옥텟(24비트)이 네트워크 식별자로 사용된.
범위: 192.0.0.0 ~ 223.255.255.255
예시: 192.168.0.1, 200.1.1.1
호스트 부분: 나머지 8비트 (2^8 - 2개의 호스트 주소 사용 가능)

주소 중 2개를 빼는 이유

맨 앞자리는 네트워크 주소로 남겨두며 마지막 주소는 브로드캐스팅 주소이다.
그렇기 때문에 -2를 뺀다.

클래스 풀의 문제점

클래스풀은 초기의 IPv4 주소 할당 체계로, IP 주소를 세 가지 클래스로 나누어 관리하는 방식이다.
각 클래스는 고정된 네트워크 부분과 호스트 부분을 가지고 있으며
주소 할당의 유연성이 부족하여 CIDR(Classless Inter-Domain Routing)의 도입으로 대체되었.
네트워크의 크기가 작은 경우
큰 네트워크를 필요로 하는 조직은 여러개를 확보해야 한다.

또한 작은 네트워크가 필요한 조직의 경우 너무 많은 IP를 가져가므로
IP가 낭비가 된다.

클래스리스

IP 주소 할당 체계에서 클래스풀의 한계를 극복하기 위해 도입된 개념이다.
클래스풀은 A, B, C 클래스로 고정된 네트워크를 가지고 있어
작은 네트워크에 대한 IP 할당이 낭비되는 문제가 있었다.

클래스리스는 이러한 문제를 해결하기 위해 서브넷팅과 함께 유연한 IP 할당을 가능하게 한다.

클래스풀 네트워킹: 고정된 클래스(A, B, C)에 따라 네트워크를 나누고 고정된 서브넷 마스크를 사용한다.

클래스리스 네트워킹 (CIDR): 클래스 기반의 제한을 없애고 가변 길이 서브넷 마스크를 사용하여 더 유연하게 네트워크를 구성한다.

CIDR

네트워크 주소를 효율적으로 표현하고 관리하기 위해 개발된 방식. 
IP 주소: 네트워크 주소를 나타내는 IPv4 주소. 예를 들어, 192.168.1.0은 네트워크의 시작 주소이다.

슬래시(/): IP 주소와 서브넷 마스크 길이를 구분하는 특수 기호. 슬래시 다음에 나오는 숫자는 서브넷 마스크의 길이이다.

서브넷 마스크 길이: IP 주소에서 네트워크 부분을 나타내는 비트 수. 
서브넷 마스크 길이가 클수록 네트워크 부분이 많아지고, 작을수록 호스트 부분이 많아진다.

예를 들어, "192.168.1.0/24"는 IP 주소가 "192.168.1.0"이며, 
이 네트워크의 서브넷 마스크 길이는 24비트이다. 
이는 첫 24비트가 네트워크를 식별하는 데 사용되며, 나머지 8비트가 호스트를 식별하는 데 사용된다는 것을 나타낸다.

서브넷(Subnet)

네트워크를 논리적으로 분할하는 작업.
대규모 네트워크를 작은 네트워크로 나누어 관리하거나 보안을 강화하는 등의 목적으로 사용된다. 
예를 들어, 하나의 네트워크를 두 개 이상의 서브넷으로 나뉜다.

서브넷 마스크(Subnet Mask)

IP 주소의 일부를 서브넷 ID와 호스트 ID로 나눈다. 
서브넷 마스크는 IP 주소와 함께 사용되며, IP 주소의 어느 부분이 네트워크 주소인지를 나타내는 비트의 패턴이다. 
예를 들어, 서브넷 마스크가 "255.255.255.0"인 경우, 이는 32비트 IPv4 주소 중 처음 24비트가 네트워크 주소를 나타내고 
나머지 8비트가 호스트 주소를 나타낸다.
ipconfig

스크린샷 2024-07-15 234750

공인 IP (public) 와 사설 IP (private)

공인 IP (Public IP)

공인 IP는 인터넷에서 전 세계적으로 고유한 주소이다.
이 주소는 인터넷 서비스 제공자(ISP)에 의해 할당되며, 인터넷을 통해 직접 접근할 수 있는 IP 주소이다
모든 장치가 공인 IP를 가질 수는 없고, 보통 네트워크의 외부에 위치한 서버나 라우터 등이 공인 IP를 사용한다.

사설 IP (Private IP)

비공개 네트워크에서 사용되는 주소로 인터넷에서 직접 접근할 수 없다.
가정 내의 컴퓨터, 스마트폰, 헤드폰, IoT 장치 등에서 사용된다.
사설 IP 주소 범위는 IPv4에서는 주로 다음과 같은 범위로 할당된다.
10.0.0.0 ~ 10.255.255.255, 172.16.0.0 ~ 172.31.255.255, 192.168.0.0 ~ 192.168.255.255.

NAT (Network Address Translation)

스크린샷 2024-07-15 235652

NAT는 사설 네트워크 내의 여러 장치가 하나의 공인 IP 주소를 사용하여 인터넷에 접속할 수 있게 해주는 기술이다.
사설 IP 주소를 공인 IP 주소로 변환하고, 반대로 공인 IP 주소에서 들어오는 데이터를 사설 IP 주소로 변환하여
내부 네트워크에서 효율적으로 관리할 수 있다.
NAT를 통해 네트워크 보안이 강화되며, IPv4 주소 부족 문제를 해결하는 데 기여한다.

장점

NAT을 통해 내부 네트워크 IP가 노출되지 않는다.

공유기와 NAT

공유기는 여러 장치가 하나의 인터넷 연결을 공유할 수 있게 해주는 네트워크 장비이다.
여기에는 NAT(Network Address Translation) 기능이 포함되어 있다.

이를 통해 여러 장치가 하나의 공인 IP 주소를 공유하며 인터넷에 접근할 수 있다.

공유기에서의 NAT의 역할

스크린샷 2024-07-16 000017

NAT는 공유기에서 사용되는 주요 기술 중 하나로, 
로컬 네트워크 내의 사설 IP 주소를 공인 IP 주소로 변환하거나 반대로 변환한다.
사설 IP 주소에서 공인 IP 주소로 변환

로컬 네트워크 내의 각 장치들이 인터넷에 접속할 때
공유기는 각 장치의 사설 IP 주소를 공유기의 공인 IP 주소로 변환하여 인터넷에 보낸다.

공인 IP 주소에서 사설 IP 주소로 변환

인터넷에서 데이터가 공유기의 공인 IP 주소로 들어오면
공유기는 이를 사설 IP 주소로 변환하여 로컬 네트워크 내의 해당 장치로 전달한다.