코드 저장소

공부에는 끝이 없다!

HTTP 10

HTTP - 캐시와 조건부 요청(3)

프록시 캐시네트워크는 실제로 굉장히 멀리 떨어진 곳의 데이터를 받을 수 있게 해준다.하지만 실제로 물리적인 거리가 멀어지면 전송속도가 상당히 떨어지기 때문에 이런 문제를 방지하고자 프록시 캐시 서버라는 것을 사용하게 되었다.프록시 캐시 서버란 브라우저가 원서버에 바로 접근하는 것이 아니라 프록시 캐시 서버로 들어오게 하여 응답 속도를 높이는 것이다.CDN Service라고도 부르는 이 방법은 원 서버에 있는 데이터를 첫번째 요청이 들어오면 프록시 캐시 서버에 저장해 두고 다음 요청이 들어올 때는 프록시 캐시 서버에서 응답을 보내게 하여 전송 속도를 높이는 방법이다.이때 프록시 캐시 서버에 저장되는 것을 public 캐시라고 부르고 브라우저에 저장되는 것을 private 캐시라고 부른다.쉽게 설명하면 공용..

카테고리 없음 2024.05.06

HTTP - HTTP 일반헤더와 쿠키

쿠키쿠키 사용시 2개의 헤더를 사용하게 된다. Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달우선 쿠키가 무엇이고 어떤 역할을 하는지 알아보자.만약 홍길동이라는 이름의 유저가 로그인을 한다고 가정해보자.1.쿠키를 사용하지 않는 경우웹 브라우저는 POST 요청으로 user에 대한 로그인 정보를 보내고 서버는 로그인에 대한 응답을 주게 될 것이다.쿠키를 사용하지 않는 경우, 이미 로그인이 된 상태에서 다시한번 GET 요청으로 Index 페이지로 접근한다고 가정해보자.서버에서는 로그인 된 유저에 대한 정보가 없기 때문에 해당 요청이 홍길동이 보낸것인지 알수가 없다.HTTP는 무상태 프로토콜이기 때문에 클라이언..

HTTP 2024.04.30

HTTP - HTTP 상태코드 (2)

1. 3xx (Rediretion) 300번대의 상태코드는 요청을 완료하기 위하여 유저 에이전트의 추가 조치가 필요한 것을 의미한다. 유저 에이전트는 클라이언트 프로그램을 말하며 대부분의 경우 브라우저이다. 300번대의 대표적인 상태 코드는 다음과 같다. 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 이 중에서 300은 거의 사용되지 않으며 301 ~ 308은 중요하게 사용된다. 300번대를 설명하기 전에 리다이렉션에 대해서 이해를 할 필요성이 있다. 웹 브라우저는 300번대의 응답의 결과에 Location 헤더가 있으면..

HTTP 2024.01.17

HTTP - HTTP API 설계

POST 기반 API와 PUT 기반의 API 1. Post 기반의 등록 회원 등록이라는 기능을 HTTP API를 통하여 만든다고 생각해보자. 우리는 POST 메서드를 이용하여 /members라는 URI를 통하여 회원 정보를 등록하게 될 것이다. URI를 잘 보면 뒤에 쿼리 파라미터가 따로 필요가 없는 것을 확인 할 수 있다. 이것은 POST는 바디를 통해 전달 받은 데이터를 어떻게 처리할 지 서로 규약을 통해 알고 있기 때문이다. 이때, /members를 Collection이라고 한다. Collection은 서버가 관리하는 리소스 디렉토리를 말하며 서버가 리소스의 URI를 생성하고 관리하는 것을 말한다. 또한, 앞선 강의에서 설명했듯 POST는 서버가 리소스 URI를 결정하기 때문에 클라이언트가 등록될 ..

HTTP 2024.01.15

HTTP - HTTP 메서드의 속성

HTTP 메서드의 속성 HTTP 메서드는 3가지 큰 특징을 가진다. 안전(Safe Methods) 멱등(Idempotent Methods) 캐시가능(Casheable Methods) 이번 시간에는 이런 HTTP 메서드의 속성에 대하여 알아보자. 안전 안전이라는 특징은 호출해도 리소스를 변경하지 않는것을 의미한다. 그런 점에서 GET,HEAD와 같은 메서드는 리소스를 변경하지 않으므로 안전하다고 할 수 있다. 단, 안전은 해당 리소스의 변경만 고려하므로 로그가 쌓여서 발생하는 장애같은 것은 고려하지 않는다. 어디까지나 리소스에 대해서만 생각해야 한다. 멱등 멱등이라는 것은 몇번을 호출하든 같은 결과를 반환하는 것을 말한다. 조금 헷갈릴 수 있는데 여기서 같은 결과를 반환한다는 것은 요청이 같을 때 메서드로..

HTTP 2024.01.11

