이더넷 (Ehternet)

유선 LAN에서 널리 사용되는 통신 기술로, IEEE 802.3 표준에 따라 작동한다.
이 표준은 여러 종류의 물리 매체를 통해 데이터 전송을 지원하며
주로 동축 케이블, 광 케이블, 구리 케이블 등을 사용하여 구축된다.

스크린샷 2024-07-20 100849

IEEE802.3이란 이더넷프레임은 어떤 구조를 기반으로 하는지
케이블의 최대 전송량, 어떤 케이블만이 가능하도록 할 것인지 등을 정한 규칙이다.

전이중화

스크린샷 2024-07-20 100855

전이중화란 한 번에 두 방향으로 데이터를 송수신할 수 있는 통신 방식을 말한다.
이는 데이터를 송신할 때 동시에 데이터를 수신할 수 있어 

효율적인 데이터 전송이 가능하다는 장점을 제공한다. 
이더넷에서는 전이중화 통신을 위해 
CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 방식을 사용한다.

CSMA/CD (Carrier Sense Multiple Access with Collision Detection)

스크린샷 2024-07-20 100859

회선을 사용하는지 파악한 후 사용하지 않는다면 데이터를 보내고
충돌이 발생하며 일정 시간 이후 재전송한다.
Carrier Sense(CS)
데이터를 송신하기 전에 먼저 다른 장치가 데이터를 전송하고 있는지 감지한다. 
즉, 매체가 사용 중인지 여부를 확인한다.

Multiple Access(MA)
여러 장치가 동일한 매체를 공유하고 있으며, 동시에 데이터를 송수신할 수 있다.

Collision Detection(CD)
데이터 충돌이 발생했을 때 이를 감지하고 충돌이 발생한 장치는 일정 시간 동안 대기한 후 다시 데이터를 전송한다.

반이중화 통신 (Half Duplex Communication):

반이중화 통신은 양방향 통신이 가능하지만, 동시에는 양쪽 모두가 통신할 수 없는 방식이다. 
데이터 전송이 단방향으로만 일어날 수 있는 경우이다. 

예를 들어, 휴대폰 무전기나 라디오에서 사용되는 방식이 반이중화 통신의 대표적인 예다. 
한 번에 한 방향으로만 데이터를 송수신할 수 있다.

CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)

스크린샷 2024-07-20 100926

CSMA/CA는 네트워크에서 데이터 충돌을 방지하기 위한 메커니즘이다. 
이는 다중 접속 환경에서 여러 장치가 동시에 데이터를 전송하는 것을 조절하는 역할을 한다. 

주로 무선 LAN (Wi-Fi)에서 사용되며, 각 장치는 데이터를 보내기 전에 채널을 감지하고
충돌을 최소화하기 위해 일정 시간 동안 기다린다.

CSMA/CA는 무선 환경에서 특히 중요하다
무선 네트워크는 전송되는 데이터가 공기를 통해 퍼져가기 때문에 충돌이 발생할 수 있기 때문이다.

채널 감지 (Carrier Sense)

데이터를 전송하기 전에 먼저 채널을 감지하여 다른 장치가 데이터를 전송 중인지 확인한다.
채널이 사용 중이면 기다린다.

IFS (InterFrame Space) 기다림

CSMA/CA는 사용 가능한 채널을 발견하면 프레임을 전송하기 전에 IFS라는 간격 동안 기다린다.
IFS는 프레임의 우선 순위를 정의할 때도 사용된다. 
우선순위가 높은 프레임이 먼저 전송될 수 있도록 이 간격을 활용한다.

랜덤 백오프 (Random Backoff)

프레임을 보내기 전에 임의의 시간 동안 대기한다. 이 시간은 0부터 랜덤한 상수에 의해 결정된다. 
상수는 충돌이 발생할 때마다 지수적으로 증가하는 값이다. 
이 과정은 다수의 장치가 동시에 데이터를 전송하는 것을 방지하고, 임의성을 도입해 충돌 확률을 줄인다.

전송과 ACK 수신

프레임을 보낸 후에는 정확한 송신 여부를 확인하기 위해 ACK (Acknowledgment) 세그먼트를 기다린다. 
ACK를 받으면 데이터 전송이 성공적으로 완료된다. 
만약 ACK를 받지 못하면 k 값을 증가시킨 후 재전송을 시도한다.

재전송 제한 (Exponential Backoff Limit)

