본문 바로가기

728x90

서버

[HTTP] OSI 7계층 /* OSI 7계층 */OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 예시)PC방에서 오버워치를 하는데 연결이 끊겼다. 어디에 문제가 있는지 확인하기 위해서는 모든 PC가 문제가 있다면 라우터의 문제(3계층 네트워크 계층)이거나 광랜을 제공하는 회사의 회선 문제(1계층 물리 계층) 한 PC만 문제가 있고 오버워치 소프트웨어에 문제가 있다면(7계층 어플리케이션 계층) 오버워치 소프트웨어에 문제가 없고, 스위치에 문제가 있으면(2계층 데이터링크 계층) 있다고 판단해 다른 계층에 있는 장비나 소프트웨어를 건들이지 않는것이다. (인용: https://shlee0882.tistory.com/110) .. 더보기
[Node.js] 이벤트 루프 /* 이벤트 루프 */이벤트 루프는 시스템 커널에서 가능한 작업이 있다면 그 작업을 커널에서 수행한다.자바스크립트는 단인 스레드 기반이지만 Node.js가 논블로킹 I/O 작업을 수행할 수 있도록 해주는 핵심 기능입니다.  각 단계에서는 해당 단계에서 실행되는 작업을 저장하는 큐가 존재한다. /* 타이머 단계 */이벤트 루프는 타이머 단계 (timer phase)에서 시작한다. 타이머 단계의 큐에는 setTimeout이나 setInterval 과 같은 함수를 통해 만들어진 타이머들을 큐에 넣고 실행한다. 타이머들은 min heap 으로 관리 된다. 힙을 구성할 때 기준으로 실행할 시각이 가장 적게 남은 타이머가 힙의 루트가 된다.  ex) 딜레이 값이 100, 200, 300, 400 인 4개의 타이머 .. 더보기
[Node.js] 무엇인가 /* Node.js란 */현재 다니고 있는 회사에서 nodejs 기반 nestjs를 쓰기 때문에 nodejs 를 공부할 필요가 있다고 느꼈다.nodejs 는 Chrome V8 Javascript 엔진으로 빌드 된 Javascript 런타임이라고 노드 공식 사이트에서 소개 된다.노드는 서버를 실행하는 데 제일 많이 사용된다. Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작이 가능하다.  Javascript는 독립적인 언어가 아닌 스크립트 언어이다크르비트 언어는 특정한 프로그램 안에서 동작해서 웹 브라우즈 프로그램 안에서만 동작한다.Nodejs는 Javascrip.. 더보기
[서버] RESTful API 프로젝트를 구할 때 인터뷰 형식으로 RESTful API에 대해 물어봤었다. 맞는 대답을 하긴했지만 스스로 평가하기에 답변이 만족스럽지 못해 공부를 하고 블로그를 작성해본다 REST API 관련 글은 이전에 썼던 게시글을 참고하자 https://ewanjee.tistory.com/entry/RESTful-API /* RESTful API */ REST API와 RESTful API는 비슷해 보이지만, 미묘한 차이가 있다. REST API는 REST 아키텍처 원칙을 따르는 API를 말한다. RESTful API는 REST 아키텍처 원칙을 완벽하게 준수하는 API를 의미한다. /* RESTful 기준 */ 클라이언트, 서버 및 리소스로 구성. 요청이 HTTP를 통해 관리되는 클라이언트-서버 아키텍처 스테이트.. 더보기
[HTTP] 멱등성 /* 멱등성이란? */ HTTP에서 멱등성이란 동일한 요청을 계속해서 들어올 때 서버가 동일한 상태를 유지하는 성질을 말한다. (결과를 변경시키지 않는 작업) /* HTTP의 메서드 멱등성 규칙 */ GET, PUT, DELETE 는 멱등성을 가지고 있다. GET는 지정된 URI에 리소스를 검색하는 것이므로 결과가 변경되지 않는다 (멱등성 O) PUT은 지정된 URI에 같은 리소스 생성 및 업데이트이기 때문에 결과가 변경되지 않는다 (멱등성 O) DELETE은 지정된 URI에 대한 리소스 삭제에 대한 결과는 변경되지 않는다 (멱등성 O) POST, PATCH는 호출할 때마다 상태가 달라지기 때문에 멱등성을 가지고 있지 않는다. POST는 요청받을 때마다 다른 리소스가 생성이 된다. 따라서 결과가 매번 변.. 더보기
REST API /*웹 API 특성*/ 1. 모든 클라이언트는 내부에서 API가 구현되는 방법에 관계없이 API를 호출할 수 있어야 한다. 2. API가 진화해도 기존 클라이언트 애플리케이션은 수정 없이 계속 작동할 수 있어야 한다. /*REST (Representational State Transfer)*/ - REST API는 리소스 중심으로 디자인 되며, 클라이언트에서 액세스 할 수 있는 모든 종류의 개체, 데이터, 서비스가 리소스에 포함된다. - 리소스를 식별하는 URI 식별자가 있다. - REST API는 상태 비저장 요청 모델 사용 (한번 요청을 했다고 해서 그 상태 정보를 저장할 수 없다) - URI는 명사 기반으로 작성하는 것이 좋다 /*API 작업 정의*/ GET : 지정된 URI에서 리소스의 표현을 .. 더보기
[HTTP] HTTP 공부시작설명 및 IP / TCP /* HTTP 공부를 시작한 이유 */ 원래는 무작정 스프링부트 소스, 강의 들을 보면서 웹사이트를 만들었다. 그 후에 스프링부트에 대해 조금은 알 수 있게 되었다. 그리고 백엔드에 조사를 더 해보니 HTTP/HTTPS, IP/TCP, 세션, 쿠키 등등 배워야 겠다고 느꼈다. 백엔드는 서버를 다뤄야 하는데 이들의 개념에 대해 무지해서는 되겠는가. 그래서 공부를 시작한다 클라이언트 중간 노드 서버 클라이언트는 서버에게 데이터를 전달해야 한다. 바로 전달을 하면 좋겠지만, 중간단계를 거친다. (중간노드들에게 보내고 보내서 마지막에 서버로 전달이 된다) 데이터를 전달할때는 패킷 (Packet) 이라는 통신단위를 이용한다. 이때는 IP (인터넷 프로토콜)을 이용하게 되는데 IP패킷에는 클라이언트 IP, 서버 I.. 더보기

728x90