HTTPS란? HTTP(HyperText Transfer Protocol)에 보안 요소가 추가된 것 암호화, 복호화를 사용하여 서버와 클라이언트 사이의 모든 통신 내용을 암호화 함 Body는 암호화되며 통신을 위한 Header는 암호화되지 않는다. 암호화 알고리즘 메시지 다이제스트(Message Digest) 메시지의 무결성 검사를 위하여 암호 해시 ...
IP란? OSI 7계층 중 3계층(네트워크 계층)에 해당하는 프로토콜 송, 수신 호스트간 데이터를 주고받는데 사용하는 정보의 규약 가장 일상적으로 사용되는 프로토콜 세트 중 하나인 TCP/IP에서 IP에 해당 IP의 역할 지정한 IP 주소에 데이터 전달 패킷이라는
TCP(Transmission Control Protocol)란? 인터넷 프로토콜 스택의 4계층 중 전송 계층에 해당 인터넷 계층인 IP를 보완해주는 역할이라고 생각하면 됨 전송 데이터를 TCP/IP 패킷으로 감싸서 전달 TCP/IP 패킷 출발지, 목적지 PORT,
OSI 7계층이란? OSI 참조 모델을 기반으로 국제 표준화 기구(ISO)에서 표준화한 모델 네트워크 통신에서 생긴 여러 가지 충돌 문제를 완화하기 위해 고안된 표준안 1계층 - 물리 계층(Physical Layer) 두 대의 컴퓨터가 통신하려면 0과 1을 주고 받을 수 있으면 됨 두 대의 컴퓨터가 전선 하나로 연결되어 있다고 가정하면 1을 보낼 때 +...
HTTP 메시지 HTTP 메시지는 다음과 같이 구성된다. Start Line Header Empty Line Body Request 메시지와 Reponse 메시지의 구조가 다른 부분이 있으므로 나누어 알아보자. Request, Response 공통
세그먼트: data에 4계층(TCP 등)이 붙은 것패킷: 세그먼트에 3계층(IP 등)이 붙은 것프레임: 패킷에 2계층(Ethernet 등)이 붙은 것2계층인 데이터링크 계층에 속함IEEE 802.3으로 표준화 됨단거리는 UDP케이블, 장거리는 광케이블을 통해 전송비용이
GC(Garbage Collection)란? 메모리 관리 기법 중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. 더 이상 필요없게 된 영역이란 어떤 변수도 가리키지 않게 된 영역을 의미한다. Java의 경우 처음부터 GC 기법을 염두에 두고 설계되어 언어 정의에 쓰레기 수집이 포함되어 있다. 다음과 같은 버그...
PP(Procedure Programming)란? > OOP : 객체지향 프로그래밍 PP: 절차적 프로그래밍 과거에는 큰 규모의 하드웨어와 소프트웨어가 필요하지 않았기 때문에 PP를 사용하였다. 말로 설명하자면, 기능을 중심으로 '무엇을 어떤 절차로 할 것인가?'와
운영체제의 한 종류로 컴퓨터 시스템의 하드웨어를 효율적으로 관리하기 위한 시스템 소프트웨어이다.1989년 리누스 토르발스가 유닉스를 기반으로 개발했으며 오픈소스 운영체제이다.GPL 라이센스가 적용된 운영체제로 리눅스를 설치한 뒤 사용자가 자신의 운영체제를 수정하여 사용
쿠키(Cookie)란? > 미용실에 재방문하면 "저번처럼 잘라드릴까요?"라고 묻는다. 쿠키란 브라우저가 사용자의 정보를 저장하여 동일한 웹사이트에 재방문할 때 재사용하기 위한 목적으로 사용하는 텍스트 파일이다. 서버에 요청 시 쿠키를 함께 전송하여 사용한다. 쿠키는
메모리란? 작업을 처리하기 위한 기억 장치로 물리(메인) 메모리(RAM), 가상 메모리(SSD, HDD의 swap 영역)가 존재한다. 가상 메모리 : 필요한 내용만 물리 메모리에 올려 메모리를 관리하는 기법으로 요구 페이징 기법을 사용한다. (가상 메모리에는 방어적
서비스의 트래픽이 증가함에 따라 낮은 트래픽에 여유롭던 서버도 더 이상 클라이언트의 요청을 버티지 못할 수 있다. 증가한 요청에 따라 서버를 더 확장시켜 해결할 수 있고, 다음 두 가지의 방법이 가능하다. 스케일 업(Scale Up) 서버의 하드웨어 성능을 업그레이드 하는 방법이다. (수직적 확장) CPU의 코어 수를 증가시키거나, RAM을 추가하는...
프로세스 생명주기 (Process Lifecycle) 연산을 담당하는 CPU는 한정되어 있기 때문에 프로세스는 생명주기를 가지고 CPU를 공유하여 사용한다. 프로세스 생명주기는 다음과 같은 5단계를 가진다. new 프로세스가 디스크에서 메모리로 올라간 상태 ready 다른 프로세스가 CPU를 점유하고 있어 대기하는 상태 running 프로세...
인터럽트 인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다. 주로 입출력 장치의 signal, data가 발생할 때까지 원래의 작업을 수행하다가 해당 기능을 처리하는 것이다. (외부 인터럽
두 개 이상의 프로세스가 shared data에 동시 접근하면 data inconsistency가 발생할 수 있기 때문에 data consistency를 유지하기 위한 매커니즘을 프로세스 동기화라 한다. 경쟁 상황(race condition) 커널 수행 중 인터럽트 발생 시, 커널 수행 중 context switching 발생 시, 멀티 프로세서에서 ...
운영체제(OS) 컴퓨터는 CPU, GPU, 메모리, SSD(HDD) 등 하드웨어들로 구성되어 있다. 그렇다면 이 하드웨어 자원들을 관리할 수 있는 소프트웨어가 필요하고, 그 것이 OS이다. 또한 OS는 하드웨어 자원, 소프트웨어 자원을 모두 효율적으로 운용하고 관리한다. 그렇다면 OS가 가장 하드웨어에 가까운 소프트웨어일까? - 아니다. 하드웨어 장치...
Process 개발자는 프로그램을 개발한다. 프로그램이란 어떤 작업을 위해 실행될 수 있는 파일이며 컴퓨터가 이해할 수 있는 명령어들의 모음이다. 프로세스는 이러한 프로그램이 실행되고 있는 상태이다. OS의 관리를 받아 시스템 콜로 하드웨어 자원들을 사용할 수 있다. 동적인 상태를 위해 메모리에 올라간 형태이며 메모리는 용량이 낮아 우선 순위에서 밀린 ...
Deadlock 교착상태란 멀티 프로그래밍 환경에서 나타날 수 있는 문제점이다. 프로세스1은 자원A가 필요한데, 이는 프로세스2가 사용 중이다. 또한 프로세스2는 자원B가 필요한데, 이는 프로세스1이 사용 중이다. 이러한 상황이라면 프로세스1은 자원A를 사용할 수 있을 때까지 자원B를 반환할 수 없으며, 프로세스2 또한 자원B를 사용할 수 있을 때까지...
Memory Managemnet 멀티프로그래밍 환경에서 여러 프로세스들은 각각의 독립적인 메모리 영역을 가진다. 메모리는 한정되어 있기 때문에 이를 효율적으로 관리해야 하므로 메모리 관리가 필요하다. 따라서 OS는 효율적인 메모리 관리를 제공해야 한다. OS는 프로세스에 우선순위를 정하여 우선순위가 더 높은 프로세스를 메모리에 올려야하는 경우 우선순위가...
Virtual Memory 프로그램의 모든 부분을 메모리에 적재하게 된다면, 메모리의 크기는 한정적이기 때문에 비효율적일 것이다. 실제로는 코드의 일부적인 부분만 프로세스의 실행에 필요할 수 있으며 방어적인 코드와 같이 지금 당장 메모리에 올려도 되지 않는 코드들이
Paging Paging은 프로세스를 일정한 크기의 Page로 나누어 가상 메모리에 저장하여 관리하는 기법이다. 메모리는 Frame이라는 고정 크기로 분할된다. 페이지 테이블의 인덱스는 페이지 번호를, 값으로는 프레임 번호와 vaild-invalid bit를 저장하여 사용한다. 메모리를 일정한 크기의 Frame으로 나누어 사용하기 때문에 내부 단편화...
페이지 교체 알고리즘 프로세스 실행 중 invalid 상태의 페이지가 필요하여 Page Fault 트랩이 발생하면 해당 페이지를 메모리에 올려야 한다. 이미 메모리에는 프레임이 적재되어 더 이상 올라갈 공간이 없기 때문에, 특정한 알고리즘에 의하여 선정된 프레임을 swap 영역으로 내리고 사용할 페이지를 메모리에 적재해야 한다. 이러한 알고리즘을 페이...
HTTP 1.0에는 동일한 서버와 통신 시 매 요청마다 연결과 해제가 반복되었다. 따라서 HTTP 1.1에서는 Persistent Connection을 사용했다. 이는 연결과 해제에 사용되는 3-way handshake, 4-way handshake의 비용이 비싸기 때문이다. 또한 HTTP 1.0에서는 요청에 대한 응답이 도착했을 때 다음 요청을 보냈...
HTTPS 통신을 위해서는 클라이언트가 서버 인증서를 확인하고 서로의 암호화 규칙을 정하여 통신을 시작해야한다. 이 과정은 SSL/TLS Handshake라고 불린다. 이는 대칭 키와 공개 키의 단점을 보완하고 장점을 살리기 위함이다. > 대칭 키 암호화 방식은 비용이 싸다는 장점이 있지만, 비밀스럽게 키를 공유해야 한다. 공개 키 암호화 방식은 공개...
RESTful 백엔드 개발자라면 REST라는 단어를 무조건적으로 접하게 된다. REST란 Representational State Transfer의 약자로 URI를 통해 자원을 명시하고 Method를 통해 관리하는 방법이다. 이러한 REST를 따르는 것을 RESTful이라 한다. 1번 사용자를 삭제하고 싶다면 위와 같은 URI, Method를 사용할...
블로킹 vs 논블로킹 블로킹과 논블로킹의 차이는 제어권에서 온다. A함수가 B함수를 호출할 때 B함수가 제어권을 가지고 실행이 끝난뒤 A함수에게 제어권을 돌려주고 A함수가 계속하여 실행하는 것을 블로킹이라 한다. A함수가 B함수를 호출할 때 A함수가 그대로 제어권을 가지고 실행을 이어나가는 것을 논블로킹이라 한다. 동기 vs 비동기 동기와 비동기의...
RAM(Random Access Memory)이란? RAM에는 실행할 프로그램의 명령어와 데이터가 저장된다. HDD, SDD, CD-ROM, USB 메모리와 같은 보조기억장치는 전원이 꺼져도 저장된 내용이 유지되는 비휘발성 저장 장치이지만, RAM은 전원을 끄면 명령어와 데이터가 모두 날아가는 휘발성 저장 장치이다. CPU는 보조기억장치에 직접 접근하...