k 값이 정해진 임계치 Kmax를 넘어가면 해당 프레임 전송을 포기하고 "중단" 상태로 처리한다. 
이는 네트워크의 혼잡 상태를 관리하고, 효율적인 데이터 전송을 보장하는 중요한 메커니즘이다.

와이파이

와이파이(Wi-Fi) 기술은 무선 LAN(로컬 에어리어 네트워크)을 구축하여 전자기기들이 인터넷에 연결할 수 있도록 해주는 기술이다.

무선 LAN 기술

와이파이는 무선으로 통신하는 LAN 기술의 일종입니다. 전통적인 유선 LAN(Ethernet)과 비교할 때
물리적인 케이블이 필요하지 않고 무선 신호를 통해 데이터를 전송합니다.

주로 가정, 사무실, 공공 장소 등에서 널리 사용되며, 사용자들은 무선 LAN 신호에 따라 
스마트폰, 태블릿, 노트북 등 다양한 장치를 인터넷에 연결할 수 있습니다.

접속 방식

일반적으로 와이파이는 라우터나 AP(Access Point, 접속점)라 불리는 장치를 통해 구축된다. 
이 장치는 유선 인터넷을 무선 신호로 변환하여 사용자 장치가 접근할 수 있도록 한다.
사용자는 와이파이 신호를 검색하여 접속하고, 인증 절차를 거친 후에 인터넷을 사용할 수 있다.

기술적 특징:

주파수 대역: 대부분의 와이파이는 2.4GHz와 5GHz 주파수 대역을 사용한다. 5GHz는 더 높은 전송 속도와 적은 간섭을 제공하며
최신 기술에서는 더 높은 주파수 대역도 사용된다.

프로토콜: IEEE 802.11 표준을 따르며, 각기 다른 버전(예: 802.11n, 802.11ac)에 따라 전송 속도와 기능이 달라진다.

보안: 와이파이 네트워크는 WPA/WPA2 암호화 프로토콜을 통해 데이터 보안을 유지한다. 
최신 기술에서는 WPA3가 도입되어 보안 수준을 높이고 있다.

활용

와이파이는 모바일 기기의 증가와 인터넷 사용의 편의성을 높이는 데 크게 기여하고 있다.
다양한 장소에서 무선 인터넷 접속이 가능해지면서, 사용자들은 이동 중에도 인터넷 서비스를 이용할 수 있다.

스크린샷 2024-07-20 100932

무선 LAN(WLAN, Wireless Local Area Network)은 무선 신호 전달 방식을 이용하여
2대 이상의 장치를 연결하는 기술이다.

비유도 매체인 공기에 주파수를 쏘아 무선 통신망을 구축하는데, 주파수 대역은 2.4GHz
대역 또는 5GHz 대역 중 하나를 써서 구축한다.

스크린샷 2024-07-20 100935

2.4GHz 주파수 대역

장애물에 강함: 2.4GHz 주파수는 저주파수 대역으로, 장애물(벽, 천장 등)을 통과하는 능력이 뛰어나다. 
그러므로 신호 간섭이나 벽을 통과할 때의 감쇠가 적다.

속도가 느림: 비교적 낮은 주파수 때문에 데이터 전송 속도가 상대적으로 느리다. 
일반적으로 2.4GHz에서 제공되는 최대 전송 속도는 600Mbps 정도이다.

호환성이 좋음: 오래된 노트북, 휴대폰 등과의 호환성이 좋아, 다양한 디바이스와 연결할 수 있다.

커버리지가 높음: 저주파수 대역이기 때문에, 신호의 커버리지(거리에 따른 신호 범위)가 넓어서 
멀리 있는 장소에서도 상대적으로 신호를 잘 받을 수 있다.

5GHz 주파수 대역

장애물에 약함: 5GHz 주파수는 고주파수 대역으로, 벽이나 다른 장애물을 통과하는 능력이 2.4GHz보다는 약하다. 
그래서 장애물이 있을 경우 연결이 끊기기도 한다.

속도가 빠름: 고주파수 대역이기 때문에 데이터 전송 속도가 빠르다. 
일반적으로 5GHz에서 제공되는 최대 전송 속도는 1.3Gbps 이상이다.

호환성이 낮음: 더 최신의 기기들이 필요하며, 오래된 노트북이나 휴대폰 등 일부 디바이스와 연결할 수 없을 수 있다.

커버리지가 작음: 고주파수 대역이기 때문에, 신호의 커버리지가 낮아서 멀리 있는 장소까지는 신호가 잘 닿지 않을 수 있다. 
그러나 더 빠른 속도를 제공하기 때문에 밀집된 지역에서 선호된다.

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

