반응형

http 4

주요 HTTP 상태 코드 (feat. 맥도날드)

1XX : Information Response 상태코드가 1로 시작하는 경우는 서버가 클라이언트로부터 요청을 받았으며, 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미이다. 해당 코드는 HTTP 1.0 에서 지원되지 않는다. 식당에서 손님이 종업원에게 음식을 주문하는 상황을 생각할 수 있다. 손님이 음식을 주문한 후, 종업원이 1XX로 주문이 완료되었음을 응답해주는 상황을 생각하면 된다. 100 Continue 진행 중임을 의미하는 응답코드이다. 현재까지의 진행상태에 문제가 없으며, 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려준다. 손님이 음식을 주문한 후에 오랫동안 음식이 나오지 않자, 종업원에게 "혹시 10번 테이블 음식 주문 들어갔나요?"라고 물..

HOL (Head Of Line) 블로킹 문제

개요 기존의 HTTP의 요청은 큐 처리와 동일하다. 먼저 들어온 요청을 반드시 먼저 응답해주어야 하는 방식으로 동작하는데, 만약, 먼저 들어온 작업 요청에서 지연이 발생하면 이후 들어온 요청들은 먼저 들어온 작업이 끝날 때 까지 함께 대기해야 한다. 이 문제를 HTTP/2에서 어떻게 해결했는지 간단하게 정리한다. HTTP/1.1 HTTP는 TCP 연결을 기반으로 동작하는 프로토콜이다. HTTP는 비연결성 프로토콜이기 때문에 한 번 연결로 한 번의 요청과 응답을 하고 응답이 끝나면 연결을 끊어버린다. 그런데 한 번 연결을 수립할 때 마다 오버헤드가 발생한다. 예를 들어, 전체 작업량을 10이라고 한다면, 연결을 수립하는데만 4의 작업량이 필요하다고 가정하면 한번의 요청과 응답만 하고 연결을 끊기에는 너무 ..

HTTP Digest 인증 문제

최근에 회사에서 카메라 서버에 PTZ (Pan Tilt Zoom) 명령을 전달하는 과정에서 사용하는 HTTP Digest 인증에서 문제에 직면했다. 그 전까지 HTTP를 통신하는 과정에서 인증이 있다는 것도 몰랐던 나는 이 기회에 HTTP 인증 방식에 대한 공부를 해보기로 하였다. 다음은 @ssup2로부터 참조한 것이다. 일반적으로 HTTP를 통해 서버와 통신할 때 클라이언트의 신분을 확인하기 위해 인증작업을 진행하는데, 대표적으로 다음과 같은 인증방식이 있다. 익명: 인증정보를 포함하지 않는 요청을 말한다.Basic: 기본 인증은 클라이언트에 대한 사용자 이름과 암호를 Base64로 인코딩 된 문자열을 보낸다.Digest: 사용자 이름, 암호 등을 조합하여 MD5 값으로 인증한다. 인증과정은 다음과 같..

http 서버에서 multipart/form-data에 boundary 넣는 방법

const express = require('express'); const FormData = require('form-data'); let router = express.Router(); router.route('/test').get((req, res) => { let form = new FormData(); form.append('part1', 'part 1 data'); form.append('part2', 'part 2 data'); form.append('part3', 'part 3 data'); res.setHeader('Content-Type', `multipart/form-data; boundary=${form.getBoundary()}`); form.pipe(res); }); module..

반응형