스터디/server - 2

  1. 2011.01.27 웹해킹을 하기전에 알아야하는 기초! HTTP 프로토콜 2 (2)
  2. 2011.01.27 웹해킹을 하기전에 알아야하는 기초! HTTP 프로토콜 (2)

안녕하세요, HTTP 프로토콜 두번째 강의, HTTP Request, Response 에 대해 강의를 진행하겠습니다.



먼저 HTTP 메소드 POST, GET 에 대해 설명을 해드리겠습니다. 짤막하게 간단하게 설명하겠습니다. GET 메소드는 일반적으로
웹브라우저에 주소창에 보이는 URL 정보 같은 경우이다. 모든 내용이 Header 에 포함되어 전송된다. 헤더에 포함되는 전송형태는
URL(페이지) + Query String(파라미터) 형태이며 URL 정보를 확인할 수 있다. 그러나 데이터 전송 용량이 2,038자로 제한되어
간단한 데이터전송에만 이용된다.

POST 메소드는 대용량 데이터 처리를 위해 Body 내용을 포함해 데이터를 전송할 수 있다. 그리고 입력한 데이터는 시스템 내부에서
처리되어 GET 메소드처럼 겉으로 보여지지 않으며 URL 에는 페이지 정보만 확인할 수 있다. 헤더에 포함되는 전송형태는 URL(페이지)
이며 Query String(파라미터)는 Body 에 속해서 보내진다.

HTTP Request 데이터에는 다음과 같은 정보들이 포함된다.
(앞서 말씀드렸듯이 아래 모든내용이 헤더에 들어있다.)

1) GET /index.html HTTP/1.1
2) user-agent: MSIE 6.0; Windows NT 5.0
3) accept: text/html; */*
4) cookie: name = value
5) referer: http://younges.tistory.com
6) host: www.naver.com

1) 데이터 처리 방식(HTTP Method)과 기본 페이지, 프로토콜 버전
2) 사용자 웹 브라우저 종류, 버전 정보
3) 데이터 처리 타입 (*/* 는 모든 문서를 처리할 수 있다는 뜻이다, 이를 MIME 타입이라 부른다.)
4) 쿠리 정보
5) 현재 페이지 접속 전에 거친 페이지
6) 현재 페이지 도메인 정보

위와 같은 정보가 있으며 아래는 HTTP Response 정보이다.

HTTP Response 헤더에는 다음과 같은 정보들이 포함된다.
(헤더와 바디부분이 나뉘어져있다.)

1) HTTP/1.1 OK 200
2) server: NCSA/1.4.2
3) Content-type: text/html
4) Content-length: 107
< --- ↑헤더 / ↓바디 --- >
5) <html> ……… 입력 데이터 ………

1) 프로토콜 버전과 응답코드 정보
2) 웹 종류 및 버전 정보
3) MIME 타입 정보
4) 연결된 Body 사이즈 정보
< --- 헤더와 바디가 공백으로 나뉘어진다 --- >
5) 사용자가 요청한 웹페이지 정보

1) 번의 응답코드는 제가 링크를 걸어드릴테니 참고하시길 바랍니다.
-> http://blog.naver.com/lottie1982/50022293144

이렇게 2 강의도 완료했습니다. 다음 강의는 파로스에 대한 구조와 사용방법을 설명해드릴 것이며
파로스로 데이터 변조에 대해 강의를 생각 입니다. (시간만 된다면 말이죠.)

강의 들어주셔서 감사합니다~ ^^
2011.01.27 21:05. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/server. Top

댓글을 달아 주세요

  1. 전공체육

    안녕하세요? 궁금한게 있는데 웹서버와 클라이언트가 통신할때
    1)클라이언트는 헤더만 사용하는건가요? 웹서버에 정보를 요구할때 헤더만을 이용해 요구하나요?
    2)그리고 웹서버가 클라이언트로 정보를 전송해줄때 헤더+정보의 꼴로 전송해주나요?

    2012.02.16 18:47 신고  ×  +
  2. 전공체육

    웹서버가 클라이언트(웹 브라우저)로 정보 전송할떄 헤더+정보의 꼴로 전송을 한다면
    http 인증할땐 어떻게 되는건가요? 웹서버가 http인증을 요구할때는 헤더만 전송하는건가요?

    2012.02.16 18:54 신고  ×  +


안녕하세요! 완소풉 입니다. 몇 일까지 언어를 배우고 이제 보안공부에 다시 몸을 던지게 되었습니다.
그래서 이 Network / Web 게시판에서는 웹해킹에선 빠져서는 안되는 기초를 알려드릴 생각입니다. 물론 제가 가지고 있는
서적을 참고하였으며 파로스에 관한 내용까지 담을 예정 입니다.

 HTTP 프로토콜이란, Hyper Text Transfer Protocol은 TCP 기반으로 WWW(World Wide Web)에 접속하기 위해 사용되는
