캐시가 없을 때 • 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. • 인터넷 네트워크는 매우 느리고 비싸다. • 브라우저 로딩 속도가 느리다. • 느린 사용자 경험 캐시 적용 • 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다. • 비싼 네트워크 사용량을 줄일 수 있다. • 브라우저 로딩 속도가 매우 빠르다. • 빠른 사용자 경험 캐시 시간 초과 • 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신한다. • 이때 다시 네트워크 다운로드가 발생한다. 검증 헤더와 조건부 요청1 Last-Modified(검증 헤더):최종 수정일을 넣어둠 if-modified-since : 조건부 요청 검증 헤더와 조건부 요청 정리 • 캐시 유효 시..
HTTP 헤더 개요 Request 헤더 : 웹브라우 정보가 뭔지 Response 헤더 : 현재 요청을 받아서 처리하는 서버의 정보 메시지 본문안에 엔티티 본문을 담아서 전달한다 그런데 HTTP 표준 1999년 RFC2616 -> 폐기, entity body 표현이 사라짐 2014년 RFC7230~7235 등장 RFC723x 변화 • 엔티티(Entity) -> 표현(Representation) • Representation = representation Metadata + Representation Data • 표현 = 표현 메타데이터 + 표현 데이터 데이터를 싫어 나를 실제 데이터 부를 페이로드라 함 회원 리소스를 html 형식 또는 json형식으로 전송할거야 =>회원 리소스를 html 표현 또는 jso..
HTTP 상태코드 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 • 1xx (Informational): 요청이 수신되어 처리중 (거의 사용x) • 2xx (Successful): 요청 정상 처리 • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 ex) 데이터베이스 중단 만약 모르는 상태 코드가 나타나면? • 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? • 클라이언트는 상위 상태코드로 해석해서 처리 • 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경..
HTTP API 설계 예시 • HTTP API - 컬렉션 • POST 기반 등록 • 예) 회원 관리 API 제공 • HTTP API - 스토어 • PUT 기반 등록 • 예) 정적 컨텐츠 관리, 원격 파일 관리 • HTML FORM 사용 • 웹 페이지 회원 관리 • GET, POST만 지원 POST로 신규 데이터 등록 : 클라이언트는 서버에 요청 서버가 리소스 URI를 알아서 내려줌 PUT 기반 등록 : 리소스 URI를 다 알고 등록-> 클라이언트가 등록될 리소스의 URI를 본인이 직접 다 관리. 서버는 그냥 온대로 해줌 => 이런 스타일의 관리를 스토어 라고 함. 대부분 POST기반 컬렉션을 사용 HTML FORM 사용 • HTML FORM은 GET, POST만 지원 • AJAX 같은 기술을 사용해서 해..
클라이언트에서 서버로 데이터 전송 데이터 전달 방식은 크게 2가지 • 쿼리 파라미터를 통한 데이터 전송 • GET • 주로 정렬 필터(검색어) • 메시지 바디를 통한 데이터 전송 • POST, PUT, PATCH • 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 클라이언트에서 서버로 데이터 전송 4가지 상황 • 정적 데이터 조회 • 이미지, 정적 텍스트 문서 • 동적 데이터 조회 • 주로 검색, 게시판 목록에서 정렬 필터(검색어) • HTML Form을 통한 데이터 전송 • 회원 가입, 상품 주문, 데이터 변경 • HTTP API를 통한 데이터 전송 • 회원 가입, 상품 주문, 데이터 변경 • 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax) URI 경로만 넣으면 서버에서 이미지 리소스를 ..
HTTP API를 만들어보자 요구사항 회원 정보 관리 API를 만들어라. • 회원 목록 조회 • 회원 조회 • 회원 등록 • 회원 수정 • 회원 삭제 API URI 설계 URI(Uniform Resource Identifier) • 회원 목록 조회 /read-member-list • 회원 조회 /read-member-by-id • 회원 등록 /create-member • 회원 수정 /update-member • 회원 삭제 /delete-member 이것은 좋은 URI 설계일까? 가장 중요한 것은 리소스 식별! API URI 고민 URI(Uniform Resource Identifier) • 리소스의 의미는 뭘까? • 회원을 등록하고 수정하고 조회하는게 리소스가 아니다! • 예) 미네랄을 캐라 -> 미네랄..
HTTP HyperText Transfer Protocol :HyperText 문서간의 링크를 통해서 연결할 수 있는 프로토콜 HTML 모든 것이 HTTP HTTP 메시지에 모든 것을 전송 • HTML, TEXT • IMAGE, 음성, 영상, 파일 • JSON, XML (API) • 거의 모든 형태의 데이터 전송 가능 • 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 • 지금은 HTTP 시대! HTTP 역사 • HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X • HTTP/1.0 1996년: 메서드, 헤더 추가 • HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전 • RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 ..
웹 브라우저가 이렇게 보내면 구글 서버를 찾아야 하므로 DNS 조회 -> HTTPS 니까 포트 정보 생략 IP, PORT 정보 찾아냄 -> HTTP 요청메시지를 생성함 GET : 데이터를 달라는 거겠지 쿼리 정보가 들어감 버전정보 HOST 정보 웹 브라우저가 HTTP 메시지 생성 후 TCP/IP 로 구글서버와 연결(1.SYN 2.SYN+ACK 3.ACK) 후 데이터 전달, TCP/IP에서 데이터를 씌운 후 인터넷으로 흘러가게함 수많은 인터넷 노드들을 틍해서 200.200.200.2로 전달됨 요청패킷이 도착하면 구글 서버가 TCP/IP 패킷을 다 까서 버리고 HTTP메시지를 꺼내서 해석함 쿼리 보고 검색 엔진 통해서 hello관련된 결과에 한국어로 해서 데이터를 찾음 그런 다음 구글 서버에서 HTTP응답 ..
URI(Uniform Resource Identifier) URI? URL? URN? URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다 리소스를 식별한다 : 사람을 식별할때 주민번호로 식별할 수 있듯이, 자원이 어디에 있는지 자원 자체를 식별하는 방법 URL : 리소스 위치 URN : 리소스 이름 ex) 김영한 그 자체 URL : 웹 브라우저에서 적는것 URN : 이름을 딱 부여해버림 거의 URL만 씀 URI 단어 뜻 • Uniform: 리소스 식별하는 통일된 방식 • Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음) • Identifier: 다른 항목과 구분하는데 필요한 정보 ex) 주민번호 • URL: Uniform Resource Locat..
TCP 특징 전송 제어 프로토콜(Transmission Control Protocol) • 연결지향 - TCP 3 way handshake (가상 연결) :쟤랑 나랑 연결하고 메시지를 보냄. 진짜 연결이 된게 아니라 개념적으로 연결된것 • 데이터 전달 보증 :내가 메시지를 보낸 후 패킷이 누락되면 저쪽에서 메시지 못받았네? 알수있다 • 순서 보장 • 신뢰할 수 있는 프로토콜 • 현재는 대부분 TCP 사용 SYN(synchoronize) 서버가 꺼져있다면 SYN 메시지 보낸 후에 응답이 없겠지 그럼 메시지 안보내 요즘엔 최적화 되어있어서 3.ACK 보낼때 데이터도 같이 보냄 중간에 잘못 오면 서버가 클라이언트한테 2번부터 다시 보내라고 함 TCP 데이터 안에는 전송제어 정보, 순서, 검증 정보가 추가되어있..
인터넷 통신 클라이언트 와 서버가 멀리 떨어져있으면 인터넷 망을 통해 hello world란 메시지를 보내야함 IP 클라이언트, 서버는 IP주소가 있어야 한다. IP 인터넷 프로토콜 역할 • 지정한 IP 주소(IP Address)에 데이터 전달 • 패킷(Packet)이라는 통신 단위로 데이터 전달 IP패킷 정보 메시지를 전송 데이터에 넣을건데, 그걸 하기전에 나의 IP, 목적지 IP를 적어서 IP 패킷을 만든 다음 던진다 노드끼리 목적지 IP를 찾으면서 서로 패킷을 던지다가 목적지 IP까지 도달하게 된다. 서버패킷 전달 IP 프로토콜의 한계 • 비연결성 • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 • 비신뢰성 • 중간에 패킷이 사라지면? •패킷이 순서대로 안오면? • 프로그램 구분 • ..