[OS] 데드락
·
OS
데드락 (교착상태) 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황 모든 스레드가 락이 풀리기를 기다리고 있기 때문에, 무한 대기 상태에 빠지게 되며 이런 스레드를 교착상태라 함 데드락 (교착상태)의 4가지 조건 상호배제 : 자원에 대해서 여러 프로세스가 동시에 접근 불가한 것을 뜻함 점유대기 : 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가, 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근 권한을 요구하는 것 비선점 : 한 프로세스가 다른 프로세스의 자원 접근 권한을 가져 올 수 없음을 뜻함 순환대기 : 두 개 이상의 프로세스가 자원 접근을 기다리는데, 그 관계에..
[NETWORK] PDU (Protocol Data Unit)
·
NETWORK
PDU (Protocol Data Unit) 프로토콜 데이터 단위. 데이터 통신에서 상위 계층이 전달한 데이터에 붙이는 제어정보를 뜻함 각 계층의 데이터의 단위 물리 계층: Bit 데이터링크 계층: Frame 네트워크 계층: Packets 전송 계층: Segment 세션, 표현, 어플리케이션 계층: Message(Data) PDU 구성 SDU(Service Data Unit) : 전송하려는 데이터 PCI(Protocol Control Information) : 제어정보인데 송신자와 수신자 주소, 오류코드 프로토콜 제어 정보등이 있음, 데이터에 제어정보를 덧붙이는 것을 캡슐화라함 SDU + PCI = PDU 캡슐화 어떤 네트워크를 통과하기 위해 전송하려는 데이터를 다른 무언가로 감싸서 보내고 해당 네트워크..
[NETWORK] Socket.io / WebSocket
·
NETWORK
WebSocket 개념 웹 페이지의 한계에서 벗어나 실시간으로 상호작용하는 웹 서비스를 만드는 표준 기술 WebSocket 배경 HTTP 프로토콜은 클라이언트에서 서버로의 단방향 통신을 위해 만들어진 방법 실시간 웹을 구현하기 위해서는 양방향 통신이 가능해야 하는데, WebSocker 이전에는 Polling, Streaming 방식을 이용하여 이를 구현하지만 각 브라우저마다 구현 방법이 달라서 개발이 어렵다는 문제점이 발생하여 해결하기 위해 WebSocket이 만들어짐 일반 TCP Socket과 차이점 일반 HTTP Request를 통해 handshaking 과정을 거쳐 최초 접속이 이루어짐 WebSocket 특징 소켓을 이용하여 자유롭게 데이터를 주고 받을 수 있음 기존의 요청-응답 관계 방식보다 더 ..
[NETWORK] GET / POST 메서드 비교
·
NETWORK
GET 개념 정보를 조회하기 메서드 서버에서 어떤 데이터를 가져와서 보여주기 위한 용도로 사용 사용방법 URL의 끝에 '?'가 붙고, 요청정보가 key=value 형태의 쌍을 이루어 ? 뒤에 이어서 붙여서 서버로 전송함 요청 정보가 여러개일 경우에는 '&'로 구분 특징 URL에 요청 정보를 붙여서 전송하며, 한번 요청 전송시 데이터는 255자로 제한 URL에 key=value로 노출 되기 때문에 POST방식보다 보안상 취약함 HTTP 패킷의 Body는 비어 있는 상태로 전송, 즉 Body의 데이터 타입을 표현하는 Content-Type도 HTTP Header에 들어가지 않음 POST방식보다 빠름, GET방식은 캐싱을 사용할 수 있으며 GET요청할 경우 해당 응답이 브라우저에 의해 캐싱이 됨 POST 개념..
[NETWORK] REST API
·
NETWORK
REST 정의 Representational State Transfer(대표적인 상태 전달)의 약자 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식 REST 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일 REST 네트워크 상에서 Client와 Server 사이의 통식 방식중 하나 HTTP URI를 통해 자원을 명시, HTTP Method를 통하여 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미하며 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여함 REST 장단점 장점 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소..
[NETWORK] CORS
·
NETWORK
CORS(Cross Origin Resource Sharing)이란 웹 서버에게 보안 cross-domain 데이터 전송을 활성화하는 cross-domain 접근 제여권을 부여 CORS 배경 처음 전송되는 리소스의 도메인과 다른 도메인으로부터 리소스가 요청될 경우 해당 리소스는 cross-origin HTTP 요청에 의해 요청 보안상의 이유로 브라우저들은 스크립트 내에 초기화되는 cross-origin HTTP 요청을 제한함 예시로 XMLHttpRequest는 same-origin 정책을 따르기 때문에 XMLHttpRequest를 사용하는 웹 어플리케이션은 자신과 동일한 도메인으로 HTTP 요청을 보내는 것만 가능했음 웹 애플리케이션을 개선시키기 위해, 개발자들은 브라우저 벤더사들에게 XMLHttpReq..
[NETWORK] 요청 응답 헤더
·
NETWORK
HTTP 요청 응답 헤더 HTTP 헤더 내 일반 헤더 항목 (General Header) HTTP 헤더 내 엔티티/개체 헤더 항목 (Entity Header) HTTP 헤더 내 요청 헤더 항목 (Request Header) HTTP 헤더 내 응답 헤더 항목 (Response Header) HTTP 헤더 내 일반 헤더 항목 (General Header) 요청 및 응답 메시지 모두에서 사용 가능한 일반 목적의 헤더 항목 Date HTTP 메시지를 생성한 일시 (RFC 1123에서 규정) Connection 클라이언트와 서버 간 연결에 대한 옵션 설정 Connection : close (현재 HTTP 메세지 직후에 TCP 접속 종료 의미 Connection : Keep-Alive (현재 TCP 커넥션을 유지)..
[DOCKER] 도커컴포즈
·
DOCKER
Docker Compose 여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴 하나의 서비스 운영하기 위해서 여러 개의 애플리케이션이 동작해야함 이러한 컨테이너화된 애플리케이션들을 통합관리를 해줌 YAML 파일로 설정해서 관리 Docker Compose YAML 파일 구성 version compose 버전 version : "2" services 컴포즈를 이용해서 실행할 컨테이너 옵션 정의 service: webserver: image: nginx db: image: redis build 컨테이너 빌드 webapp: build: . image compose를 통해 실행할 이미지를 지정 webapp: image: centos:7 command 컨테이너에서 실행될 명령어 지정 app: image: nod..
[NETWORK] HTTP / HTTPS
·
NETWORK
HTTP 정의 HyperText Transfer Protocol 웹 상에서 클라이언트와 서버간에 요청/응답을 통해 정보를 주고 받을 수 있는 프로토콜 HTTP 특징 TCP와 UDP를 사용하며, 80포트를 사용 비연결성 (Connectionless) : 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 종료 무상태성 (Stateless) : 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지 하지 않음 HTTP 동작과정 클라이언트 -> 요청 -> 서버 -> 응답 -> 클라이언트 -> 연결종료 1 사용자가 웹 브라우저에 URL 주소 입력 2 DNS 서버에 웹서버 호스트 이름을 IP주소로 변경 요청 3 웹 서버와 TCP 연결 시도 (3way-handsha..