전체 글(100)
-
[네트워크] SSL(Secure Socket Layer) 동작 원리
대칭키와 공개키 SSL의 동작 원리에 대해 알기 위해서는 먼저 암호화 알고리즘의 종류인 대칭키와 공개키에 대해 알 필요가 있다. 대칭키(Symmetric Key) 암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘 장점 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하여 시스템 개발 환경에 용이하고 비대칭키(공개키)에 비해 암호화와 복호화 속도가 빠르다. 단점 교환 당사자 간에 동일한 키를 공유해야 하기 때문에 키 관리에 어려움이 있음 잦은 키 변경이 있는 경우에 불편하다. 디지털 서명 기법에 적용이 곤란하고 안전성을 분석하기 어려우며 중재자가 필요하다. 공개키(Public Key) 암호화와 복호화에 사용하는 암호키를 분리한 알고리즘 자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화..
2022.08.17 -
[네트워크] HTTP와 HTTPS
HTTP(Hyper Text Transfer Protocol) 서버/클라이언트 모델에 따라 데이터를 주고받기 위한 프로토콜 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로써, 80번 포트를 사용하고 있다. HTTP 서버와 통신하고자 할 때에는 HTTP 클라이언트가 80번 포트로 요청을 보내야 한다. 암호화되지 않은 평문 데이터를 전송하는 프로토콜 → 보안이 필요한 정보를 주고받기에 적절하지 않다는 단점 → HTTPS의 등장으로 이어짐 TCP/IP 위에서 동작하는 프로토콜이다. Connectionless의 특징을 가지며, 서버가 요청에 응답을 마치면 연결을 끊어버린다. Stateless로 이전 통신에 대한 정보를 기억하지 않는다. HTTPS(Hyepr Text Transfer Protocol over..
2022.08.17 -
[자료구조] 배열(Array)과 리스트(List)
배열과 메모리 배열 배열(array)는 같은 타입의 변수들로 이루어진 유한 집합으로 정의된다. 배열을 구성하는 각각의 값을 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 한다. 배열을 이루는 각 요소에 부여된 인덱스는 0으로 시작한다. 첫 번째 요소의 인덱스가 1이 아니라 0이된 이유는 배열의 인덱스는 첫 번째 요소를 기준으로 얼마만큼 떨어져 있는지 상대적인 값으로 표현하기 때문이다. 위의 그림에서 볼 수 있는 anData는 배열의 이름이며 동시에 인덱스가 0인 첫 번째 요소의 주소가 된다. 배열의 이름도 변수의 이름처럼 식별자이긴 하나 그 실체는 변수가 아니라 메모리의 주소 상수이다. 만약, anData의 실제 값이 0x0012FF60이라고 가정한다면, 두 번..
2022.08.16 -
[Spring] 디스패처 서블릿(Dispatcher Servlet)
이번 글에서는 디스패처 서블릿에 대해 알아보도록 하자. 1. 핸들러 메소드(HandlerMethod) ▷ 핸들러 메소드(Handler Method)란? 핸들러 메소드는 @RequestMapping과 그 하위 어노테이션(@GetMapping, @PostMapping 등)이 붙은 메소드의 정보를 추상화한 객체이다. HandlerMethod는 그 자체가 실행 가능한 객체가 아닌, 메소드를 실행하기 위해 필요한 참조 정보를 담고 있는 객체로써 다음과 같은 정보를 가진다. 빈 객체 메소드 메타정보 메소드 파라미터 메타정보 메소드 어노테이션 메타정보 메소드 리턴값 메타정보 디스패처 서블릿은 애플리케이션이 실행될 때 모든 컨트롤러 빈의 메소드를 살펴서 매핑 후보가 되는 메소드들을 추출한 뒤, 이를 HandlerMet..
2022.08.15 -
[Java] 자바의 컴파일 과정
자바는 OS에 독립적인 특징을 가지고 있다. 그것이 가능한 이유는 JVM(Java Virtual Machine) 때문이다. JVM의 어떠한 기능 때문에, 자바는 OS에 독립적으로 실행시킬 수 있는지 자바의 컴파일 과정을 통해 알아보도록 한다. 자바 컴파일 순서 1. 자바 소스코드(.java)를 작성한다. 2. 자바 컴파일러가 자바 소스파일을 컴파일한다. 이 때 나오는 파일은 자바 바이트 코드(.class) 파일로 아직 컴퓨터가 읽을 수 없는 JVM이 이해할 수 있는 코드이다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있다. 3. 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달한다. 4. 클래스로더는 동적로딩(Dynamic Loading..
2022.08.14 -
[데이터베이스] 트랜잭션 격리 수준
격리 레벨(Isolation Level) 이라는 개념이 등장한다. 이것이 무엇이고, 왜 필요한지 알아보기 위하여 트랜잭션 성질 중 하나인 일관성과 관련된 동시성이라는 개념을 알아보자. 동시성과 일관성 트랜잭션의 특성 중 일관성이 완전히 보장될 경우 여러 클라이언트의 요청을 받는 데이터베이스의 특성상 응답의 지연이 발생하는, 동시성이 저해되는 현상이 발생한다. 일관성이 너무 높다면, 한 테이블에 접근 및 작업해야 하는 수많은 트랜잭션 중 단 하나만이 접근 및 작업이 가능해지게 된다. 그렇다고 해서 동시성을 너무 높여버리면 데이터의 일관성을 잃게 될 가능성이 높기 때문에 운영 중인 서비스의 특성에 따라 적절한 균형을 두어야한다. 이러한 조정을 위한 방법 중 하나가 격리 레벨(Isolation Level)이다..
2022.08.13