소프트웨어 정의 네트워킹 (Software-Defined Networking, SDN)

소프트웨어 정의 네트워킹 (Software-Defined Networking, SDN) 네트워크의 제어 기능을 네트워크 장비에서 분리하여 소프트웨어 기반 컨트롤러로 중앙집중화하는 네트워크 아키텍처. 목적 네트워크 리소스 최적화 변화하는 비즈니스 요구사항에 신속한 대응 네트워크 관리 및 구성의 간소화 특징 제어 평면 (Control Plane) 과 데이터 평면 (Data Plane) 의 분리: 네트워크 장비의 제어 기능 (라우팅 결정 등) 을 별도의 소프트웨어 컨트롤러로 분리. 중앙집중식 관리: 전체 네트워크를 단일 지점에서 관리할 수 있어 효율성이 향상. 프로그래밍 가능성: API 를 통해 네트워크 동작을 프로그래밍할 수 있어 유연성이 증가 개방형 표준: 표준화된 프로토콜과 인터페이스를 사용하여 다양한 벤더의 장비를 통합 관리할 수 있음. 계층 구조 애플리케이션 계층 (Application Layer) 네트워크 서비스, 비즈니스 애플리케이션 API 를 통한 네트워크 제어 ↕ Northbound API 제어 계층 (Control Layer) SDN 컨트롤러 네트워크 정책 및 제어 로직 ↕ Southbound API (OpenFlow 등) 인프라 계층 (Infrastructure Layer) 스위치, 라우터 등 네트워크 장비 패킷 전송 및 처리 장점 유연성과 민첩성: 네트워크 구성을 신속하게 변경할 수 있다. 비용 절감: 하드웨어 의존도를 줄여 CAPEX 와 OPEX 를 절감할 수 있다. 중앙집중식 관리: 네트워크 전체를 단일 지점에서 관리할 수 있다. 보안 강화: 중앙에서 일관된 보안 정책을 적용할 수 있음. 단점 단일 장애 지점: 중앙 컨트롤러에 문제가 생기면 전체 네트워크에 영향을 줌. 성능 저하 가능성: 네트워크 규모가 커지면 컨트롤러의 부하가 증가할 수 있음. 보안 취약점: 중앙 컨트롤러가 공격 대상이 될 수 있음. 기업의 지출을 구분하는 두 가지 주요 카테고리 ...

October 20, 2024 · 2 min · Me

RDMA

RDMA (Remote Direct Memory Access) 네트워크 상의 한 컴퓨터에서 다른 컴퓨터의 메모리에 직접 접근할 수 있게 해주는 기술로, CPU의 개입 없이 데이터를 전송할 수 있는 고성능 네트워크 기술 주요 특징: 낮은 지연 시간(Low Latency): CPU 개입 없이 메모리 간 직접 데이터 전송이 가능하므로, 전송 지연 시간이 매우 짧다. 높은 대역폭(High Bandwidth): 데이터 복사 과정이 없기 때문에 빠르고 효율적으로 대량의 데이터를 처리할 수 있다. 낮은 CPU 사용률(Low CPU Utilization): 데이터 전송 작업이 네트워크 어댑터(NIC)에서 이루어지기 때문에 CPU는 다른 작업에 집중할 수 있다. 제로-카피(Zero-Copy): 데이터가 중간 버퍼링 없이 메모리에서 바로 전송되므로, 데이터 복사로 인한 오버헤드가 없다. 효율성(Efficiency): 운영 체제와 CPU의 개입을 최소화하여 시스템 전체의 효율성을 높인다. 장점: ...

October 20, 2024 · 4 min · Me

멱등성 (Idempotency)과 안전한 메서드 (Safe Methods)의 비교

멱등성 (Idempotency)과 안전한 메서드 (Safe Methods)의 비교 멱등성과 안전한 메서드는 HTTP 메서드의 중요한 특성으로, 서버의 상태 변화와 관련이 있다. 멱등성(Idempotency)은 동일한 요청을 여러 번 수행해도 서버의 상태가 동일하게 유지되는 특성을 말한다. 즉, 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 유지된다. 안전한 메서드(Safe Methods)는 서버의 상태를 변경하지 않는 HTTP 메서드를 의미한다. 이는 주로 리소스를 조회하는 용도로 사용되며, 서버의 데이터나 상태를 수정하지 않는다. ...

