이글은 혼자 공부하는 네트워크(저자 : 강민철)의 책과 강의 내용을 개인적으로 정리하는 글임을 알립니다.프로토콜(protocol)현대 인터넷은 호스트 간 패킷을 교환하는 방식으로 대부분 패킷 교환 방식을 사용한다.언어가 정보를 주고받기 위해 사회적으로 합의된 의사소통 방식이라면, 프로토콜은 노드 간에 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법을 의미한다.즉, 서로 다른 통신 장치들이 정보를 주고받으려면 프로토콜이 통해야 한다. 우리가 인터넷을 이용할 수 있는 것은 모두 상대 호스트와 동일한 프로토콜을 사용하기 때문이다.다만 일상 속 언어와는 달리 통신 과정에서는 하나의 프로토콜만 사용하지 않는다. 일반적으로는 여러 프로토콜을 함께 사용한다. 모든 프로토콜에는 저마다의 목적과 특징이 있다.프로토콜..
이글은 혼자 공부하는 네트워크(저자 : 강민철)의 책과 강의 내용을 개인적으로 정리하는 글임을 알립니다.네트워크란 여러 장치가 서로 연결되어 정보를 주고받을 수 있는 통신망이다.네트워크는 그래프라는 자료구조 모양을 띄고 있다.그래프는 아래의 그림처럼 노드와 노드를 연결하는 간선으로 이루어진 자료구조이다. 네트워크의 기본 구조호스트(host)네트워크의 가장자리에 위치한 노드는 네트워크를 통해 흐르는 정보를 최초로 생성 및 송신하고, 최종적으로 수신한다.우리가 일상에서 사용하는 네트워크 기기 대부분이 여기에 속한다고 봐도 무방하다.이러한 가장자리 노드를 네트워크에서 호스트라고 부른다. 때로는 호스트가 네트워크상에서 특정한 역할을 수행하기도 하는데, 대표적인 역할로는 서버와 클라이언트가 있다.서버 : 어떠한..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 캐시를 사용하지 않는다면, 서버의 데이터가 변경되지 않았어도 클라이언트는 서버의 데이터를 다운로드 받아야 한다. 때문에 브라우저 로딩 속도가 느려진다. 이는 성질 급한 사용자가 참지 못하고 해당 사이트를 이탈할 수도 있다. 이는 SEO에 안좋은 영향을 미치기 때문에 장기적으로 사이트에 안좋은 영향을 끼칠 수 있다. 또한 인터넷 네트워크는 느리고 비싸기 때문에 캐시를 필수적으로 사용해야 한다. 캐시 기본 동작 캐시 시간 설정 브라우저에서 GET /star.jpg 첫번째 요청을 보내면, 서버는 HTTP 헤더(0.1M) + HTTP 바디=star.jpg 이미지(1.0M)를 담아 응답을 보낸다. 중요한 점은 HTTP ..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. HTTP 헤더 개요 HTTP 전송에 필요한 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 등 모든 부가 정보를 헤더에 넣는다. 표준 헤더가 굉장히 많다. 필요시 임의의 헤더 추가가 가능하다. RFC2616 Header General 헤더: 요청/응답 메시지 전체에 적용되는 정보 (Connection: close 등) Request 헤더: 요청 정보 (User-Agent: Mozilla/5.0 등) Response 헤더: 응답 정보 (Server: Apache 등) Entity 헤더: 엔티티 바디 정보 (Content-Type: text/html, Content..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. HTTP 상태코드 상태코드 1xx (Informational) : 요청이 수신되어 처리중 -> 거의 사용이 되지 않음 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx (Client Error) : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함 HTTP 상태 코드는 클라이언트가 서버로 요청을 보내면 요청이 잘 처리가 되어있는지 문제가 있는지 요청의 처리 상태를 응답에서 알려주는 기능이다. 만약 모르는 상태코드가 나타나면 클라이언트가..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 클라이언트에서 서버로 데이터 전송 데이터 전달 방식 쿼리 파라미터를 통한 데이터 전송 주로 GET 방식으로 많이 사용하고 검색어로 검색할 때, 게시판 리스트에 정렬 조건을 넣을 때 쿼리 파라미터를 이용해서 많이 사용한다. 메시지 바디를 통한 데이터 전송 클라이언트에서 서버로 전송할 때 HTTP 메시지 바디를 통해서 데이터를 전송한다. POST, PUT, PATCH 방식으로 주로 사용한다. 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 등에 사용된다. 클라이언트에서 서버로 데이터 전송할 때 4가지 상황 정적 데이터 조회 : 이미지, 정적 텍스트 문서 동적 데이터 조회 : 주로 검색, 게시판 목록에서 정렬 필..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. HTTP API 예제 요구사항 및 API URI 설계 회원 정보 관리 API 설계 1. 회원 목록 조회 : /read-member-list 2. 회원 조회 : /read-member-by-id 3. 회원 등록 : /create-member 4. 회원 수정 : /update-member 5. 회원 삭제 : /delete-member 요구사항 기반으로 API를 만들게 되는게 위와 같이 현업에서 잘못된 API URI 설계를 한다. API URI 설계 분리 리소스 : 회원 행위 : 조회, 등록, 수정, 삭제 API URI 설계를 할 때 리소스와 해당 리소스를 대상으로 하는 행위를 분리해야 한다. 회원이라는 리소스만 식..
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 모든 것이 HTTP HTTP(HyperText Transfer Protocol) 문서 간의 링크를 통해서 하이퍼텍스트 문서를 통해서 연결하는 프로토콜이다. HTTP 프토토콜에 HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML (API) 등 모든 형태의 데이터를 담아서 전송이 가능하다. 서버간에 데이터를 주고 받을 때도 사용한다. HTTP 역사 HTTP/0.9 (1991년) : GET 메서드만 지원, HTTP 헤더X HTTP/1.0 (1996년) : 메서드, 헤더 추가 HTTP/1.1 (1997년) : 가장 많이 사용하고 가장 중요한 버전이다. RFC2068 (1997년) -> RFC261..