HTTP 22

Network

네트워크의 기초 TCP/IP 4계층 모델 네트워크 기기 IP 주소 HTTP 2.1네트워크의 기초 네트워크 => 노드, 링크가 서로 연결되어 있거나 연결되어 있는 상태 => 리소스를 공유하는 집합 노드(서버, 라우터, 스위치 등 네트워크 장치) 링크(유선, 무선) 2.1.1처리량과 지연 시간 네트워크 구축 => 좋은 네트워크를 만드는 것이 중요 => 많은 처리량(트래픽)을 처리할 수 있고 지연 시간(latency)이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크 시간(데이터 처리 시간) 트래픽(많은 데이터 처리량) 대역폭(트랙픽 대역폭) => 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수 처리량(트래픽 처리량) 단위로 => bps(bits per second) => 초당 전송 또..

HTTP 2022.12.19

캐시와 조건부 요청 헤더 & 프록시 캐시와 캐시 무효화

캐시 제어 헤더 Cache - Control: 캐시 제어 Pragma: 캐시 제어(하위 호환) Expires: 캐시 유효 기간(하위 호환) Cache-Control 캐시 지시어(directives) Cache-Control: max-age 캐시 유효 시간, 초 단위 Cache-Control: no-cache 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용 Cache-Control: no store 데이터에 민감한 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제) Pragma 캐시 제어(하위 호환) Pragma: no-cache HTTP 1.0 하위 호환 Expires 캐시 만료일 지정(하위 호환) expires: Mon, 01 Jan 1990 00:00:00 ..

HTTP 2022.04.30

캐시 기본 동작 & 검증 헤더와 조건부 요청

웹 브라우저에서 start.jpg를 요청하면 서버에서 star.jpg라는 그림을 찾아준다. 캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 받아야 한다. 인터넷 네트워크는 매우 느리고 비싸다. 브라우저 로딩 속도가 느리다. 느린 사용자 경험 60초 동안은 캐시가 유효하고 응답 결과를 캐시에 저장한다. 두번째 요청할 때는 캐시를 먼저 살핀다. 60초 안에 찾게되면 캐시에서 바로 가져오게 된다. 네트워크를 아예 탈 필요가 없게 된다. 캐시 적용 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 되고 비싼 네트워크 사용량을 줄일 수 있고 브라우저 로딩 속도가 매우 빠르다. 빠른 사용자 경혐 캐시 시간 초과 star.jpg를 다시 요청하고 60초가 초과되었다. 그러면 다시 웹브..

HTTP 2022.04.30

인증 & 쿠키

Authorization: 클라이언트 인증 정보를 서버에 전달 WWW-Authenticate: 리소스 접근시 필요한 인증 방법 정의 Authorization 클라이언트 인증 정보를 서버에 전달 Authorization: Basic xxxxxxxxxxxxxxxxxxxxx WWW-Authenticate 리소스 접근시 필요한 인증 방법 정의 리소스 접근시 필요한 인증 방법 정의 401 Unauthorizaed 응답과 함께 사용 WWW-Authenticate: Newauth realm="apps", type=1, title="Login to\"apps"\"",Basic realm="simple" 쿠키 매커니즘을 잘 이해하자. Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답) Cookie: 클라이언트가..

HTTP 2022.04.30

전송 방식 & 정보(일반 정보 and 특별한 정보)

Transfer - Encoding Range, Content - Range 전송 방식 설명 단순 전송 압축 전송 분할 전송 범위 전송 단순 전송은 Content-Length를 알고 있을 때 전달 해준다. 압축 전송은 단순 전송에 있던 내용들을 gZip 같은 걸로 압축을 한다. (Content-Encoding의 종류를 나타내주어야 한다.) 용량이 큰 걸 분할 전송으로 보내면 오는데 바로바로 표현을 해 줄수가 있다. 바이트 정보들이 다 나와있기 때문에 분할해서 전송할 때에는 Content-Length를 나타내주면 안된다. 범위 전송 같은 경우에는 범위를 지정해서 전송해 줄수가 있다. 범위를 지정해서 보내어 줄 수 있다. 일반 정보 From: 유저 에이전트의 이메일 정보 Referer: 이전 웹 페이지 주소..