October 19, 2024 · 1 min · Me

안전한 메서드 (Safe Methods)

안전한 메서드 (Safe Methods) 서버의 상태를 변경하지 않는 HTTP 메서드. 특징 리소스 변경 없음: 요청을 여러 번 보내도 서버의 상태가 동일하게 유지됩니다. 읽기 전용 작업: 주로 데이터를 조회하는 용도로 사용됩니다. 부작용 없음: 서버의 상태를 변경하지 않으므로 안전하게 여러 번 호출할 수 있습니다. 중요성 신뢰성: 클라이언트가 서버의 상태를 변경하지 않고 안전하게 정보를 요청할 수 있습니다. 캐싱 최적화: 안전한 메서드는 캐시하기에 적합하여 성능 향상에 도움이 됩니다. 사용자 경험: 브라우저가 안전한 메서드를 자유롭게 호출할 수 있어 프리페칭 등의 기능을 구현할 수 있습니다. 구현 방법 읽기 전용 로직: 안전한 메서드 구현 시 서버의 상태를 변경하지 않는 로직만 포함해야 합니다. 멱등성 보장: 안전한 메서드는 멱등성도 가져야 하므로, 여러 번 호출해도 동일한 결과를 반환하도록 구현합니다. 예외 처리: 안전한 메서드가 서버 상태를 변경하지 않도록 주의깊게 예외를 처리해야 합니다. 이점 성능 최적화: 안전한 메서드는 캐싱이 가능하여 네트워크 트래픽을 줄이고 응답 시간을 개선할 수 있습니다. 보안 강화: 데이터를 변경하지 않으므로 무단 수정이나 삭제의 위험이 없습니다. 확장성: 안전한 메서드는 프록시나 중간 계층에서 자유롭게 처리할 수 있어 시스템 확장성이 향상됩니다. HTTP 메서드별 안전성 GET: 안전한 메서드. 리소스를 조회하는 용도로 사용됩니다. HEAD: 안전한 메서드. GET과 유사하지만 헤더 정보만 반환합니다. OPTIONS: 안전한 메서드. 서버가 지원하는 메서드 정보를 반환합니다. POST: 안전하지 않은 메서드. 새로운 리소스를 생성하거나 데이터를 제출합니다. PUT: 안전하지 않은 메서드. 리소스를 생성하거나 대체합니다. DELETE: 안전하지 않은 메서드. 지정된 리소스를 삭제합니다. PATCH: 안전하지 않은 메서드. 리소스의 부분적인 수정에 사용됩니다.— 참고 및 출처

October 18, 2024 · 2 min · Me

Cookies