통신수단이며 오늘날 웹에 적용되어 현재까지 사용되고 있습니다.

그리고 HTTP 프로토콜에서 사용되는 TCP 는 다른 것들과 차이가 있습니다. HTTP 에서는 State-Less 방식이라고 정보를
전달한 후 바로 끊켜버립니다. 그래서 이런 점을 보완하기 위해 로그인 같은것들을 인증하기 위해 사용자 정보를 임시의 값으로
저장해주는 쿠키가 있습니다. 쿠키는 클라이언트에 저장이 됩니다.

웹 브라우저는 사용자 IP 를 웹 서버에 전달하면 TCP 세션(웹서버) 연결이 시작됩니다. 일단 세션이 연결되면
HTTP Request Header와 Body에 주소와 데이터를 포함하여 웹서버에 전달합니다. 그리고 웹서버가 이를 받은 후 이상 없는지
확인하고 나면 HTTP Response Header, Body 에 문서를 만들어 사용자에게 전달합니다.

Request(요청) : 웹브라우저 -> 웹서버
Response(회신) : 웹서버 -> 웹브라우저



위 사진은 세션 연결 및 데이터 전송과정 순서를 나타낸 사진입니다. (꽤 오래전에 강의 쓸려고 다운받아놨는데
지금 와서 출처를 찾아볼려고 하니깐 모르겠습니다. 혹시나 출처를 아시는 분은 댓글 부탁드리겠습니다.)
번호 순서대로 설명하겠습니다.

아래 나오는 TCP 헤더의 컨트롤 비트는 아래 링크에 있는 글을 참고하세요!
2011/01/27 - [ 정보기술/  Network / Web] - [네트워크갤] TCP 헤더 (TCP Header)

① 웹 서버가 기본 80 포트를 열어놓고 대기 중 입니다.
② 사용자가 웹서버에 접속 요청을 합니다.
③ 사용자에게 SYN과 ACK 를 전송합니다.
④ 응답을 잘 받았는지 확인 후 확인메세지를 재전송합니다.

-----> 이제부터 웹 브라우저와 웹 서버가 데이터를 주고받습니다.

⑤ GET 메소드를 이용해 PUSH 옵션을 통해 기본페이지를 요청한다.
⑥ 사용자 요청 데이터에 이상이 없는지 점검하고 사용자에게 잘 받았다고 ACK를 전송한다.
⑦ PUSH 옵션을 통해 페이지를 사용자에게 전송한다.
⑧ 사용자 측에서도 데이터에 이상이 없는지 점검하고 웹서버에 ACK를 전송한다.


 
위 사진은 세션 연결 해제과정을 나타낸 사진 입니다. 아까 말씀드렸듯이 HTTP 는 State-Less 방식이라 데이터 전송을
완료하면 바로 연결이 끊어집니다.

① 사용자는 세션 종료 요청을 위해 FIN, ACK 를 전송한다.
(연결을 시도한자가 종료 요청까지 해야한다.)
② 세션 종료 요청을 프로그림, 웹 애플리케이션에 전송한다.
③ 웹 서버의 답변을 기다립니다.
④ 웹 서버는 종료 합의의 의미로 FIN, ACK 를 전송한다.
⑤ 혹시나 늦게 뒤떨어져 올 수 있는 데이터가 있을지 모르니 ACK 를 웹서버로 전송하기전에 대기한다.
⑥ 데이터 전송이 완료되면 자동으로 종료된다.

제가 정말 설명이 잘 되어있는 글이 있기에 퍼왔으나 혹시나 읽지 않으시는 분들을 위해... 귀찮지 않게 살짝 서술해드리겠습니다.
TCP 헤더에 메세지 상태를 알리든 컨트롤 비트 입니다.

URG - 긴급처리를 요청하는 BIT
ACK - 잘 받았다는 메세지 처리를 위한 BIT
PSH(PUSH) - 빠른 처리 요구를 위한 BIT
RTS - 강제 종료 BIT
SYN - TCP 세션을 시작하기 위한 BIT
FIN - 정상 종료 BIT


이만 오늘 강의를 마치겠습니다, 정작 중요한 HTTP Request, Response 에 대한 강의를 서술하지 못했습니다.
강의가 매우 길어질것 같아 그랬습니다, HTTP Request, Response 에 대한 내용은 2강에서 서술하겠습니다! ^^
2011.01.27 16:20. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/server. Top

댓글을 달아 주세요

  1. 동글이

    지나가면서 들렸어요 웹해킹?하면서요
    잘.. 읽었습니다. 전혀 모르겠지만요 ㅋㅋ;
    세상엔 내가 모르는 지식들이 참 많네요ㅋㅋ

    2011.02.11 00:29 신고  ×  +
  2. Re. BlogIcon 완소풉

    그러게요,, ㅋㅋㅋㅋ
    댓글 감사합니다~!

    2011.02.11 12:13 신고  ×