HTTP 2022.04.30

HTTP 헤더 개요 & 표현 및 컨텐츠 협상

HTTP 전송에 필요한 모든 부가정보 예) 메시지 바디에 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보... 표준 헤더가 너무 많다. 필요시 임의의 헤더 추가 가능 헤더 분류 General 헤더: 메시지 전체에 적용되는 정보, 예) Connection: close Request 헤더: 요청 정보, 예) User-Agent: Mozilla/5.0 (Macintosh; ..) Request 헤더: 응답 정보, 예) Server: Apache Entity 헤더: 엔티티 바디 정보, 예) Content-Type: text/htm, Content-Length: 3423 메시지 본문(message body)은 엔티티 본문(entity body)을 전달하는데 사용 엔티티 본..

HTTP 2022.04.30

HTTP 상태코드 2xx 3xx 4xx 알아보자.

2xx에 대해서 보자. 클라이언트의 요청을 성공적으로 처리 200 Ok 201 Created 202 Accepted 204 No Content 클라이언트에서 요청한 걸 가지고 서버에서 생성한걸 뜻함 200은 요청이 성공이 된 것이고 201은 요청이 성공해서 새로운 리소스가 생성이 되는데 생성된 리소스는 응답의 Location 헤더 필드로 식별이 가능하다. 202 Accepted는 요청이 접수되었으나 처리가 완료되지 않은 걸 뜻하고 배치 처리 같은 곳에서 사용 예) 요청 접수 후에 1시간 뒤 배치 프로세스가 요청을 처리한다. 204 No Content는 서버가 요청을 성공적으로 수행을 했지만, 응답 페이로드 본문에 보낼 데이터가 없는 걸 뜻한다. 예) 문서 편집기에서 sava 버튼 save 버튼의 결과로 ..

HTTP 2022.04.27

HTTP API 설계 예시

HTTP API 설계 예시를 살펴보자. HTTP API - 컬렉션 POST 기반 등록 예) 회원 관리 API 제공 HTTP API - 스토어 PUT 기반 등록 예) 정적 컨텐츠 관리, 원격 파일 관리 HTML FORM 사용 웹 페이지 회원 관리 GET, POST만 지원 회원 관리 시스템을 만든다고 하자. / members는 collections라고 한다. 회원 목록 / members => GET 회원 등록 / members => POST 회원 조회 / members/{id} -> GET 회원 수정 / members/{id} -> PATCH, PUT, POST 회원 삭제 / members/{id} -> DELETE POST -신규 자원 등록 특징 클라이언트는 등록될 리소스의 URI를 모른다. 회원 등록 /..

HTTP 2022.04.27

클라이언트에서 서버로 데이터 전송

클라이언트에서 서버로 데이터 전송 HTTP API 설계 예시 데이터 전달 방식은 크게 2가지가 있는데 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 상황을 보자. 정적 데이터 조회 이미지, 정적 텍스트 문서 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 HTTP API를 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax) 정적 데이터 조회 쿼리 파라미터 미사용 이미지 리소스를 만들어서 클라이언트에게 내려준다. ..

HTTP 2022.04.27

HTTP 메서드의 속성

안전(Safe Methods) 멱등(Idempotent Methods) 캐시가능(Cacheable Methods) 안전(Safe) Safe 호출해도 리소스를 변경하지 않는다. 계속 호출을 하여서 로그 같은게 쌓여서 장애가 발생하면? 안전은 해당 리소스만 고려 / 그러한 부분까지 고려 안한다. 멱등(Idempotent) f(f(x)) = f(x) 한 번 호출하든 두 번 호출하든 100 번을 호출하든 결과가 같다. 멱등 메서드 GET: 한 번 조회를 하든, 두 번 조회하든 같은 결과가 조회된다. PUT: 결과를 대체하는데 같은 요청을 여러번 해도 최종 결과는 같다. DELETE: 결과를 삭제하는데 같은 요청을 여러번 해도 삭제된 결과는 같다. POST: 이 아이는 멱등이 아니다. 두 번 호출하면 같은 결제가..

HTTP 2022.04.27