클라이언트와 서버가 TCP소켓으로 연결할때 서로의 연결상태를 3단계로 확인하는 것이 3-Way Handshake다. 이를 이해하려면 먼저 TCP소켓의 특징에 대하여 알아야할 필요가 있다. TCP는 연결 지향 소켓으로 클라이언트와 서버가 연결되었는지 확인하는 과정이 존재한다. 그 확인하는 과정중에 하나의 방법이 3-Way Handshake이다. 이를 수행하는 정확한 목적을 무엇이냐고 묻는다면, 클라이언트에서 서버로 통신할 수 있는 경로를 생성하고 검사하는 작업이라고 할 수 있다. 처음에 클라이언트는 서버의 IP주소를 가지고 서버에 접근한다. 그 IP에 도달하기 위한 다양한 경로 중 가장 적절한 경로(라우터의 역할)를 거쳐서 도달하게 된다. TCP는 이런 경로가 생성되고 나면 그 경로를 통해 클라이언트, 서..
JVM(Java Virtual Machine)은 자바 가상 머신으로 자바 프로그램을 실행시키기 위하여 반드시 실행되어야 하는 기초가 되는 프로그램이다. 즉 자바 프로그램을 실행시킨다는 것은 JVM을 실행시키고 그 위에서 자바 프로그램을 실행시킨다는 의미가 된다. 따라서 JVM은 운영체제와 자바프로그램 사이를 연결해주는 중계자 역할을 한다. 이러한 특징으로 인해 자바 프로그램에서 오류가 발생해도 JVM만 다운될 뿐 전체 시스템에 데미지를 주지 않는다. 또한 플렛폼에 의존적이지 않게 모든 자바의 프로그램이 구동된다고 할 수 있다. 정확히 말하면 JVM이 설치될 수 있는 모든 플렛폼이라고 보는것이 더 나을것이다. 자바라는 언어는 기본적으로 동적할당을 프로그래머에게 맡기지 않는다. C언어에서 malloc(), ..
유니코드는 전 세계의 모든 문자들을 컴퓨터에서 표현하고 다룰 수 있도록 설계된 산업 표준이다. 이 표준은 유니코드 협회(Unicode Consortium)가 제정한다. 이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함하고 있다. 유니코드가 등장하기 이전의 문자 코드들은 한정된 범위의 문자를 표현하여 만약에 다른 문자 집합(Character Set)을 사용하는 컴퓨터에서는 표시될 수가 없었다. 따라서 세계의 모든 컴퓨터 환경에서 문자 인코딩 방식이 호환되지 않아 불편함을 느껴 유니코드를 개발하게 되었다. 유니코드가 만들어 진 후부터는 컴퓨터 소프트웨어가 같은 문자인코딩으로 해석될 수 있었기 때문에 국제적으로 널리 퍼질 수 있게 되었으..
Base64란 8비트 이진 데이터를 문자 코드에 영향을 받지않는 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 뜻한다. (여기서 이진 데이터라는 것은 실행가능한 실행파일, 알집파일, 이미지파일 등의 0과1로 기록된 파일을 뜻한다.) 번역하면 64진법이라는 뜻이다. 64는 2의 6제곱으로 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이다. 인코딩된 문자열은 알파벳 대소문자, 숫자, '+', '/' 총 64개로 이루어지며, '='은 끝을 알리는 코드로 쓰인다. Base64에는 어떤 문자와 기호를 쓰느냐에 따라 여러종이 있지만, 잘 알려진 것은 모두 처음 62개는 A-Z, a-z, 0-9를 사용하고 있다는 것이다. 그리..