반응형

HTTP


웹은 HTTP를 이용해서 통신하는 클라이언트와 서버로 구성

 

HTTP 메시지 구조

 

요청 메시지 : 요청라인 - 헤더 - 공백 - 바디

Request line => 요청방식(method) - 요청페이지 - 프로토콜/버전 으로 구성

ex) GET /dir/page.html HTTP/1.1

(공백으로 정보 구분)

  • GET(메소드)
  • /dir/page.html (URL)
  • HTTP/1.1 (프로토콜:HTTP 버전:1.1)

헤더 : General Headers, Response Headers, Entity Headers

바디 : 응답 메시지(HTML)

 

 

 

응답 메시지 : 상태라인 - 헤더 - 공백 - 바디

Status line => 프로토콜/버전 - 응답상태코드 - 응답상태메시지 로 구성

ex) HTTP/1.1 200 OK

  • HTTP버전 1.1
  • 200(상태코드)
  • OK(응답이유)

헤더 : General Headers, Response Headers, Entity Headers

바디 : 응답 메시지(HTML)

 

 

** 요청방식(method)

  • GET : 자원요청(기본값), 요청 파라미터를 URL에 붙여서 전송 , 서버로부터 데이터 획득
GET /HTTP/1.1
Host: foo.com
  • POST : 자원 요청, 요청 파라미터를 Body에 붙여서 전송, 서버에 데이터 추가
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

say=Hi&to=Mom
  • HEAD : HTTP Header 정보만 요청
HEAD /index.html
  • PUT : URL 자원을 생성하도록 요청 (파일 업로드 가능), 서버에 데이터 갱신
PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16

<p>New File</p>
  • DELETE : URL 자원을 삭제하도록 요청 (파일 삭제 가능), 서버에 데이터 삭제
DELETE /file.html HTTP/1.1
  • TRACE : 진단 목적, 서버는 응답바디에 요청받은 자료와 동일한 내용 보냄
TRACE /index.html
  • OPTION : 응답 가능한 HTTP 메소드 요청

 

 

 

** RESTful API

http에는 여러 매소드가 있다.

하지만 REST는 CRUD(Create, Read, Update, Delete) 4가지 메소드만 사용한다.

create = post, read = get, update = put, delete =delete

 

 

 

HTTP 응답 상태 코드

1xx : 정보 제공

2xx : 요청 성공적

3xx : 요청한 자원이 다른곳에 있음

4xx : 요청에 문제있음

5xx : 서버에 에러있음


 

 

 

 

세션과 쿠키


HTTP 비연결지향 : 클라이언트-서버 연결 후 하나의 요청과 응답을 처리하고 연결 종료(응답이 끝나면 연결 종료)=> 클라이언트 정보가 서버에서 관리 되지 않음, 연결유지를 위한 리소스를 줄여 더 많은 연결을 가능하게 함, 연결/연결종료에 대한 오버헤드 발생

HTTP 무상태 프로토콜 : 연결을 종료하는 순간 클라이언트-서버 통신 끝, 클라이언트 상태 정보 유지안함(이전 통신 정보 모름)

따라서 쿠키와 세션이 필요

 

 

쿠키

- http 통신시 사용자 정보 유지하기 위해 사용

- 서버에서 생성하여 응답 헤더에 붙이고 클라이언트에 전송

- 쿠키는 요청을 전달할 때 이름=값 형식으로 요청 헤더에 포함되어 서버에 전달

  • 쿠키 제약사항 : 브라우저당 최대 300개, 호스트마다 20개 가능, 크기 4kb\

예시) 인터넷 쇼핑몰 장바구니, 로그인 페이지 ID/PW 자동저장

 

세션 쿠키 : 브라우저가 열려 있는 동안 유효한 쿠키, 서버 이용하는 동안 사용자 정보를 유지하기 위해

 

영속 쿠키 : 디스크에 유효기간 동안 저장되는 쿠키, 재방문시 정보를 기억하기 위해

 

 

쿠키 발행시 옵션 속성 지정 가능

  • Domain : 브라우저가 쿠키 값을 전송할 서버의 도메인 지정

cookie.setDomain("test.com");

  • Path : 브라우저가 쿠키 값을 전송할 URL 지정

cookie.setPath("/경로");

  • Expires : 쿠키 유효기간 설정

cookie.setMaxAge(값);

  • Secure : SSL 통신 채널 연결시에만 쿠키 전송하게 설정

