
JVM 기본 구조 클래스 로더 .java 파일을 컴파일해서 얻는 .class class을 메모리 로드 로드할 클래스가 여럿이면 Main() 메서드를 포함하는 클래스를 우선 로드 로드, 링크, 초기화 단계를 거침 (JVM 내장) 클래스 로더 1.부트스트랩 클래스 로더 • java.lang, java.net, java.util, java.io 같은 표준 Java 패키지 로드 • rt.jar 파일에 들어있는 핵심 라이브러리 2. 확장 클래스 로더 • $JAVA_HOME/ jre / ext • 확장 라이브러리 클래스 로드 3. (응용 프로그램) 클래스 로더 • (classpath , cp) 클래스 경로에 있는 클래스 로드 • 일반적으로 개발자가 작성한 코드를 포함하는 클래스 • 로더가 클래스 이름을 찾지 못할 ..

컴퓨터를 구성하는 것이 일반적으로 S/W + H/W 이고 H/W의 구성 요소 중 대표적인 게 CPU(연산 장치) CPU가 인식할 수 있는 코드를 Machine code라고 부른다. 이 머신 코드는 프로세스마다 구체적인 값이 좀 다른데, 그것은 CPU 데이터 시트지를 봐야 할 수 있다. 그것은 좀 일반적으로 공통된 형태로 바꿔서 나온 것을 어셈블리어라고 부른다. 네이티브 코드 개발자는 컴파일러가 아예 머신 코드에 대고 번역을 해버린다. 그래서 어떤 하이레벨 언어의 코드가 있다면 그걸 CPU가 인식할 수 있는 기계로 바꾼다. 그리고 여기까지를 플랫폼이라 한다. OS + CPU + RAM(/SSD) = JVM http://hoonmaro.tistory.com/19 출처 훈마로의 보물창고 JVM(Java Vir..

SSL 인증서 SSL 인증서를 검증하는 방법은 인증서를 발급한 CA의 인증서에 포함된 Public key key를 이용해 SSL 인증서 Hash 결과를 복호화 하면 된다. PKI 인증체계 PAA (Policy Approval Authorities, 과학기술정보통신부)) 공인인증서에 대한 정책을 결정하고 하위 기관의 정책을 승인하는 기관이다. 우리나라는 미래창조과학부가 담당한다 PCA (Policy Certification Authorities, 정책인증기관)) RootCARootCA를 발급하고 기본 정책을 수립하는 기관으로, 우리나라의 KISA(Korea Information Security Agency, 한국정보보호진흥원 가 여기에 해당한다. RootCARootCA는 모든 인증서의 기초가 되는 인증서를..

Proxy 구조(우회) 기본적으로 프록시 구조는 Socket 수준에서 작동한다. 그러면 실제 통신을 하게 되는 호스트가 여러 개가 되어버리는 문제 프록시는 의뢰 / 대리자 역할이라고 생각하면 된다. 웹 서버 입장에서는 누가 접속했다고 할 때, 실제로는 프록시 서버가 접속을 한 경우가 된다. Proxy 구조(서버 보호) 이런 상황일 때 클라이언트가 DNS에게 질의를 하면 a.com의 주소를 5.5.5.5라고 알려준다. 그런데 이 주소는 웹 서버가 아니고, 실제로는 웹 어플리케이션 방화벽이다. 클라이언트 입장에서는 이 방화벽이 웹 서버인줄 알고 접속을 한다. 입력은 서버 입장에서는 절대 신뢰해서는 안된다. 그렇기 때문에 반드시 검증을 함. 이 일을 수행하는 게 WAF인데 검증에는 파라미터로 넘어오는 것 뿐만..

네트워크 보안 솔루션 종류별 대응 계층 여기서 꼭 알아둬야 할 장치 L3 / L4 수준 - Inline 구조 장치 : 공기청정기 필터 역할과 유사 - Out of path 구조 장치 : Sensor 역할만 실무에서 뭐가 잘 안된다고 할 때 맞딱뜨리는 게 Packet Filtering F/W 와 IPS - 구조적으로 인라인 장치. - HTTP 통신을 감시 - 문제는 HTTPS는 암호화가 되어 있기 때문에 이런 보안 장치들이 암호화된 것은 어떻게 못한다. - 그 때 등장하는게 WAF 방화벽이다. 그러니까 Packet Filtering 방화벽이라든가 IPS라든가 이런 애들은 기본적으로 인라인 장치 그러나 웹 서버라고 부르는 것들(어파치, 엔지넥스) 등이 이런 역할을 해줄 수 있다. Inline 구조 결국 HT..

HTTP 1.0 단일 연결을 통한 단방향 통신. 각 요청마다 새로운 연결을 맺어야 했으며, 지속적인 연결이 없었기 때문에 매번 연결을 다시 설정해야 했다. 상태 유지가 어려웠고, 헤더에 버전 정보가 없었기 때문에 통신이 간단했으나 기능이 제한적이었다. 즉, 요청이 3번 오면 3번의 연결. 매우 비효율적 HTTP 1.1 Keep-Alive 연결 지원으로 단일 연결을 통해 여러 요청 및 응답을 처리할 수 있게 되었다. 이로써 연결 설정에 드는 오버헤드 감소. 파이프라인화를 지원하여 여러 요청을 한 번에 보내 응답을 기다리지 않고 동시에 처리 가능. Host 헤더 도입으로 하나의 서버에서 여러 도메인을 호스팅하는 가상 호스팅을 지원. 캐싱 기능 강화 등으로 전반적인 성능 향상. 이제 3번 요청이 오면 3번 연..

브라우저에 URL을 입력하면 일어나는 일 1) www.abc.com 이라는 주소를 입력한다. URL 에서 www는 호스트네임, abc는 도메인네임이라 칭한다. => abc라는 도메인에 속한 이름이 www라는 컴퓨터이다. ** 인터넷은 IP주소를 기반으로 접속한다. -> HTTP 통신에 앞서 TCP 통신이 가능해야만 화면이 다음으로 넘어가준다. 문제는 IP 주소를 모르니까! 찾아야한다. 2) IP 주소를 찾기 작업에 돌입한다. 내부의 host 파일을 찾는다. DNS Cache를 참조한다. DNS Query를 통해 직접 찾는다. 3) 연결된 회사의 DNS 주소를 찾는다(ex. 구글, KT 등) 4) IP 주소를 받으면 그 서버로 TCP/IP 연결을 한다. 5) 연결창구에서 GET 방식으로 http reque..

OS, User mode 와 Kernel mode H/W = CPU(연산 주체) + RAM(메모리 올라가는 곳) + SSD(2차 메모리) Kernel : 운영체의 핵심 알맹이 / 각종 운영체제로서의 제어체계가 작동되는 코드 그 위에 Process => A, B, C ...이렇게 멀티테스킹 환경이 만들어진다. 멀티가 들어가면-> '제어' 가 필요. 플랫폼 = 운영체제 + 하드웨어 플랫폼에 (아주) 의존적인 코드 => 네이티브 코드(OS나 CPU에) RAM과 SSD를 한 데 묶어서 운영체제 수준에서는 Vertual Memory 형태로 관리하게 한다. 비동기 입출력 비동기 입출력을 하게 되는 가장 큰 이유가 처리 주체에다가 뭔가를 넘겨서 맡겨가지고, 어플리케이션에서 block되는걸 막기 위함. 그래서 비동기 ..