로컬 스토리지 / 세션 스토리지 / 쿠키  (0) 2024.08.14
케이블  (0) 2024.08.13
HTTP 상태코드  (0) 2024.08.13
레이어별 네트워크 장치  (0) 2024.08.13
HTTPS 보안 프로토콜  (0) 2024.08.13

HTTP 상태코드

클라이언트가 서버로부터 요청한 HTTP 요청의 처리 결과를 나타낸다.
모든 HTTP 응답은 상태 코드와 함께 반환되며
상태 코드는 요청의 성공, 실패, 리다이렉션 등을 나타낸다.

1XX (정보성 상태 코드)

서버가 요청을 잘 받았으며 해당 프로세스를 계속 이어가며 처리하는 것을 의미한다.
POST 요청 시 사용된다.
100 Continue: 클라이언트가 서버로부터 요청을 계속할 수 있는 상태

2xx (성공 상태 코드)

서버가 요청을 잘 받았으며 이를 기반으로 클라이언트에게 성공적으로 데이터를 보냈다.
200 OK: 요청이 성공적으로 처리되었다. GET 또는 POST 요청이 성공할 때 반환된다.
201 Created: 요청이 성공적으로 처리되었고 새 리소스가 생성되었다.
POST 요청이 리소스를 생성할 때 사용된다.

3xx (리다이렉션 상태 코드)

서버가 클라이언트의 요청 완료를 위해 추가 작업 조치가 필요하다.
301 Moved Permanently
요청한 리소스가 새 위치로 영구적으로 이동되었음. 클라이언트는 이후 요청시 새 위치를 사용해야 한다.

302 Found (Moved Temporarily)
요청한 리소스가 일시적으로 다른 위치로 이동되었음. 클라이언트는 임시적으로 새 위치를 사용해야 한다.

4xx (클라이언트 오류 상태 코드)

클라이언트가 요청한 페이지를 제공할 수 없거나 
클라이언트의 요청이 잘못되어 요청을 처리할 수 없는 상태
400 Bad Request 
요청이 잘못되었다. 클라이언트의 요청 구문이 잘못되었거나 서버가 이해할 수 없는 요청을 보낸 경우.

401 Unauthorized 
요청한 리소스에 접근하기 위한 인증이 필요하다. 클라이언트는 인증 헤더를 포함하여 다시 요청해야 한다.

403 Forbidden
요청이 서버에 의해 거부되었다. 클라이언트는 요청한 리소스에 접근할 권한이 없다.

404 Not Found
요청한 리소스를 찾을 수 없다. 클라이언트가 잘못된 경로나 존재하지 않는 리소스를 요청한 경우.

5xx (서버 오류 상태 코드)

서버가 클라이언트의 요청을 처리하지 못하는 상태
500 Internal Server Error
서버에 오류가 있음을 의미한다. 서버 애플리케이션에서 발생하는 코드 버그, 예외로 인해 발생할 수 있다.
이 상태 코드는 구체적인 오류의 원인을 클라이언트에게 전달하지 않는다.

502 Bad Gateway
게이트웨이 역할을 하고 있는 프록시 서버에서 유효하지 않은 응답을 받았음을 나타낸다.
프록시 서버가 유효하지 않거나, 연결이 실패하여 요청을 처리할 수 없는 상태이다.

503 Service Unavailable
서버가 과부하 상태에 있거나 유지 보수 중이라는 것을 클라이언트에게 알리는 용도로 쓰인다.
서버가 복구되면 이 상태 코드를 반환하지 않는다.

504 Gateway Timeout
서버로부터 프록시 서버로 응답을 기다리는 시간이 초과되었음을 나타낸다. 
이는 네트워크 문제, 서버 부하, 또는 업스트림 서버의 장애로 인해 발생할 수 있다.

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

케이블  (0) 2024.08.13
이더넷  (0) 2024.08.13
레이어별 네트워크 장치  (0) 2024.08.13
HTTPS 보안 프로토콜  (0) 2024.08.13
IP 주소와 MAC 주소  (0) 2024.07.17

레이어 별 네트워크 장치

네트워크 기기는 계층별로 나뉜다.
상위 계층을 처리하는 기기는 하위계층을 처리할 수 있지만 반대는 불가능하다.
예를 들어 애플리케이션 계층을 담당하는 로드밸런서는 분산처리가 가능하지만
물리계층의 장치 중 하나인 NIC는 하지 못한다.

스크린샷 2024-07-20 100747