cookie.setSecure(true);

  • HttpOnly : 자바 스크립트에서 쿠키값 읽지 못하게 설정

cookie.setHttpOnly(true);

 

 

세션

  • 클라이언트와 서버의 논리적인 연결
  • 일정 시간동안 같은 클라이언트로부터 송신되는 request를 하나의 상태로 인식하고 상태를 유지함.
  • 브라우저로 웹 서버 접속 후 브라우저 종료될때까지 연결이 유지되는 상태
  • 서버는 사용자 정보를 유지하기 위해(http를 사용하는 경우) 서버의 메모리에 브라우저별 세션 영역 할당
  • 각 영역은 세션 ID로 구분 => 세션 ID = 세션 토큰
  • 각 클라이언트마다 고유 ID 가짐, 서버에 저장하므로 쿠키보다 안전
  • 서버에 저장하므로 서버 저장공간 필요, 서버가 처리하므로 부하 발생

 

세션 ID를 클라이언트에 전달하는 방법

1. HTML 히든 필드 이용

  • 세션 ID를 HTML의 히든 필드로 클라이언트에 전달
  • 히든 필드이므로 웹페이지에서 안보임
  • 소스 보기를 통해 세션 ID값 추출 가능

 

 

2. URL rewriting을 이용

  • 클라이언트 브라우저가 쿠키 사용을 제한한 경우에 사용
  • 웹 서버에 서비스되는 페이지의 모든 URL에 세션 ID를 request parameter로 붙여 사용

https://dololak.tistory.com/579
https://dololak.tistory.com/579

 

3. 쿠키 이용

  • 클라이언트 브라우저가 쿠키 사용을 허용하는 경우

서버가 세션 ID를 생성 -> 쿠키에 저장 -> 헤더에 세션ID 저장하여 전달 -> 클라이언트 식별

 

 

 

세션을 이용한 클라이언트-서버 응답/요청

  • 클라이언트별 유일한 세션 ID 부여 => 클라이언트 식별
  • 클라이언트 첫 요청시 세션ID 생성, 전달
  • 두번째 요청부턴 세션 ID 사용

https://tansfil.tistory.com/58

  쿠키 서버
저장위치 클라이언트 서버
만료시점 쿠키저장시 설정 정확한 시점 모르
리소스 클라이언트 리소스 서버 리소스
용량제한 O X

 

 

 

 

 

정규식


  • 특정한 규칙을 가진 문자열 집합을 표현하는데 사용하는 형식 언어

ex)

String str = "abcdefghijk";

System.out.println(str.replaceAll("[abchij]", "굿"));

=> 정규표현식 "[abchij]"는 a,b,c,h,i,j를 개별적으로 의미함


 

 

 

 

인코딩 스키마


  • 문자 인코딩

문자들의 집합을 컴퓨터에서 저장 or 통신에 사용할 목적으로 부호화하는 방법 = 인코딩

웹 애플리케이션에서 사용되는 데이터들 => 네트워크 통해 여러 종류 시스템으로 전달됨

따라서 인코딩 스키마를 적용하여 안전하게 데이터 사용

 

  1. URL 인코딩

URL에 포함된 문자들이 안전하게 웹 서버에 전달 될 수 있도록 특수한 기능을 가진 메타 문자들을 브라우저가 인코딩해 전달 => 브라우저 특성에 따라 특수문자 표현 변형 오류 막기 위해

 

  1. HTML 인코딩

HTML문서에서 특별한 기능을 수행하는 문자들의 의미를 제거하고 일반적인 문자로 표시하기 위해 사용되는 인코딩 방식

 

  1. Base64 인코딩

모든 바이너리 데이터들을 출력 가능한 ASCII 문자들을 이용해 안전하게 나타내도록 하는 방식 => 이메일 첨부 파일을 인코딩해서 SMTP를 통해 안전하게 전송 or HTTP 승인을 사용하는 경우 사용자 인증서를 인코딩할때 사용

 

  1. 멀티바이트 인코딩

EUC-KR, MS949, 유니코드, UTF-8 등의 인코딩 방식

1~4바이트를 사용하여 다양한 문자를 표시

 

  1. MS 스크립트 인코딩

MS에서 제공하는 인코딩 기법으로 IE에서만 사용가능

 

예시들)

https://ande226.tistory.com/121


728x90
반응형
블로그 이미지

아상관없어

,