Cookies HTTP 쿠키는 웹 서버가 사용자의 브라우저에 저장하는 작은 텍스트 데이터로, 사용자 세션 관리와 개인화된 경험 제공을 위해 설계되었다. HTTP의 무상태(Stateless) 특성을 보완하여 연속적인 요청 간 상태 유지가 가능하게 한다. 정의 및 목적 데이터 저장 형식: 키=값 쌍으로 구성된 텍스트 파일. 동작 원리: 서버 → Set-Cookie 헤더로 브라우저에 전송. 브라우저 → 이후 요청 시 Cookie 헤더에 포함. 1 2 3 4 5 6 7 // 서버 응답 예시 HTTP/2.0 200 OK Set-Cookie: session_id=abc123; Secure; HttpOnly // 클라이언트 요청 예시 GET /dashboard HTTP/2.0 Cookie: session_id=abc123 주요 용도 용도 설명 예시 세션 관리 로그인 상태, 장바구니 정보 유지 온라인 쇼핑몰 결제 과정 개인화 언어 설정, 테마 저장 다크 모드 자동 적용 트래킹 사용자 행동 분석 및 광고 타겟팅 구글 애널리틱스 세션 관리: 1 2 3 4 5 6 7 8 9 10 // 로그인 세션 관리 app.post('/login', (req, res) => { // 사용자 인증 후 const sessionId = generateSessionId(); res.cookie('sessionId', sessionId, { httpOnly: true, secure: true, maxAge: 24 * 60 * 60 * 1000 // 24시간 }); }); 개인화: 1 2 3 4 // 사용자 선호도 저장 function saveUserPreference(theme) { document.cookie = `theme=${theme}; max-age=31536000; path=/`; } 트래킹: 1 2 3 4 5 6 // 방문자 추적 function trackPageVisit() { let visits = getCookie('visitCount') || 0; visits++; document.cookie = `visitCount=${visits}; max-age=31536000`; } 쿠키의 구성 요소 이름=값: 쿠키는 기본적으로 이름과 값의 쌍으로 이루어진 문자열. 만료 날짜(Expires) 또는 최대 수명(Max-Age): 쿠키의 유효 기간을 지정하며, 이 기간이 지나면 브라우저는 해당 쿠키를 삭제한다. 도메인(Domain)과 경로(Path): 쿠키가 적용될 도메인과 경로를 지정하여 특정 범위에서만 쿠키를 전송하도록 제한할 수 있다. 보안 속성: Secure 속성을 설정하면 쿠키는 HTTPS 연결에서만 전송되며, HttpOnly 속성을 설정하면 JavaScript와 같은 클라이언트 측 스크립트에서 쿠키에 접근할 수 없다. 주요 속성 속성 설명 예시 Name 쿠키의 이름 sessionId Value 쿠키의 값 abc123xyz Domain 쿠키가 유효한 도메인 .example.com Path 쿠키가 유효한 경로 / Expires/Max-Age 쿠키 만료 시간 Wed, 21 Oct 2024 Secure HTTPS에서만 전송 Secure HttpOnly JS에서 접근 불가 HttpOnly SameSite CSRF 방지 설정 Strict, Lax, None Name과 Value: 1 2 // 쿠키의 기본 구성 document.cookie = "username=John Doe"; // 이름=값 형태 Expires/Max-Age: 1 2 3 4 // 만료 시간 설정 document.cookie = "username=John Doe; expires=Thu, 18 Dec 2025 12:00:00 UTC"; // 또는 Max-Age 사용 document.cookie = "username=John Doe; max-age=3600"; // 1시간 후 만료 Domain과 Path: 1 2 // 특정 도메인과 경로에서만 사용 가능한 쿠키 document.cookie = "user=John; domain=example.com; path=/blog"; Secure와 HttpOnly: 1 2 3 4 // 보안 관련 설정 // Secure: HTTPS에서만 전송 // HttpOnly: JavaScript에서 접근 불가 response.setHeader('Set-Cookie', 'sessionId=abc123; Secure; HttpOnly'); 주요 유형별 특징 기본 분류 유형 저장 위치 수명 사용 사례 세션 쿠키 브라우저 메모리 브라우저 종료 시 삭제 로그인 세션 지속형 쿠키 디스크 Expires/Max-Age 지정 자동 로그인 서드파티 쿠키 타 도메인 설정 장기적 크로스 사이트 광고 트래킹 특수 쿠키 (보안 리스크) 슈퍼쿠키: 일반 삭제로 제거 불가능 플래시 쿠키: Adobe Flash 기반, 브라우저 외부 저장 좀비 쿠키: 삭제 후 자동 재생성 쿠키 작동 방식 쿠키 설정 과정 클라이언트가 웹사이트 방문 서버가 Set-Cookie 헤더로 쿠키 전송 브라우저가 쿠키 저장 이후 요청시 자동으로 쿠키 전송 쿠키 전송 과정 브라우저가 HTTP 요청 준비 유효한 쿠키 확인 Cookie 헤더에 쿠키 포함 서버로 요청 전송 쿠키 관리 및 보안 HTTP 쿠키의 보안 속성은 XSS(교차 사이트 스크립팅), CSRF(교차 사이트 요청 위조) 등 웹 공격을 방어하고 사용자 데이터를 보호하기 위해 설계되었다. ...

