IP 주소는 A부터 E까지 총 5개의 클래스로 구성된다. 다섯 가지 클래스는 다음과 같이 구성된다. 위 그림을 통해 알 수 있는 한 가지 사실은 IP를 나타내기 위해 사용되는 비트의 수가 다르다는 것이다. IP를 나타내기 위한 비트를 제외한 비트는 모두 호스트를 할당하는 비트로 사용된다. 즉, 클래스별로 할당 가능한 호스트의 수가 다르며, A클래스가 가장 많고 C 클래스로 갈수록 줄어든다. 일반적으로 클래스 A는 대규모 네트워크에, 클래스 B는 중간 규모의 네트워크에, 클래스 C는 소규모 네트워크에 사용된다. D와 E는 멀티캐스트, 연구 등에 사용되기 위한 클래스이지만 잘 사용되지 않는다고 한다. 또한, IP는 사설 IP와 공인 IP로 나뉜다. 사설 IP는 특정 네트워크 내에서 사용하는 상대적인 주소라면..
Introduction 추상클래스와 인터페이스는 추후에 완성할 무언가를 미리 정의한다는 공통점을 가진다. 이 때문에 두 가지의 차이가 정확히 무엇인지, 두 가지를 어떨 때 사용해야 하는지 항상 확실하지 않았기 때문에 시간을 내서 정리해보았다. 추상클래스와 인터페이스의 차이 인터페이스는 여러 개를 구현할 수 있지만 클래스는 하나만 상속할 수 있다. (단일 상속, 다중 구현) 인터페이스는 인스턴스의 자료형으로 지정할 수 있으나 추상클래스는 그럴 수 없다. 추상클래스는 추상이 아닌(구현부를 포함한) 메소드를 가질 수 있다. 추상클래스는 인스턴스 변수를 선언할 수 있으나, 인터페이스는 static field만 소유할 수 있다. 추상클래스는 constructor를 가질 수 있으나(자식 클래스에서 사용하기 위함),..
Permission Error Linux OS에서 작업을 해 본 사람이라면 한 번쯤 아래 오류를 만나본 적이 있을 것이다. Permission denied. 이는 현재 해당 쉘을 사용하고 있는 사용자가 해당 파일에 대한 해당 권한이 없기 때문에 발생하는 오류이다. 이 오류를 해결하기 위해서는 Linux의 권한 체계에 대한 이해가 필요하다. Linux의 권한 체계 Linux에서는 파일별로, 사용자별로 권한의 종류별로 권한을 관리한다. 각 권한은 아래와 같이 사용자별(파일 오너, 오너가 속한 그룹, 나머지 사용자들)에 따라 3비트의 2진수로 부여되고 확인할 수 있다. 부여된 권한을 확인하고자 한다면 ls -l 명령을 이용하면 된다. 위의 파일들은 다음과 같은 권한을 소유한다. rootexecfile: own..
HTTP (HyperText Transfer Protocol) 정의 하이퍼텍스트(HyperText)를 주고받기 위해 사용되는 프로토콜 하이퍼텍스트란, 한 문서에서 다른 문서로 접근할 수 있는 텍스트(현대에는 이를 주로 하이퍼링크라고 부름)이다. 문제점 HTTP만을 이용하여 통신하면 데이터를 평문으로 주고받기 때문에 누군가가 이를 가로채 데이터 유출이 일어날 수 있다. 이러한 보안 취약점을 해결하기 위해 도입된 것이 HTTPS 프로토콜이다. HTTPS (HyperText Transfer Protocol Secure Socket) 정의 기본 형식이나 사용 목적은 HTTP와 유사하지만, HTTP의 보안 취약점 해결을 위해 데이터를 암호화하여 주고받는다. HTTPS는 암호화를 위해 대칭키 암호화 방식과 공개키 ..
정의 사용자들이 제3자 서비스의 계정을 통해 인증을 수행할 수 있도록 접근 위임을 제공하는 공통 표준(open standard) 인증방식 여기서 제3자 서비스란 Google, Facebook, Github 등을 포함한다. 장점 (문제 해결) 기존에는 제3자 서비스의 계정을 이용하기 위해 본 서비스와 제3자 서비스에 모두 사용자의 아이디/비밀번호를 제공해야 했으며, 이는 사용자 입장에서는 보안 취약점으로 다가왔다. (하나 털리면 다 털림!) Auth를 이용하면 사용자가 입력한 사용자의 개인 정보가 아닌 임의로 생성되는 값인 accessToken을 이용해 인증을 수행하기 때문에, 두 개 서비스 모두에 개인 정보를 제공할 필요가 없다. 기존에는 제3자 서비스의 아이디/비밀번호를 제공하는 형식에서는 본 서비스가..
등장 계기 기존에는 쿠키-세션 방식을 통해 사용자 인증을 수행하였다. 이 방법은 서버가 사용자를 식별하기 위해 사용자의 정보를 서버에 저장하고 있어야 했고, 이는 다음의 문제를 발생시켰다. 모든 사용자의 정보를 저장해야 하기 때문에 서버에 부하를 일으킨다. 서버를 확장하기 어려워진다. 서버가 여러 대가 되면 세션 정보를 공유해야 하는데, 이 과정이 복잡하기 때문 따라서 Stateful 방식으로 사용자 정보를 관리하는 것에 어려움을 느끼게 되었고, 이에 대한 대안으로 등장한 Stateless 방식의 인증 기법이 바로 Token을 이용한 인증 기법이다. JWT(JSON Web Token) 토큰 중에서도 JSON 형식의 데이터를 이용하는 토큰 JWT Format JWT는 3개의 요소인 Header, Paylo..