애플리케이션 계층 (Application Layer)

L7 스위치 (Layer 7 Switch)

스크린샷 2024-07-20 100809

애플리케이션 계층에서 동작하는 스위치로, OSI 7계층 모델에서 최상위 계층에 위치한다. 
HTTP/HTTPS와 같은 프로토콜을 분석하고 트래픽을 관리하여 
서버 부하 분산, 보안 및 성능 최적화 등의 기능을 수행한다.

헬스 체크

네트워크 장비나 서비스의 상태를 모니터링하고 평가하는 프로세스이다.
네트워크의 정상 작동 여부를 확인하고 문제가 발생할 가능성을 사전에 예방한다.
L7 스위치와 L4 스위치 모두 헬스 체크를 통해 전송 주기와 재전송 횟수 등을 설정한 이후
서버에 반복적으로 요청을 보내면서 정상적인 서버 또는 비정상적인 서버를 판별한다.

전송 계층 (Transport Layer)

L4 스위치 (Layer 4 Switch)

스크린샷 2024-07-20 100821

전송 계층에서 동작하는 스위치로, OSI 모델의 전송 계층에 위치한다. 
TCP와 UDP 포트 번호를 기반으로 트래픽을 분배하거나 로드 밸런싱을 수행한다.

인터넷 계층 (네트워크 계층)

라우터 (Router)

스크린샷 2024-07-20 100825

네트워크 계층에서 동작하는 장비로, OSI 모델의 네트워크 계층에 위치한다. 
다양한 네트워크 간 경로 선택과 패킷 전송을 처리한다.

L3 스위치 (Layer 3 Switch)

네트워크 계층에서 동작하는 스위치로, 라우팅 기능을 갖추고 있어 라우터와 유사하지만 
스위칭 속도가 빠르고 복잡한 네트워크 환경에서 사용된다.

데이터 링크 계층

스크린샷 2024-07-20 100830

L2 스위치 (Layer 2 Switch)

데이터 링크 계층에서 동작하는 스위치로, OSI 모델의 데이터 링크 계층에 위치한다. 
MAC 주소를 기반으로 프레임을 스위칭하여 로컬 네트워크 세그먼트 간 데이터 전송을 관다한다.

브리지 (Bridge)

스크린샷 2024-07-20 100835

두 개 이상의 네트워크 세그먼트를 연결하여 데이터를 전달하는 장치로
OSI 모델의 데이터 링크 계층에 위치한다.

물리 계층

NIC (Network Interface Card)

스크린샷 2024-07-20 100841

컴퓨터나 기타 장치가 네트워크에 연결될 수 있도록 하드웨어적으로 구현된 네트워크 인터페이스이다.

리피터 (Repeater)

물리 계층에서 동작하는 장치로, 신호를 증폭하여 장거리 통신을 가능하게 한다.

AP (Access Point)

무선 네트워크에서 사용되는 물리 계층 장치로, 유선 네트워크와 무선 네트워크 간의 통신을 중계한.

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

이더넷  (0) 2024.08.13
HTTP 상태코드  (0) 2024.08.13
HTTPS 보안 프로토콜  (0) 2024.08.13
IP 주소와 MAC 주소  (0) 2024.07.17
TCP/IP  (0) 2024.07.17

HTTPS

HTTP 프로토콜을 보안 강화 버전으로 확장한 것이다.
HTTPS는 데이터 통신의 보안을 강화하기 위해 SSL 또는 TLS 프로토콜을 사용한다.

보안

데이터 암호화를 통해 중간자 공격을 방지하고
데이터의 무결성을 보장한다. 사용자와 서버간의 통신이 안전하게 이루어지도록 한다.

신원 인증

HTTPS는 SSL / TLS 인증서를 사용하여 서버의 신원을 인증한다.
이를 통해 사용자는 자신이 접속한 웹 사이트가 신뢰할 수 있는지 판단한다.

SEO 강화

검색 엔진에서는 HTTPS 사이트를 선호하며
HTTPS 사용 여부는 검색 엔진 최적화(SEO)에 긍정적인 영향을 미친다.

법적 요구 사항

일부 규제 기관이나 산업 규범에서 HTTPS 사용을 의무화하고 있다.
예를 들어, 결제 처리나 개인정보 보호와 관련된 웹 사이트에서는 HTTPS 사용이 필수적이다.

SSL / TLS

네트워크 동신에서 보안을 강화하는 프로토콜이다.
TLS 는 SSL의 후속 버전이며 웹 서버와 클라이언트 간의 통신에서
데이터의 안정성을 보장하고 인증을 제공한다.

