안드로이드 코틀린 (220101 전기뱀장어 버젼)

안드로이드 코틀린 (220101 전기뱀장어 버젼)

TCP와 UDP OSI 7계층에서 전송계층Transport layer에 속하는 데이터 전송 프로토콜입니다. 여기선 중요한 것만 살펴보고 깊게는 들어가지 않습니다. 데이터가 무조건적으로 전달되는 것을 보장하는 프로토콜로 다음 특징들을 갖는다.


헤더 압축Header Compression
헤더 압축Header Compression

헤더 압축Header Compression

헤더 테이블Header Table을 사용하여 이전 헤더 정보를 유지하고 허프만 인코딩 기법으로 헤더를 압축해서 전송하여 중복과 크기를 줄인다. URL과 URN을 포함하는 URIURIUniform Resource Identifier 통합 자원 식별자라는 취지로 인터넷 상의 리소스 를 고유하게 식별할 수 있는 식별자입니다. URI에는 위치를 알려주는 URLUniform Resource Locator 와 전 세계를 통틀어 고유한 이름을 의미하는 URNUniform Resource Name 이 존재합니다.

HOLBHead Of Line Blocking
HOLBHead Of Line Blocking

HOLBHead Of Line Blocking

HTTP 요청을 할 때는 요청을 하고 나서 응답이 와야 다음 요청을 할 수 있었으나 HTTP1.1에 들어오면서 파이프라이닝Pipelining 기법을 통해 응답을 받지 않고도 여러개의 요청을 끊임없이 할 수 있게 되었습니다. 하지만 이 또한 처음의 요청에 대한 응답이 오래 걸리는 경우, 그 다음 응답까지의 시간이 지연되는 현상이 발생합니다. 이렇게 파이프라이닝 기법은 심각한 문제점을 안고 있었으며 이를 Head of Line Blocking 문제라고 부른다.

Session

세션이란 브라우저가 서버에 연결되어 있는 동안 이어서하는 데이터 집합입니다. 사용자가 웹 사이트에 방문하여 서버에 요청을 보내게 되면, 사용자의 정보를 서버에 저장하고 그 정보를 식별할 수 있는 세션 ID를 SetCookie 헤더로 클라이언트에게 전송합니다. 위에서 말했던 것처럼 클라이언트는 쿠키로 세션 ID를 관리하고 해당 서버에 요청할 때마다. Cookie 헤더에 세션 ID를 포함시켜 전송하기 때문에 서버는 클라이언트를 식별하여 그에 맞는 정보를 응답으로 줄 수 있게 됩니다.

따라서, 아래와 같은 목적으로 사용한다고 할 수 있어요. 민감한 정보 관리, 사용자의 비밀번호 및 개인정보 쿠키

의뢰인 쪽에 저장합니다. (웹 브라우저) 브라우저가 꺼져도 삭제되지 않고 사용자가 삭제하거나 정해진 시간만큼 유지됩니다. 문자열만 저장할 수 있어요.

캐싱 가능 Cacheabl

REST는 HTTP 표준을 기반으로 만들어졌기 때문에 HTTP의 특징인 캐싱을 사용할 수 있어요. REST API를 활용하여 GET 메소드를 LastModified 값과 함께 보낼 경우, 컨텐츠의 변화가 없을 때 캐시된 값을 사용하게 됩니다. 이렇게 되면 연결망 응답시간 뿐만 아니라 API 서버에 요청을 발생시키지 않기 때문에 부담이 덜 하다는 장점 또한 가지게 됩니다.

자체 표현성 (Self-Descriptiveness)

REST API의 자원명시 규칙 및 메소드는 그 자체로 의미를 지니기 때문에 어떠한 요청에 있어서 그 요청 자체로 어떤 것을 표현하는지 알아보기 쉽습니다.

물론 API를 규정한 각 서비스들이 파일을 제공하지만 이 특성에 따라서 요청하는 방식만으로 어떠한 의미인지 알 수 있어야 좋은 REST API라고 할 수 있어요.

응답 상태코드

서버가 클라이언트에게 요청을 받으면 응답경우에 따라서 다른 상태코드를 클라이언트에게 돌려줍니다. 1xx 요청에 대한 정보 요청을 받았으면 작업 계속합니다. 2xx 성공 요청을 성공적으로 수행했다.

200성공, 201새 리소스 작성, 202요청 접수, 아직 처리는 안함 3xx 리다이렉션 클라이언트가 요청을 마지기 위해 추가적인 동작을 취해야 합니다.

300여러개의 응답, 선택해야 함, 301영구이동, 요청한 페이지가 영구적으로 이동됨, 302임시이동, 현재 응답잉 다른 페이지이긴 하지만 임시적임 4xx 의뢰인 오류 클라이언트에 오류가 있습니다.

CSRFCross Site Request Forgery, 사이트간 요청변조

XSS와 CSRFXSS(Cross Site Scripting, 사이트간 스크립팅)

저장 XSS : 웹사이트에 취약점이 있는 웹 서버에 스크립트를 저장시켜서 해당 웹사이트를 요청하는 사용자로 하여금 스크립트를 실행하게 하는 기법입니다. 반사 XSS : 검색을 사용할 때 결과가 없으면 브라우저에서 입력한 값을 문서에 포함하여 응답하는데 이를 사용하여 스크립트를 실시하는 기법으로 악성 URL을 배포하여 클릭하도록 유도하는 방법을 사용합니다.

DOM 기반 XSS 공격 스크립트가 DOM 생성의 일부로 실행되며 공격하는 기법으로 반사 XSS와 비슷하게 악성 URL을 배포하여 클릭하도록 유도합니다.

자주 묻는 질문

헤더 압축Header

헤더 테이블Header Table을 사용하여 이전 헤더 정보를 유지하고 허프만 인코딩 기법으로 헤더를 압축해서 전송하여 중복과 크기를 줄인다. 궁금한 사항은 본문을 참고하시기 바랍니다.

HOLBHead Of Line

HTTP 요청을 할 때는 요청을 하고 나서 응답이 와야 다음 요청을 할 수 있었으나 HTTP1. 더 알고싶으시면 본문을 클릭해주세요.

Session

세션이란 브라우저가 서버에 연결되어 있는 동안 이어서하는 데이터 집합입니다. 궁금한 사항은 본문을 참고하시기 바랍니다.