October 18, 2024 · 6 min · Me

서브넷팅 (Subnetting)

서브넷팅 (Subnetting) 서브넷팅(Subnetting)은 네트워크를 더 작은 단위의 네트워크로 분할하는 기술이다. 이 기술은 IP 주소의 효율적인 사용과 네트워크 관리를 개선하기 위해 사용된다. 서브넷팅은 하나의 IP 클래스를 효율적으로 이용하기 위해 Host ID 구간을 분할하여 원래 정의된 Network ID와 함께 Network ID로 사용하는 네트워크 관리 기법이다. 서브넷팅을 통해 분할된 네트워크를 서브넷(Subnet)라고 한다. 주요 목적 IP 주소 낭비 방지 브로드캐스트 도메인의 크기 축소 네트워크 성능 향상 보안성 강화 서브넷팅의 장점 네트워크 관리 용이성 향상 고급 네트워크 보안 구현 가능 네트워크 트래픽 감소 ISP로부터 추가 IP 주소 요청 필요성 감소 서브넷 (Subnet) 서브넷은 ‘Sub Network’의 줄임말로, 더 큰 네트워크의 논리적인 부분집합을 의미한다. 이는 마치 큰 건물을 여러 개의 사무실로 나누는 것과 비슷한데, 각 사무실(서브넷)은 자신만의 공간을 가지면서도 전체 건물(네트워크)의 일부로 기능한다. ...

October 17, 2024 · 6 min · Me

네트워크 주소 변환 (NAT, Network Address Translation)

네트워크 주소 변환 (NAT, Network Address Translation) 네트워크 주소 변환(NAT, Network Address Translation)은 IP 패킷의 TCP/UDP 포트 번호와 소스 및 목적지의 IP 주소를 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술이다. NAT 를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함으로, 등록되지 않은 IP 주소를 사용하는 사설 IP 네트워크가 인터넷에 연결될 수 있도록 한다. 일반적으로 두 네트워크를 함께 연결하는 라우터에서 작동하며, 패킷이 다른 네트워크로 전달되기 전에 내부 네트워크의 비공개 (전역적으로 고유하지 않음) 주소를 올바른 주소로 변환한다. ...

October 17, 2024 · 4 min · Me

CIDR (Classless Inter-Domain Routing)

CIDR (Classless Inter-Domain Routing) CIDR은 1993년에 도입된 IP 주소 할당 및 라우팅 방식으로, 기존의 클래스 기반 주소 체계(Classful Addressing)의 한계를 극복하기 위해 만들어졌다. 인터넷이 급속도로 성장하면서 기존의 고정된 클래스 체계로는 IP 주소를 효율적으로 할당하기 어려워졌고, 이를 해결하기 위해 더 유연한 주소 할당 방식이 필요해지면서 탄생되었다. 네트워크 정보를 여러 개로 나누어진 Sub-Network 들을 모두 나타낼 수 있는 하나의 Network 로 통합해서 보여주는 방법이다. 목적 IP 주소 자원의 낭비를 줄임 라우팅 테이블의 크기를 감소시킴 더 유연하고 효율적인 주소 할당을 제공 특징 주소 집약(Route Aggregation) CIDR의 가장 중요한 특징 중 하나는 라우팅 테이블을 간소화할 수 있는 주소 집약이다. 예를 들어: ...

October 17, 2024 · 5 min · Me

IP Delivery Modes