SSL

1. 암호화: 데이터를 암호화하여 중간자가 가로채거나 변조할 수 없도록 보호한다.
2. 인증: 클라이언트가 접속한 서버의 신원을 확인하여 접속을 보장한다.
3. 무결성: 전송 중 데이터가 변조되지 않고 온전하게 전달되도록 보장한다.

TLS

1. 암호화 강화: SSL 보다 더 강력한 암호화 알고리즘을 지원한다.
2. 전송 무결성 보장: 데이터가 전송 중에 변조되지 않도록 보장한다.
3. 서버 인증: 클라이언트는 접속한 서버의 신원을 인증할 수 있다.
4. 상호 운용성: 다양한 플랫폼과 서비스 간의 상호 운용성을 제공한다.
5. 보 결함 수정: SSL의 보안 결함을 보완하고 새로운 보안 문제에 대응한다.

암호화

스크린샷 2024-07-18 224708

암호화는 승인된 당사자만 정보를 이해할 수 있도록 데이터를 스크램블 한 방법이다.

이를 복호화하려면 송신자와 수신자가 서로 동의한 키가 필요하다.
또한 이를 만들기 위해 키가 쓰이기도 한다.

스크램블

스크린샷 2024-07-18 224815

각 단어나 문자를 패턴에 따라 암호화는 것이 아닌
무작위 방식으로 개별 데이터 비트를 섞는다.
고급 암호화 표준으로 암호화된 파일의 경우 약 10회 스크램블되며
다른 컴퓨터가 키 없이 해독하기 어렵다.

비트가 높아질수록 스크램블을 많이 하고 복잡해진다.

대칭 암호화

키를 하나만 사용하는 암호화 방법이다.
키 관리가 어렵지만 처리 속도가 빠르고 간단하게 구현할 수 있다.

plaintext + key = ciphertext: hello + 2jd8932kd8 = X5xJCSycg14=

Ciphertext + key = plaintext: X5xJCSycg14 = + 2jd8932kd8 = hello

동작 원리

암호화

데이터를 전송하는 사람은 암호화할 데이터와 함께 특정한 알고리즘을 사용하여
암호화 키를 사용하여 데이터를 암호화한다.

복호화

데이터를 수신한 사람은 암호화된 데이터와 동일한 알고리즘과 키를 사용하여
데이터를 암호화한다.

키 관리

암호화와 복호화에 동일한 키를 사용하기 때문에 키의 관리가 중요하다.
키를 안전하게 관리하지 않으면 데이터가 위험에 노출될 수 있다.

속도

대칭 암호화는 복잡한 수학적 계산 없이 키를 이용해 데이터를 빠르게 암호화하고
복호화할 수 있어 처리 속도가 빠르다.

사용 사례

데이터 전송

대칭 암호화는 HTTPS 프로토콜에서 데이터 전송을 보호하는 데 사용된다.

저장 데이터 암호화

디스크에 저장된 데이터를 암호화하여 보호할 때 사용된다.
예를 들어 데이터베이스의 암호화 기능 등에서 사용된다.

파일 암호화

파일 수준에서 데이터를 보호하는 데 사용된다.
보안이 필요한 문서나 개인 정보가 포함된 파일을 암호화할 때 사용된다.

비대칭 암호화

공개키 암호화라고도 한다.
데이터를 암호화하고 복화하는 데 두 개의 서로 다른 키를 사용하는 암호화 기술이다.
이러한 키는 공개키와 비밀키 한 쌍으로 이루어져 있다.

데이터의 기밀성과 무결성을 보장하며 인증을 제공한다.

동작 원리

공개키와 개인키 생성

공개키와 개인키를 생성한다. 두 키는 수학적으로 연관되어 있으나
공개키를 통해 개인키를 추론할 수 없다.

암호화

데이터를 전송하려는 사람은 수신자의 공개키를 사용하여 데이터를 암호화한다.
이 암호화된 데이터는 수신자의 공개키로만 복호화 할 수 있다.

복호화

데이터를 수신한 수신자는 자신의 개인키를 사용하여 암호화된 데이터를 복호화한다.
이 과정에서 공개키로 암호화된 데이터는 개인키로만 해독할 수 있기 때문에 데이터의 기밀성이 보장된다.

비대칭 암호화의 특징

기밀성

공개키로 암호화된 데이터는 개인키로만 복호화할 수 있기 때문에 데이터의 기밀성이 보장된다.

