Computer Science/Server, 네트워크

    [HTTP] Status Code / Request Methods 정리

    1. HTTP/2 순서 HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 입니다. HTTP/2 순서 1. TCP connection을 통하여 Client와 Sever 연결 확인 2. Client에서 request(요청)하여 GET(request메소드)을 통한 URL(정보를 받기위한 경로), headers(정보)으로 서버에 요청 3. Sever에서 response(응답) 통하여 status code와 관련된 파일을 보낸다. 4. TCP connection이 닫힌다. 2. HTTP Status Code 정리 참고 자료 HTTP 상태 코드 - HTTP | MDN HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답..

    [네트워크] 웹 캐시

    1. 캐시의 기본 원리 및 적용 캐시(cache)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킵니다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용합니다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있습니다. 브라우저에 캐시를 저장할 땐 헤더에 cache-control 속성을 통해 캐시가 유효한 시간을 지정할 수 있습니다. 이 경우 60초로 설정한다면 60초 동안은 해당 캐시가 유효하다는 의미가 됩니다. 두 번째 요청에선 캐시를 우선 조회하게 됩니다. 캐시가 존재하고 아직 60초가 지나지 않아 유효한 캐시라면 해당 캐시에서 데이터를 가져옵니..

    [네트워크] HTTP 헤더

    1. 표현 헤더(Representation Headers) HTTP 메시지는 헤더와 바디로 구분할 수 있습니다. HTTP 바디에서는 데이터 메시지 본문(Message body)을 통해서 표현(Representation) 데이터를 전달합니다. 여기서 데이터를 실어 나르는 부분을 페이로드(Payload)라 합니다. 표현은 요청이나 응답에서 전달할 실제 데이터를 뜻하며 표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공합니다. HTTP 헤더 HTTP 메시지는 헤더와 바디로 구분할 수 있습니다. HTTP 바디에서는 데이터 메시지 본문(Message body)을 통해서 표현(Representation) 데이터를 전달합니다. 여기서 데이터를 실어 나르는 부분을 페이로드(Payload)라 합니다. 표현은 요청이나..

    [네트워크] 인터넷 프로토콜 (IP, TCP/UDP, HTTP)

    네트워크 흐름을 이해하기 위해서는 웹 통신을 가능하게 한 HTTP 통신의 흐름을 파악하는 것이 중요합니다. 1. IP와 IP Packet 복잡한 인터넷 망 속 수많은 노드들을 지나 어떻게 클라이언트와 서버가 통신할 수 있는 것은, 출발지에서 목적지까지 데이터가 무사히 전달되기 위해선 규칙이 있기 때문입니다. (여기서 노드는 하나의 서버 컴퓨터를 의미합니다.) 그래서 흔히 말하는 IP(인터넷 프로토콜) 주소를 컴퓨터에 부여하여 이를 이용해 통신합니다. IP는 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터 전달을 합니다. IP 패킷에서 패킷은 pack과 bucket이 합쳐진 단어로 소포로 비유할 수 있습니다. IP 패킷은 이를 데이터 통신에 적용한 것이라고 보면 됩니다..

    [Server] Express, Middleware

    Express.js 소개 MERN stack은 JavaScript 생태계에서 인기 있는 프레임워크인 MongoDB, Express, React, Node를 지칭하는 말입니다. 이 중에서 Express.js는 Node.js 환경에서 웹 서버, 또는 API 서버를 제작하기 위해 사용되는 인기 있는 프레임워크입니다. Express로 구현한 서버가 http 모듈로 작성한 서버와 다른 점은 다음과 같습니다. 미들웨어 추가가 편리하다. 자체 라우터를 제공한다. 공식 문서를 따라 Express로 간단한 웹 서버를 만들 수 있습니다. 순수한 node.js 코드로 라우팅을 구현한 아래의 코드 const requestHandler = (req, res) => { if(req.url === '/lower') { if (re..

    [Server] OAuth 2.0

    코딩 공부하면서 가입해야하는 곳이 정말 많아서 귀찮을 수 있는데, 구글아이디 하나로 모든 것을 가입했습니다. 그래서 굉장히 편리하다고 느끼는데 그것에 관한 기술이 OAuth 2.0 기술입니다. 하지만 여전히 사용자 정보가 내 서버에 저장되는 것은 변함이 없습니다. OAuth는 인증(Authentication)을 다른 서비스에 맡길 뿐, 접근 권한 관리(Authorization)는 순전히 내 서버의 몫입니다. 그러므로, OAuth의 작동 방식을 알기 위해서는 기존 인증 방식에 대한 이해가 필수적입니다. 소셜 로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현됩니다. 전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과는 달리, OAuth는 인증을 중개해주는 메커니즘입니다. 보안된 리소스에 액세스하..

    [Server] 보안 인증 (Token-JWT)

    오늘 과제도 어려웠습니다. 확실히 이 부분이 제일 어렵다는 이야기를 들었는데 개념은 이해가 되지만 코딩구현에 대해 갈피를 못잡고 있는데, 이 부분을 이해하여 코드로 작성한다면 당장 보이는 산은 넘을 수 있다고 생각합니다. 세션 기반 인증은 서버(혹은 DB)에 유저 정보를 담는 인증 방식이었습니다. 서버에서는 유저가 민감하거나 제한된 정보를 요청할 때마다 "지금 요청을 보낸 유저에게 우리가 정보를 줘도 괜찮은가?" 를 확인하기 위해 가지고 있는 세션 값과 일치하는지 확인합니다. 매 요청마다 데이터베이스를 살펴보는 것이 불편을 해결하기 위해 토큰기반 인증 중 대표적인 JWT(JSON Web Token)이 있습니다. 클라이언트에서 인증 정보를 보관하는 방법으로 토큰기반 인증이 고안되었습니다. 클라이언트가 토큰..

    [Server] 보안 인증 기초 (HTTPS/Hashing/cookie/CSRF)

    보안 기초적인 개념에 대해서 배웠다. 크게보면 굉장히 쉽고 재미있지만 들어가면 들어갈수록 참 복잡하다. 코딩공부를 하면서 뭐든 배울 때 그런 느낌을 많이 받았다. 오늘 배운 내용은 군생활 하면서 한번쯤은 들어본 내용이지만 자세할수록 머리가 아프다. 오늘 이에 관한 과제도 했지만 정리는 양이 많고 어려워 우선 패스해야겠다.. HTTPS (Hyper Text Transfer Protocol Secure Socket layer) HTTP 프로토콜 내용을 암호화 하여 보안성이 추가한 형태로, HTTP 요청을 하면 클라이언트와 서버 사이에서 그대로 볼 수 있었지만, HTTPS는 암호화를 사용하여 보안성을 높임 인증서(Certificate) 데이터 제공자 신원 보장, 도메인 종속 도메인이 같아야만 서버에서 정보를 ..

    [Web Server] 기초

    오늘 공부하면서 제일 느꼈던 점은 여러 문서를 찾아보고 스스로 공부하는것이 코드스테이츠 방식이지만 어떤 하나를 구현해보는 것이 가장 좋은 것을 깨달았다. 앞에 내용들 솔직히 눈에도 안들어 왔지만 오늘 실습을 하면서 뒤에 공부 했던것이 조금씩 보이기 시작했다. 코드스테이츠 수업 방식이 흥미를 찾아주진 않아서 직접 스스로 깨닫는게 중요한거 같다. 공부에 무슨 흥미냐 할 수 있지만 적어도 나는 그게 필요한것 같다. 그렇기에 얼른 현업에서 많은 것을 보고싶다. CORS (cross origin resource sharing) 브라우저에서 크로스 도메인 요청은 기본적으로 제한되어있다. 웹 애플리케이션 고도화를 위해 개선 요청 했는데. 서버가 Allow한 범위에서는 허용하게 되었다. 서버에서 Allow 하는 조건들..

    [HTTP/네트워크] 실습 (REST API, Postman)

    CSR(Client Side Rendering)에서는 몇 가지의 메소드를 이용해 서버와 통신합니다. GET을 통해 웹 페이지나 데이터를 요청하고, POST로 새로운 글이나 데이터를 전송하거나 DELETE로 저장된 글이나 데이터를 삭제할 수 있습니다. REST API에서 REST는 “Representational State Transfer”의 약자로, 웹(http)의 장점을 최대한 활용할 수 있는 아키텍처로써 처음 소개되었습니다. REST API는 웹에서 사용되는 모든 자원을 HTTP URI로 표현하고, HTTP Method를 통해 요청과 응답을 정의하는 방식을 말합니다. REST API를 사용한다는 것은 REST 아키텍처의 제약 조건을 준수한다는 말입니다. 그리고 Postman은 앱으로 깔아서 쓰는게 편..