서버는 나의 상태, 나의 위치, ID를 기억하고 계속적으로 관리해 주는 것이 일종의 세션,
로그인을 하면서 하나의 세션을 열었고 파일을 가져오고 읽는 등을 수행할 때마다 서버는 내 세션의 정보를 계속 유지하고 있다가 적절한 서비스를 제공: 세션 계층
HTTP(Hyper Text Protocol)
stateless protocol: 상태 정보를 이용하지 않음
1. HTTP
세션 계층(www: world wide web)
HTML을 기본 프레젠테이션 계층으로 사용
목적: 전 세계 인터넷에 있는 정보를 탐색하는 것
발명: Tim Berners Lee가 CERN에서 1980년대 말에서 1990년대 초에 걸쳐 연구
기본적인 동작
Web 자료를 가져와서(GET) 보여주기
Web에 자료를 Posting 하기
원하는 자료를 웹에 보내고 웹에서 받는 기본적인 동작
HTTP를 사용하는 가장 대표적인 어플리케이션: 인터넷 브라우저 → 주소창에 url 검색
주소창에 url 검색: 인터넷에 있는 굉장히 많은 자료 중에서 이 위치로 명명되는 정보를 보겠다
웹 브라우저는 요청하는 패킷을 웹 서버에게 보내고
웹서버는 <html> 문서를 응답하는 패킷으로 보낸다(프레젠테이션 계층)
HTTP는 프로토콜이 단순하다.
요청에 대해 응답을 하면 끝나고 ⇒ HTTP Transaction
서버가 정보를 기억할 필요가 없어 굉장히 자유롭다 ⇒ Stateless Protocol
FPT는 상대적으로 세션 레이어와 서버가 많은것을 담당하다 보니 굉장히 많은 내용이 세션 레이어 프로토콜을 구성하게 되며 자유도가 적어져서 HTTP에게 자리를 양보하게 된다.
1-1. GET 요청
원하는 자원을 가져오는 목적을 가지고 수행
HTTP 요청 형식
[HTTP 요청 헤더] 첫 줄: GET (서버상의 자원의 위치 ex. /commet/index.html) (버전 ex. HTTP/1.1) //매개변수: ______ Connection: (연결을 더 유지할 것인지 ex. keep-alive) Accept: (어떤 종류의 파일을 받아들일 수 있는지 ex. text/html) Host: (호스트 이름 ex. formal.kau.ac.kr) user-agent: (웹브라우저 형태에 맞는 정보 ex. chrome은 Moeila/5.0) //헤더의 끝은 한 줄을 띄움으로써 끝남: GET 요청의 끝
서버의 응답 형식
[헤더] - 자원, 서버에 대한 정보 HTTP/1.1 200 OK Date: (문서를 준 날짜와 시간) Server: (ex. Apache/2.4.6) Last-modified: (최종적으로 수정된 날짜) Content-length: (body가 언제 끝나는지를 알 수 있는 정보 ex. 120) Keep-Alive: (ex. timeout=5, max=100) Connection: Keep-Alive Content-Type: text/html (html 문서다) //한 줄 띄우기 [바디] - 실제 자원(파일) <html> <body> <H1>Hello, World</H1> </body> </html>
하나의 트랜젝션으로는 하나의 파일 밖에 가져오지 못하기 때문에 이미지 파일을 가져오는 트랜젝션을 추가적으로 수행해야 한다.
GET /comnet/kau.gif HTTP/1.1
HTTP/1.1 200 OK
1-2. POST 요청
자원을 서버에 게시하는 목적
게시판에 글 올리기. 인스타그램에 사진 올리기, 웹브라우저를 이용해 이메일 보내기, 로그인
GET과 다르게 POST는 게시할 내용을 함께 보냄
GET은 여러 개의 자원이 있을 때 각 자원 하나하나마다 자원의 url을 이용해서 따로따로 계산
POST는 모든 자원을 바디에 담아서 올림
형식 - method=”post”
[Post 헤더] POST (자원의 위치 ex. /commet/) (버전 ex. HTTP/1.1) Host: (호스트 이름 ex. formal.kau.ac.kr) user-agent: (웹브라우저 형태에 맞는 정보 ex. chrome은 Moeila/5.0) //한 줄 띄우기
[Post 바디]