인증

개인키를 통해 암호화된 데이터는 공개키로만 복호화 할 수 있기 때문에 데이터의 출처를 인증할 수 있다.

전자 서명

개인키로 생성된 전자 서명은 공개키로만 검증이 가능하다. 데이터의 무결성을 보장할 수 있다.

사용 사례

SSL/TLS

웹에서 데이터 전송 시에 사용되며 공개키 인증서를 통해 서버와 클라이언트 간의 통신을 보호한다.

전자 메일 보안

전자 메일의 암호화와 서명을 위해 사용된다.

전자 서명

디지털 문서의 인증과 무결성 검증에 사용된다.

암호화의 필요성

암호화는 의도된 수신자 또는 송신자를 제외하고는 통신을 하이재킹하여 읽을 수 없게 한다.
이를 통해 민감한 데이터의 유출을 방지하고 데이터 무결성을 보장한다.

TLS 핸드셰이크

SSL(Secure Socket Layer)은 SSL 1.0부터 시작해서 SSL 2.0, SSL 3.0, TLS(TransportLayer Security Protocol) 1.0
TLS 1.3까지 버전이 올라가며 마지막으로 TLS로 명칭이 변경되었다.

스크린샷 2024-07-18 233308

TLS 핸드셰이크는 클라이언트와 서버 간의 안전한 통신을 설정하기 위한 프로토콜이다.
이 과정에서 클라이언트와 서버는 서로의 신원을 인증하고 통신에 사용할 암호화 알고리즘과 키를 생성한다.

보안 소켓 (SSL)에서도 동일한 방식으로 동작하며 데이터의 기밀성과 무결성을 보장하여
중간자 공격을 방지하고 안전한 통신을 가능하게 한다.

TLS 핸드셰이크 과정

1. Hello 메시지 교환

클라이언트가 서버에게 첫 번째 Hello 메시지를 보낸다.
클라이언트가 지원하는 TLS 버전, 사이퍼슈트와 클라이언트 랜덤값 (무작위 문자열) 임시 DH 매개변수를 서버에게 보낸다.

2. 서버 Hello 응답

서버는 클라이언트에게 Hello 응답을 보낸다. 
이 응답에는 서버가 선택한 TLS 버전, 사용할 암호화 알고리즘, 서버 인증서 (공개키 인증서)가 포함된다.

3. 인증

클라이언트는 서버가 보낸 인증서를 검증한다.
인증서는 서버의 공개키를 포함하고 있으며 클라이언트는 이를 사용하여 데이터를 암호화한다.

4. Pre-master secret 생성

클라이언트와 서버는 Pre-master secret라는 임시 암호 키를 생성한다.
이 임시 암호키는 실제 통신에 사용될 세션 키를 생성하는데 사용된다.

5. 세션 키 생성

클라이언트와 서버는 각각 Pre-master secret를 사용하여 세션 키를 생성한다.
이 세션키는 데이터를 암호화하고 복호화하는 데 사용된다.

6. Finished 메시지

클라이언트와 서버는 각각 생성한 세션 키를 사용하여 Finished 메시지를 서로 교환한다.
이 메시지는 핸드셰이크가 완료되었음을 나타내며 이후 데이터 전송이 암호화되어 보호된다.
보안세션이 시작되었다고도 한다.

키 교환 알고리즘

각 알고리즘은 사용 환경, 보안 요구사항, 계산 리소스 등에 따라 선택될 수 있으며
암호화 통신에서는 키 교환 알고리즘이 데이터의 기밀성과 무결성을 보장한다.

DH (Diffie-Hellmain)

스크린샷 2024-07-18 235253

1976년에 개발된 공개키 암호화의 초기 형태로
서버와 클라이언트가 서로의 공개 키를 이용해 공유 비밀 키를 생성한다.
중간자 공격에 대비할 수 있는 보안성을 제공한다.
디피헬만을 사용하는 DHE와 타원곡선암호화 방법과 DH를 섞은 ECDHE가 있다.
보통 ECDHE를 사용한다.

RSA 키 교환

RSA 알고리즘은 공개키 암호화와 디지털 서명을 기반으로 한다.
RSA 키 교환은 공개키 암호화를 사용하여 통신 상대방에게 대칭 키를 안전하게 전달하는 방법으로 사용될 수 있다.
TLS 1.3 버전에서는 RSA 같은 경우 취약점이 있어 공식적으로 지원하지 않는다.

RSA의 취약점

스크린샷 2024-07-19 015757

