HTTP (Hypertext Transfer Protocol)
- HyperText(HyperMedia)를 클라이언트와 서버 사이에 주고 받을 수있게 정의한 프로토콜
- TCP/IP 프로토콜 위에서 동작하는 Text Based 프로토콜
WWW (World Wide Web)
- 웹 브라우저가 웹서버의 HTML로 기술된 리소스를 URL를 통해 요청하여 HTTP 프로토콜을 사용하여 받아서 표현하는 것
URL (Uniform Resource Locator)
- 통일된 웹 자원의 위치 지정 방법
작성법: <스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프레그먼트>
<스킴> : https, http, ftp, file
<호스트> : www.google.com (= 프로토콜)
<경로> : /project/to
<질의> : member=1
HyperText (HyperMedia)
- 즉시 다른 텍스트 레퍼런스에 접근가능
- 이미지 외 기타 표현가능한 컨텐츠를 포함
요청 첫 줄
<메서드> <요청 URL> <버전> GET /welcome.html HTTP/1.1
메서드
- GET
- POST
- HEAD
- OPTIONS
- PUT
- DELETE
요청 URL
- /welcome.html
응답 첫 줄
<버전> <상태 코드> <사유 구절> HTTP/1.0 200 OK
상태코드
- 1xx: 정보 제공
- 2xx: 성공
- 3xx: 리다이렉션
- 4xx: 클라이언트의 오류
- 5xx: 서버의 오류
- 참고문헌
쿠키 (Cookie)
- 서버가 클라이언트에 붙여둔 일종의 스티커(?)
- 서버가 클라이언트에게 쿠키를 세팅 요청(Set-Cookie:) 하면 (스티커를 붙이면),
- 클라이언트는 이후 서버에게 보내는 요청 헤더에 쿠키(Cookie: )를 표시해서 전송 (스티커를 붙인 채 다시 돌아와야 함)
쿠키 종류
- 세션 쿠키 (Session Cookie)
- 사용자가 브라우저를 사용하는 동안만 유효함.
- 브라우저는 사용자가 브라우저를 사용하는 동안 Cookie 정보를 서버로 전달
- 지속 쿠키 (Persistent Cookie)
- 사용자가 브라우저를 종료하더라도 유지되는 쿠키
- Expires 혹은 Max-Age가 같이 설정되는 쿠키
쿠키 동작 방법
쿠키의 위험성
- 로그인 관련 정보를 쿠키에만 넣어둔다면?
- set-Cookie: id=”userId”
- Cookie: id=”userId”
- 사용자가 Cookie의 값을 임의로 변경하면 다른 사용자가 될수있다.
세션 (Session)
- 사용자 접속 시점에 임의의 세션ID를 발급
- 세션 ID만으로는 사용자 개인 정보를 추측해 낼 수 없는 형태여야 함.
- 해당 세션 ID를 키로 하여 서버 저장소에 필요한 정보를 저장.
HTTPS(HTTP over SSL/TLS)
대칭키 암호화 알고리즘 (Symmetric Encryption Algorithm)
- “암호화에 사용하는 키”와 “복호화에 사용하는 키”가 같은 알고리즘
- 예)
- DES (Data Encryption Standard)
- AES (Adavanced Encryption Standard)
- 암복호화 성능이 좋은 특징이 있음
키 교환 알고리즘
- 키 합의 (key Agreement) - DH (Diffie-Hellman)
- 키 전송 (Key Transport) - RSA