앞서 간략히 소개한 HTTP Response & Request에 대해 상세히 알아보자.
HTTP Request
웹 브라우저 -------- HTTP Request(요청) -----------> 웹 서버
웹 브라우저 <------- HTTP Response(수신) ---------- 웹 서버
요청과 수신 사이에 패킷을 주고받는다.
Header |
Body |
HTTP Request 패킷은 크게 Header와 Body사이는 빈 공백으로 구분한다.
Header에는 요청한 주소 , 버전정보 , 요청한 도메인 호스트 기타 등등이 포함되고
한칸 띄운 후 body에는 사용자가 입력했던 값들이 포함된다.
Request의 메소드는 크게 GET 과 POST 방식으로 구분되며
GET방식은 헤더부분에 모든 정보가 포함되고 BODY에는 아무것도 포함되지 않는다.
POST방식은 헤더부분에는 사용자가 요청한 주소까지만 있고 나머지 내용은 바디(본문)에 포함된다.
Request에 포함된 상세정보
1) GET/index.hmtl HTTP/1.1 //요청 URL정보(메소드,페이지) 및 HTTP 버전
2) user-agent : MSIE 6.0; Windows NT 5.0 //사용자 웹 브라우저 종류
3) accept:text/html; */* //요청 데이터 타입
4)cookie: name = value //쿠키 (인증 정보)
5)referer:http://www.bbb.com //경유지 URL
6)host: duwjdtn11.tistory.com //요청 도메인
HTTP는 TCP계열이지만 , 타 TCP 프로토콜(Telnet ,FTP 등) 과는 다른차이 (Stateless)를 가지고 있다.
HTTP는 사용자가 특정 html을 요청하면 그 페이지를 웹브라우저에 다시 요청후 통신을 끊어버린다.
반대로 Telnet 이나 FTP의 경우 강제로 세션을 끊지 않는이상 세션을 유지해준다.
이러한 방식이 어떻게 보면 장점이지만 단점이 될 수 있다.
예를들어 , 웹 프로토콜만 가지고 인터넷 뱅킹 프로그램을 짯다고 가정해보자.
처음에 Login을 하기위해 id와 password를 입력하고 로그인했다고 하자, 그 후 자금이체를 클릭하면 다시 id와 passwor를 입력해줘야 한다.
왜냐하면 앞서 설명한 바와 같이 첫 페이지에서 요청 후 세션이 끊어져버리기 때문에 다음 페이지에서는 id와 password값을 기억을 못한다.
이러면 상당히 불편해진다.. 이런걸 보완하기 위해 쿠키라는 방식을 이용한다.
저장위치에 따라 쿠키 , 세션이 나뉜다.
클라이언트에 저장되서 정보를 가지는것을 쿠키라고 하고 웹서버에 저장해서 사용자가 페이지를 요청할때마다 비교하는걸 세션이라고 한다.
쿠키와 세션을 이용하면 앞서 예시를 든 인터넷 뱅킹 프로그램의 불편성을 제거할 수 있다.
Request의 헤더부분에 메소드가 포함된다고 정리했다.
Get 메소드 : 요청URL이 가지고 있는 정보를 검색하기 위해 서버 측에 요청하는 형태.
HTTP GET 구조 : URL + Query String
겟 메소드는 길이 제한이 있기 때문에 간단한 처리만 한다.
POST 메소드 : 게시판 등과 같은 폼 데이터 및 CGI 프로그램으로 구성된 페이지를 위한 처리방식으로 웹 브라우저와 시스템간 데이터 처리로 웹 브라우저에게는 페이지 정보만을 확인할수 있음.
HTTP POST 구조 : URL + Query String
포스트 메소드는 길이 제한이 없어 많은 입력 데이터를 처리
GET과 POST의 큰 차이는 Header 와 Body의 구성이다.
HTTP Response
http response에 포함된 상세 정보
헤더 부분에는
1)HTTP/1.1 OK 200 //프로토콜 버전 및 응답코드
2)Server: NCSA/1.4.2 //웹 서버 배너 정보
3)Content-type : text/html //MIME 타입
4)content-length:107 //HTTP Body 사이즈
바디 부분에는
5)<html><head></head> //페이지 구성 정보( HTML 태그 등 )
<Title>http protocole</Title>
.
.
</body></html>
HTTP Status Code(응답코드) 종류
웹 브라우저 -------요청(get / index.html)---------->웹 서버
<------수신(응답코드)------------------
주요 코드
200번 // 요청성공
201번 // 원격지 서버에 파일 생성
302번 // 페이지 이동
304번 // 로컬 캐쉬정보 이용
401번 // 인증실패
403번 // 접근금지
404번 // 페이지 없음
500번 // 서버에러
'Hacking & Security > Web' 카테고리의 다른 글
웹 취약점 진단제거 가이드 (0) | 2019.03.03 |
---|---|
SQL Injection (0) | 2017.11.27 |
웹 취약점 분류 (0) | 2017.11.27 |
웹 기초 지식 2 (0) | 2017.11.24 |
웹 기초 지식 (0) | 2017.11.24 |