RSA의 경우 클라이언트가 생성한 임시 암호값을 서버로 전송하지만
DH의 경우 클라이언트와 서버가 교환한 DH 매개변수를 사용해 개인키를 만든다.

이 때문에 RSA는 클라이언트에서 생성한 임시 암호값이 탈취당한 경우 해킹의 위험이 있다.
DH의 경우 탈취당해도 공통의 암호키를 만들지 못한다.

타원곡선 암호화 방법

스크린샷 2024-07-18 235424

곡선을 사용하여 개인 키 보유자만 알 수 있는 타원곡선을 그린다.
이걸 기반으로 교차점을 생성하고, 교차점의 수를 기반으로 암호를 설정한다.

사이퍼 슈트

프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약이다.
암호제품군이라고도 불리며 TLS 1.3 버전에는 다섯 개가 있다.
1. TLS_AES_128_GCM_SHA256
2. TLS_AES_256_GCM_SHA384
3. TLS_CHACHA20_POLY1305_SHA256
4. TLS_AES_128_CCM_SHA256
5. TLS_AES_128_CCM_8_SHA256

TLS: 프로토콜
AES_128_GCM: AEAD 사이퍼 모드
SHA256: 해싱 알고리즘

AEAD 사이퍼 모드

AEAD는 데이터 암호화 알고리즘이며 AES_128_GCM 등이 있다.

주요 특징

암호화

평문 데이터를 암호화하여 암호문(암호화된 데이터)를 생성한다.
암호화된 데이터는 외부에서 읽을 수 없다.

인증

인증 태그라고도 불리는 추가적인 데이터를 생성하여 원본 데이터의 무결성을 보호한다.
인증 대그는 데이터가 중간에 변경되었는지 검증하는 역할을 수행한다.

보안성

AEAD 모드는 암호화와 인증 과정을 결합하여 보안성을 강화한다.
인증 태그를 통해 데이터의 무결성이 유지되고 암호화된 데이터는 키를 가지지 않은 공격자에게는
의미 없는 데이터로 보호된다.

해싱 알고리즘

임의의 데이터를 데이터를 추정하기 힘든 고정된 길이의 고유한 값으로 변환하는 알고리즘이다.
이 고유한 값은 해시 값, 또는 해시 코드라고 불린다.
데이터의 무결성을 확인하거나, 검색 속도를 개선하거나, 데이터를 저장 및 관리하는데 사용된다.

해싱 알고리즘의 특징

스크린샷 2024-07-19 014824

고유한 해시 값

동일한 입력 데이터에 대해 항상 동일한 해시 값이 생성된다.
입력 데이터의 변경 여부를 확인할 수 있다.

고정된 길이

해시 값의 길이는 고정되어 있으며 입력 데이터의 크기에 관계없이 일정한 크기의
해시 값을 생성한다.

빠른 연산

해싱 알고리즘은 빠르게 연산이 가능하다. 많은 양의 데이터를 처리할 때 유용하다.

단방향성

해싱은 단방향 함수이다. 해시 값을 기반으로 원래 데이터를 복원하는 것은 불가능하다.
이러한 특성 때문에 비밀번호와 같은 보안적인 목적으로 사용된다.

충돌 가능성

서로 다른 입력 데이터에 대해 동일한 해시 값이 생성될 수 있다.
이를 해시 충돌이라고 한다.

해싱 알고리즘은 어떻게 쓰이나요?

스크린샷 2024-07-19 015045

인증서가 올바른 인증서인지 확인할 때 전자서명을 이용하는데
송신자가 자신의 신원을 증명하면서 해싱 알고리즘이 쓰인다.

인증 생성작업

전자 서명을 만드는데 서명되는 메시지를 해싱한다.

인증 확인작업

메시지를 복호화해서 해시를 서로 비교해 올바른 메시지인지 확인한다.

전자서명

프로그램 안에 제작자 표시를 할 때, 제작자를 쉽게 조작 못하도록 만든 장치가 전자서명이다. 

이 전자서명을 통해 인증서에 적힌 주체가 서비스 제공자인지 확인하고 
인증서에 기록된 전자서명을 기반으로 복호화한다. 

인증서에 기록된 정보들을 해시 함수에 입력하여 해시를 얻어낸 후 두 해시의 일치 여부를 확인한다. 
이를 통해 인증서의 유효성을 검증한다.

인증서

