웹 공격 방어와 인프라 아키텍처
방화벽(Network Firewall) 일반적으로 우리가 ‘방화벽’이라고 부르는 장비는 OSI 7계층 중 3계층(네트워크 계층)과 4계층(전송 계층) 에서 동작합니다. 들어오고 나가는 패킷의 출발지 IP, 목적지 IP, 프로토콜, 포트 번호를 확인합니다. 미리 정의된 접근 제어 목록(ACL, Access Control List) 규칙에 따라 패킷을 ...
방화벽(Network Firewall) 일반적으로 우리가 ‘방화벽’이라고 부르는 장비는 OSI 7계층 중 3계층(네트워크 계층)과 4계층(전송 계층) 에서 동작합니다. 들어오고 나가는 패킷의 출발지 IP, 목적지 IP, 프로토콜, 포트 번호를 확인합니다. 미리 정의된 접근 제어 목록(ACL, Access Control List) 규칙에 따라 패킷을 ...
네트워크 보안이란 컴퓨터 네트워크 인프라와 그 위에서 전달되는 데이터를 인가되지 않은 접근, 변경, 파괴, 유출로부터 보호하기 위한 일련의 정책, 절차, 기술적 조치를 의미합니다. 네트워크 보안의 필요성 개인정보 및 기밀 데이터 보호(Data Privacy & Leakage Prevention) 현대의 애플리케이션은 사용자 계정 정보, 결제 ...
데이터 링크 계층은 하위 물리 계층(L1, 랜선이나 전파)에서 올라오는 의미 없는 전기 신호(0과 1의 나열)를 의미 있는 데이터 덩어리로 묶고 통제하는 역할을 합니다. 프레이밍(Framing) 물리 계층(랜선)을 타고 들어오는 것은 시작과 끝을 알 수 없는 101010… 형태의 무한한 전기 신호의 연속(Stream)입니다. 데이터 링크 계층은 이 ...
전송계층(L4)이 애플리케이션 프로세스 간의 논리적 통신(End-to-End)을 책임졌다면, 네트워크 계층은 “서로 다른 네트워크 망(LAN과 LAN)을 가로질러 출발지 호스트에서 목적지 호스트까지 패킷을 어떻게 길을 찾아 전달할 것인가(Host-to-Host)” 라는 문제를 해결합니다. 네트워크 계층은 데이터를 네트워크를 통해 목적지까지 전달하는 ...
자바의 예외 처리 예외의 계층 구조(Exception Hierarchy) 자바에서 발생하는 모든 문제의 최상위 조상은 java.lang.Throwable 클래스입니다. 이 아래로 크게 두 가지 갈래로 나뉩니다. Error(시스템 레벨의 심각한 오류) : OutOfMemoryError(OOM), StackOverflowError처럼 JVM 자체에...
멀티 스레딩과 동시성 이론의 시작은 메모리 구조에서 출발합니다. 프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위입니다. 각 프로세스는 독립된 메모리 영역(Code, Data, Stack, Heap)을 가집니다. 서로 메모리를 공유하지 않기 때문에 하나가 죽어도 다른 프로세스에 영향을 주지 않지만, 통신(IPC) 비용이 매우 비쌉니다. ...
컬렉션 프레임워크 자바의 컬렉션은 크게 Collection 인터페이스를 상속받는 List, Set 계열과, 독립적인 구조를 가지는 Map 계열로 나뉩니다. List 인터페이스 : 순서가 있고, 중복을 허용하는 선형 구조 가장 많이 사용되는 배열 형태의 자료구조입니다. 데이터를 넣은 순서가 보장됩니다. ArrayList 내부적으로 일반 배열(Objec...
자바의 특징 자바는 단순히 문법이 모여있는 도구가 아닙니다. 1995년 탄생 당시의 시대적 요구(인터넷의 보급과 이기종 환경)를 해결하기 위해 고안된 설계 철학의 결정체입니다. 플랫폼 독립성과 JVM(Write Once, Run Anywhere) 자바의 가장 위대한 업적이자 정체성입니다. C나 C++처럼 특정 운영체제(OS)나 하드웨어에 종속적인 기...
자바의 데이터 타입, 메모리, 그리고 파라미터 전달의 본질 기본형(Primitive) vs 참조형(Reference) 타입과 메모리 구조 자바의 데이터 타입은 크게 두 가지로 나뉩니다. 이들이 메모리 어디에, ‘왜’ 그렇게 저장되는지 아는 것이 중요합니다. 기본형(Primitive Type) : int, double, boolean, char ...
객체지향 프로그래밍(Object-Oriented Programming, OOP) 은 컴퓨터 프로그램을 명령어의 목록으로 보는 전통적인 절차지향적 관점에서 벗어나, 여러 개의 독립된 단위인 ‘객체(Object)’ 들의 모임으로 파악하고자 하는 프로그래밍 패러다임입니다. 쉽게 말해, 현실 세계의 사물이나 개념을 상태(Data)와 행위(Method)를 가진...