CS
프록시 서버(Proxy Server)란 시스템에 방화벽을 가지고 있는 경우 외부와의 통신을 위해 만들어 놓은 서버 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시'라 부르며, 그 중계 기능을 하는 것을 프록시 서버라고 부른다. 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용해서 저장해둔다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접근하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 ..
REST의 개념 REST의 정의 -> “Representational State Transfer” 의 약자 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉, 자원(resource)의 표현(representation) 에 의한 상태 전달 자원(resource)의 표현(representation) 자원: 해당 소프트웨어가 관리하는 모든 것 -> Ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등 자원의 표현: 그 자원을 표현하기 위한 이름 -> Ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다. 상태(정보) 전달 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다. JSON 혹은 XML를 통해 데이터를 주고 ..
TCP-3-WayHandshake TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 3-way handshake를 사용한다. 3 Way-Handshake 란 전송 제어 프로토콜(TCP)에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정, 방법이다. TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. Client -> Server : TCP SYN Server -> Client : TCP SYN ACK Client -> Server : TCP ACK 클라이언트가 통신을 하고 싶은 서버에 syn을 보낸다. 그것을 받은 서버는 syn+1과 ack을 보낸..
: OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 국제표준화 기구에서 개발한 모델로 네트워크 프로토콜 통신을 7개의 계층으로 나눔으로서 프로그래머가 하위 수준의 단계를 크게 신경쓰지 않고 개발 할 수 있으며 계층별 독립성과 단계층 계층으로 인해 오류처리가 수월하다는 장점이 있다. 물리계층(Physical Layer) - 데이터를 전송하는 계층(주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송) - 통신 단위는 비트이며 이것은 1과 0으로 나타내어진다 - 단지 데이터를 전달만 할뿐 전송하려는(또는 받으려는) 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다. 대표적인 장비는 통신 케이블, 리피터, 허브 데이터 링크계층(Dat..
프로세스(Process) : OS가 작업을 할당하는 단위, 현재 실행 중인 프로그램(program in executing)을 뜻한다. 일반적으로 잡(job)이라는 용어와 혼용해 사용하기도 한다. - 독자적인 메모리 공간을 가지고 다른 프로세스와 통신하기 위해 시스템콜을 호출하여 진행해야 한다. - 컨텍스트 스위치 과정에서 모든 영역에 대하여 PCB에 저장하고 넘겨야되기에 쓰레드보다 많은 시간이 소요된다. 프로세스의 주소 영역(메모리 영역) 프로세스의 주소 영역은 크게 코드(Code), 데이터(Data), 힙(Heap), 스택(Stack)영역으로 구분된다. 코드 영역은 실행할 프로그램 코드가 저장되는 부분이다. 데이터 영역은 전역 변수(global variable)나 static 변수 등 프로그램이 사용하..
프로그램 실행 순서 프로그램의 정보를 읽어 메모리에 로드되는 과정을 볼 수 있다. 프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해준다. 할당해주는 메모리 공간은 4가지(Code, Data, Stack, Heap)가 있다. 코드(Code) 우리가 작성한 소스코드가 들어가는 부분. 즉, 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code)영역이라고 부른다. 코드 영역은 실행파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 여기에 저장된다. : 프로그램 언어로 작성된 내용들이 컴파일되어 저장되어 있다. 데이터(Data) 전역변수와 static변수가 할당되는 영역 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 소멸되는 영역 스택(Stack)..
메모리의 기본개념 메모리는 CPU와 같은 반도체 하드웨어로서 일종의 데이터를 저장하는 저정장치 역할을 수행한다. 데이터를 읽고 쓰는 속도가 매우 빠르며, CPU가 직접 접근이 가능하다. 또한 전원이 꺼지면 저장 돼 있던 데이터가 모두 사라지는 특성을 가지고 있기 때문에 단순히 주소로서만 접근하는 저장공간이라고 할 수 있다. 소프트웨어 즉, 프로그램이 실행되기 위해서는 반드시 그 내용이 메모리에 저장돼야 하고 컴퓨터의 메모리 관리를 통해 하드웨어는 CPU가 주소만을 가지고 메모리에 있는 데이터를 읽거나 쓸 수 있도록 한다. 운영체제의 메모리 관리라는 것은 프로세스가 필요한 메모리를 어떻게 얼마만큼 할당해 줄 것인가, 프로세스가 알고 있는 주소를 통해서 실제 메모리에 어떻게 접근하도록 하는 것인가 라는 할당..
16진수 16진수란 16을 기수로 하는 번호체계를 말한다. 즉, 그것은 다음 숫자를 위해 새로운 위치를 추가하기 전에 16개의 일련 번호를 기본 단위로 포함하는 번호체계이다. 16진법에서는 숫자 0~9까지와 영문 알파벳 문자 A~F까지를 사용한다. 아래의 표에 모두 같은 값을 갖는 2진수와 10진수 그리고 16진수를 나타내었다. 16진수는 1byte 거의 항상 8bit 정의되는 컴퓨터에서 2진수를 표현하는 편리한 방법이다. 컴퓨터 기억장소의 내용을 보며줄때, 하나의 16진수 숫자는 4개의 2진수 숫자를 표시할 수 있다. 두 개의 16진수 숫자는 8 bit, 즉 1byte를 표현할 수 있다. 컴퓨터과학에서는 숫자를 10진수나 2진수 대신 16진수로 표현하는 경우가 많다. 컴퓨터에서 데이터를 처리하기 위해 ..
bit는 cpu가 처리하는 데이터의 최소 단위인 레지스터의 크기 레지스터는 CPU의 처리의 지연 시간을 줄이기 위해 사용하고 있는 CPU 내부의 임시 기억장치 ( 매번 메모리에서 가져와서 사용할 수 없기에 빠르게 연산하기 위해 레지스터에 임지로 저장하였다가 사용한다. ) ** 용량이 클수록 더 많은 데이터를 메모리에 가져와서 저장할 수 있기 때문에 더 빠르다.(메모리 접근이 줄어듦으로) 32bit 기준으로 32bit 레지터스라고 하면 한번에 2의 32제곱 ⇒ 4GB ⇒ 레지스터가 표현할 수 있는 최대의 값(메모리제한) 따라서 32bit 컴퓨터는 2^32 = 4294967296까지 밖에 저장하지 못한다. 그래서 32bit 컴퓨터는 최대 메모리를 4GB까지 밖에 상요하지 못함 ⇒ 메모리 주소값을 한번에 표현..