1. 주체 (인증서를 발급한 CA, 도메인, 웹사이트 소유자, 인증자 소유자
2. 공개키 (공개키, 공개키 암호화 방법)

포함하는 데이터 파일이다. 인증기관인 CA에서 발급한 SSL인증서를 기반으로 
인증작업을 수행한다.

주체는 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지 확인할 때 쓰인다.
공개키는 처음 인증작업을 수행할 때 쓰인다.

CA

스크린샷 2024-07-19 015045

클라이언트의 서버가 클라이언트가 의도한 서버가 맞는지 보장한다.
이 인증서를 발급하는 기업들을 CA라고 부른다.

서비스의 도메인, 공개키와 같은 정보는 서비스가 CA로부터 인증서를 구입할 때 제출해야 한다.

단일 도메인: 단 하나의 도메인에 적용되는 인증서

와일드카드: 도메인의 하위 도메인도 포함하는 인증서

멀티 도메인: 각자 다수의 도메인에 적용될 수 있는 인증서

0 - RTT

세션키가 생성된 후 다시 사이트에 방문한다면 미리 만들어 놓은 세션키를 기반으로 연결을 생성한다.
이 때 인증에 관한 RTT가 발생되지 않기 때문에 0 - RTT라는 특징을 가진다.

왜 네트워크 보안을 해야 할까요?

스크린샷 2024-07-19 020040

신용카드 등 민감한 금융정보를 다루는데 이점이 있고
HTTP/2를 구현할 수 있다.

TLS 패킷 분석

네트워크에서 TLS 프로토콜을 사용하여 암호화된 통신을 분석한다.
클라이언트와 서버 간의 안전한 통신을 가능하게 하는 프로토콜로
HTTPS의 기반 기술로 사용된다.
TLS 패킷 분석을 통해 통신 내용의 암호화 방법, 사용된 알고리즘, 인증서 정보 등을 이해하고
필요한 경우 문제 해결 및 보안 강화를 위한 정보를 얻을 수 있다.

TLS 패킷 분석을 위한 주요 단계 및 도구

Wireshark 사용

https://www.wireshark.org/

Wireshark는 네트워크를 패킷으로 실시간으로 캡쳐하고 분석한다.

네트워크 트래픽 캡처

TLS 패킷 분석을 위해 먼저 통신하는 클라이언트와 서버 사이의 네트워크 트래픽을 캡처한다.
Wireshart와 같은 패킷 분석 도구를 사용한다.

TLS 핸드셰이크 분석

TLS 통신이 설정되는 초기 핸드셰이크 과정을 분석한다.
클라이언트와 서버는 서로의 신원을 확인하고 사용할 암호화 알고리즘과 키를 설정한다.
Wireshark는 핸드셰이크 과정을 시각적으로 분석할 수 있는 기능을 제공한다.

암호화된 데이터 분석

TLS 통신에서는 핸드셰이크 후에 데이터가 암호화되어 전송된다.
암호화된 데이터의 구조와 패턴을 분석하여 실제 데이터의 내용은 볼 수 없지만
암호화 알고리즘, 키 교환 방식, 암호화 모드 등을 파악할 수 있다.

인증서 분석

TLS 통신에서 서버는 클라이언트에게 공개키 인증서를 제공한다.
이 인증서를 분석하여 서버의 공개키, 서버의 신원 확인 정보 등을 확인할 수 있다.

TLS 버전 및 알고리즘 확인

패킷 분석을 통해 사용된 TLS 버전과 암호화 알고리즘을 확인할 수 있다.
보안 문제를 확인하고 강화하기 위해 사용된 TLS 버전과 알고리즘 설정을 검토할 수 있다.

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

HTTP 상태코드  (0) 2024.08.13
레이어별 네트워크 장치  (0) 2024.08.13
IP 주소와 MAC 주소  (0) 2024.07.17
TCP/IP  (0) 2024.07.17
네트워크  (0) 2024.07.17

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 주소로 변환하여 로컬 네트워크 내의 해당 장치로 전달한다.

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

레이어별 네트워크 장치  (0) 2024.08.13
HTTPS 보안 프로토콜  (0) 2024.08.13
TCP/IP  (0) 2024.07.17
네트워크  (0) 2024.07.17
HTTP 통신  (0) 2024.06.26

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 주소로 변환하여 로컬 네트워크 내의 해당 장치로 전달한다.

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

레이어별 네트워크 장치  (0) 2024.08.13
HTTPS 보안 프로토콜  (0) 2024.08.13
IP 주소와 MAC 주소  (0) 2024.07.17
네트워크  (0) 2024.07.17
HTTP 통신  (0) 2024.06.26

+ Recent posts