HTTP - HTTP 메서드 (2)

PUT put은 리소스를 대체하는 메서드이다. 다만 리소스가 없으면 생성하고, 리소스가 있으면 대체한다. 예를 들어, 우리가 파일을 저장할때 같은 이름이 없으면 생성하고, 없으면 덮어씌우는 것과 같은 동작이다. PUT을 사용할 때 중요한 점이 있는데 클라이언트가 리소스를 식별한다는 것이다. 이게 무슨 말이냐면 이전에 POST 메시지를 살펴보자. POST /members HTTP/1.1 Content-Type: application/json { "userId":"1", "username":"hong" } URI를 보면 뒤에 /{id}값이 없다. 이는 POST 메서드는 클라이언트가 리소스를 식별하는 것이 아니라 POST로 들어온 데이터를 서버가 처리하는 것이 주 목적이기 때문이다. 하지만 PUT의 경우는 클..

HTTP 2024.01.11

HTTP - HTTP 메서드

HTTP API 설계 이번에는 HTTP API를 설계하는 과정을 배워보자. 당신에게 회원기능에 대한 API를 설계하라는 요청이 들어왔다. 회원 기능은 회원가입, 회원조회, 회원정보 수정, 회원 탈퇴의 4가지 기능이 있다고 가정한다. 그럼 가장 먼저 URI를 설계하게 될 것이다. 우리는 일반적인 명명규칙에 따라 회원가입 : /join-member/ 회원조회 : /read-member/ 회원정보 수정 : /update-member/ 회원탈퇴 : /delete-member/ 라고 URI를 작성하였다. 얼핏 보면 굉장히 잘 설계된 URI처럼 보이지만 실은 그렇지 않다. URI에서 가장 중요한 것은 리소스를 식별하는 것이기 때문이다. 그렇다면 우리 요구사항에서 리소스는 뭘까? 바로 회원이라는 개념 자체가 리소스가..

HTTP 2024.01.10

HTTP - HTTP 기본

HTTP란? http는 Hyper Text Transfer Protocol의 약자이다. 처음 시작은 하이퍼 텍스트를 전송하는 프로토콜로 시작하였으나 현대에는 거의 모든 형태의 데이터 전송이 가능하다. 또한 서버간의 데이터를 주고 받을 때도 대부분 HTTP를 사용한다. 현재 가장 많이 사용되는 버전은 HTTP/1.1로 대부분의 기능이 다 들어있으며 그 위의 버전은 대부분 성능 개선에 초점이 맞추어져 있다. 또한, HTTP/1.1, HTTP/2는 TCP 기반으로 동작하며 HTTP/3는 UDP에서 동작한다. HTTP의 특징 HTTP는 클라이언트 서버 구조로 동작하며 무상태 프로토콜(스테이스리스), 비연결성이란 특징을 지닌다. 또한, HTTP 메시지를 통해 통신을 하며 단순하고 확장이 가능하다는 특징이 있다. ..

HTTP 2024.01.09

HTTP - URI와 웹 브라우저 요청 흐름

URI( Uniform Resource Identifier )란? URI(Uniform Resource Identifier)는 로케이터(Locator), 이름(name) 또는 둘 다 추가로 분류 될 수 있다. 아마 개발자라면 URI, URL, URN에 대해서 용어는 한번쯤 들어보았을 것이다. 이것들은 전부 인터넷 자원(Resource)을 식별하는 방법이며 크게는 URL(Resource Locator)와 URN(Resource Name)으로 나뉜다. 그리고 URI란 이 둘을 통합하여 지칭하는 개념이다. 좀 더 자세하게 살펴보면 URN은 인터넷 자원의 이름을 뜻하고 URL은 인터넷 자원으로 찾아가는 주소 정보, URI는 인터넷 자원을 식별할 수 있는 모든 문자열을 말한다. 비유로써 잘 정리되어 있는 글이 있..

HTTP 2024.01.08

HTTP - 인터넷 네트워크에 대하여

IP란? IP(인터넷 프로토콜)란 지정한 IP 주소로(IP Address) 데이터를 전달할 수 있는 규칙이다. 패킷(Packet)이라는 통신단위로 데이터를 전달한다. 이 IP 패킷에는 규칙이 있는데 일반적으로 출발IP주소와 목적 IP주소를 적게 된다. 이를 통해 복잡한 인터넷 노드 안에서 서로 목적지로 던지게 되면서 최종 주소인 목적 IP 주소로 데이터가 도달 하게 되는 것이다. 이런 IP에는 한계가 있는데 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송(비연결성) 중간에 패킷이 사라지거나 패킷이 순서대로 오지않으면 제대로 동작하지 않음(비신뢰성) 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우 동작하지 않음(프로그램 구분) 과 같은 문제점이 있다. 따라서 이런 문제점을..

HTTP 2024.01.07