IP Delivery Modes 네트워크에서 데이터를 전송하는 다양한 방식. https://ipcisco.com/lesson/unicast-broadcast-multicast-anycast/#google_vignette 특성 Unicast Multicast Broadcast Anycast 전송 방식 1:1 통신으로, 하나의 송신자가 하나의 특정 수신자에게 데이터를 전송 1:N 통신으로, 하나의 송신자가 특정 그룹에 속한 다수의 수신자에게 동시에 데이터를 전송 1:모두 통신으로, 하나의 송신자가 네트워크 내의 모든 호스트에게 데이터를 전송 1:1/다수 통신으로, 하나의 송신자가 동일한 주소를 가진 여러 노드 중 가장 가까운 하나의 노드에게 데이터를 전송 주소 체계 각 호스트마다 고유한 IP 주소 사용 Class D IP 주소(224.0.0.0 ~ 239.255.255.255) 사용. IPv6에서는 ff00::/8 프리픽스 사용 IPv4에서 네트워크 주소의 호스트 부분이 모두 1인 주소 사용 동일한 유니캐스트 주소를 여러 노드가 공유 트래픽 효율성 수신자가 많을 경우 네트워크 부하가 증가하여 비효율적 그룹 멤버들에게 한 번의 전송으로 데이터 전달이 가능하여 효율적 모든 호스트에게 전송되어 불필요한 트래픽 발생 가능성이 높음 가까운 노드에게만 전송되어 효율적이며, 로드 밸런싱 효과 있음 주요 용도 일반적인 인터넷 통신, 이메일, 웹 브라우징 등 화상 회의, IPTV, 소프트웨어 배포, 실시간 주식 정보 전송 등 네트워크 설정 정보 전파, DHCP, ARP 등 DNS 서버, CDN 서비스, 로드 밸런싱이 필요한 서비스 신뢰성 TCP를 사용할 경우 높은 신뢰성 보장 UDP 기반으로 동작하여 상대적으로 신뢰성이 낮음. 필요시 응용 계층에서 신뢰성 보장 메커니즘 구현 필요 신뢰성이 낮으며, 일반적으로 UDP 사용 유니캐스트와 동일한 수준의 신뢰성 제공 IPv4 지원 지원 지원 지원 제한적 지원 IPv6 지원 지원 지원 (향상된 기능) 미지원 (대신 멀티캐스트 사용) 기본 지원 장점 - 높은 신뢰성 - 간단한 구현 - 모든 프로토콜 지원 - 보안성 우수 - 네트워크 대역폭 효율적 사용 - 다수의 수신자에게 효율적 전송 - 확장성이 좋음 - 간단한 구현 - 모든 호스트에 빠른 정보 전달 - 네트워크 설정에 유용 - 서버 이중화 용이 - 로드 밸런싱 효과 - 지연 시간 최소화 단점 - 다수 수신자 전송 시 비효율적 - 대역폭 소비가 큼 - 라우터의 멀티캐스트 지원 필요 - 구현 복잡 - 신뢰성 보장 메커니즘 별도 필요 - 불필요한 트래픽 발생 - 네트워크 성능 저하 IPv6에서 미지원 - 구현 복잡 - 라우팅 테이블 크기 증가 - 관리 어려움 각 전달 방식은 고유한 특성과 장단점을 가지고 있으며, 사용 목적과 네트워크 환경에 따라 적절한 방식을 선택해야 한다. IPv6에서는 브로드캐스트가 제거되고 멀티캐스트와 애니캐스트가 강화되어 더욱 효율적인 네트워크 구성이 가능해졌다. ...

October 17, 2024 · 2 min · Me

DNS 캐싱 (DNS Caching)

DNS 캐싱 (DNS Caching) DNS 캐싱은 이전에 조회한 도메인 이름과 IP 주소의 매핑 정보를 임시로 저장하는 메커니즘이다. 이를 통해 매번 전체 DNS 조회 과정을 거치지 않고도 빠르게 도메인 이름을 IP 주소로 변환할 수 있다. DNS 캐싱은 인터넷 성능 최적화에 중요한 역할을 하며, 적절한 관리를 통해 효율적이고 안전한 네트워크 환경을 유지할 수 있다. 작동 방식 DNS 서버나 클라이언트 장치가 도메인 이름에 대한 IP 주소를 조회하면, 그 결과를 캐시에 저장한다. 이후 동일한 도메인에 대한 요청이 있을 때, 캐시된 정보를 사용하여 빠르게 응답한다. 캐시 위치 DNS 캐싱 (DNS Caching)은 브라우저, 운영체제, 라우터, ISP 의 DNS 서버 등 다양한 단계에서 발생한다. ...

October 17, 2024 · 2 min · Me