index.php
<form action="loginAction.php" method=""GET>
ID : <input type="text" name="id"><br>
PW : <input type="password" name="pw"><br>
<input type="submit" value="LOGIN">
</form>
loginAction.php
<?
$id=$_GET["id"];
$pw=$_GET["pw"];
echo "ID : {$id}<br>";
echo "pw : {$pw}<br>";
?>

HTTP 프로토콜
0.9 : just GET
1.0 : 비 연결지향 방식(비효율적)
1.0+ : Keep-Alive 커넥션
1.1 : Keep-Alive 커넥션 패시브.
2.0 : 성능 업그레이드

TCP/IP 통신
- 통신하기 위한 중요한 정보: IP(주소)-물리적 호스트 대상 찾기, Port(구체적 위치)-논리적 대상 찾기

연결 관리 방식
- 비 지속 연결(옛날)
- 지속 연결(Keep-Alive)
메시지 구조
/r(0x0D) /n(0x0A)과 같은 개행 문자로 구분
메시지 헤더
- 메시지를 구성하는 요소로 클라이언트와 서버가 무엇을 할지 결정하고 처리하기 위한 정보들이 들어있으며, 요청 메시지와 응답메시지에는 반드시 메시지 헤더 포함.

요청 메시지(Request Message)

응답 메시지(Response Message)

HTTP 메서드 - GET/POST 메서드
- 클라이언트에서 서버에 데이터를 전달할 때 사용되는 방식

HTTP 상태 코드
Status Code:
- 1XX: 정보
- 2XX: 성공
- 3XX: 리다이렉션
- 4XX: 클라이언트 에러
- 5XX: 서버 에러
- 대표적인 예: 200(OK) 302(Found) 304(Not Modified) 400(Bad Request) 403(Forbidden) 404(Not Found) 505(Internal Server Error)
쿠키와 세션
- 상태 유지 및 관리 필요성 및 사용자 인증 수단을 위한 쿠키 사용

클라이언트로 쿠키 발급 시 Set-Cookie 헤더로 클라이언트 쿠키 값 세팅 → 상태 관리
지속 쿠키(Persistent Cookie)
- 웹 서버에서 발급시 클라이언트 하드 디스크에 텍스틓형태 저장(열람 가능)
- 발급 과정
- if 로그인 시
- 서버는 응답에 따라 쿠키값을 클라이언트에 대해 세팅
- 따라서, 홍길동이 재접근시 자동 쿠키 세팅으로 서버는 사용자 식별.
- 이후, 로그아웃 시. delete
- 문제점: 쿠키 값을 알고 있으면 재사용 가능성 o
- 쿠키값이 평문이면 변조 위협이 있기에 관련 암호화 과정과 유효기간 등의 발급 로직을 구현해야 함.
세션 쿠키(Session Cookie)
- 웹 서버에서 발급 시 웹 브라우저 캐시에 저장
- 메모리에 저장 시 세션값은 암호화가 아닌 임의의 값
- 발급 과정:
- 지속 쿠키와 동일 하나. 세션 정보자체를 삭제를 해버리기에 폐기 후 재사용 위험x
왜 지속 쿠키를 사용할까?
- 대규모 웹 서비스 시 세션 관리에 대한 서버의 부하 극심
- → 웹 서비스 규모와 인프라 구성에 알맞게 사용
웹 아키텍쳐
- 클라이언트 웹서버 데이터베이스 형태 → 프론트/백 엔드
동작 원리 분석
- 웹 사이트 접속 - URL 입력
- 도메인 - IP 변환 작업
- 로컬 DNS 캐시 확인
- hosts 파일 참조
- DNS 서버 질의
- HTTP 요청 메시지 제작

웹 사이트 구조 분석
- HTML , CSS
- JAVASCRIPT(동적 구성)
- form을 활용해 요청 응답
⇒ Ajax 기반 웹 사이트 구조
- 자바스크립스를 통해 요청/응답
- → 백엔드의 부하 낮춤(부분만을 요청)
웹 서버 동작 원리
- 웹 서버측으로 요청 메시지를 보내면 서버는 요청된 자원 유/무 검토 후 응답 메시지 보냄.

- web application 환경의 ws/was 구성
웹 서버 웹 어플리케이션 서버 분리 이유
- 정적 자원 / 동적 자원 구분
- but. was에서 정적 자원 처리 가능
데이터베이스
- 동적인 컨텐츠를 제공하기 위해 데이터를 저장해두는 저장소
Server-Side / Client-Side
- 보안 검증은 서버측에서. → 클라이언트 측에서의 보안 검증 절차는 js인데 js는 변조가 쉽다.