정보기술 - 22

  1. 2011.01.27 웹해킹을 하기전에 알아야하는 기초! HTTP 프로토콜 2 (2)
  2. 2011.01.27 웹해킹을 하기전에 알아야하는 기초! HTTP 프로토콜 (2)
  3. 2011.01.25 [HTML] HTML 강좌, 제 9강의 - 사용자에게 정보를 입력받을 수 있는 입력양식을 만드는 form 태그
  4. 2011.01.25 [HTML] HTML 강좌, 제 8강의 - 프레임 강의!

안녕하세요, 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 신고  ×

HTML 강의, HTML 강좌, HTMl 태그 강의, HTML 태그 강좌
안녕하세요, 이번 강의에서는 입력양식을 만드는 <form> 태그에 대해 설명해드릴려고 합니다. 이 폼 태그를 이용해
회원가입같은 입력받는 페이지를 만들어 DB를 저장합니다.

입력 양식 <form> 에 들어오는 양식은 매우 많습니다. 먼저 form 태그를 작성하는법 부터
배워보겠습니다.

입력 양식, 폼 만들기 - <form action = "URL" method = "방식"> ~ </form>
(URL - DB 저장 페이지(파일), method - 웹서버와의 통신방식(post/get))
(method - post(입력한 데이터가 눈에 보이지 않게 전송 , get(기본 값으로 입력한 데이터가 URL에 포함되어 전송됨)

DB 저장페이지는 PHP, ASP 로 만들 수 있습니다.
자세한 내용은 따로 검색을 바랍니다.


이번에는 <form> 태그에 사용되는 여러 속성 입니다. 폼 태그로는 텍스트, 암호, 여러 라인의 글자, 체크 박스, 라디오 버튼,
명령 버튼 등 여러 버튼을 만들고 데이터를 입력받을 수 있는 이벤트를 생성가능합니다.

텍스트 필드 - <input type = "text">
패스워드 필드 - <input type = "password">
텍스트 에어리어 - <textarea rows = "높이" cols = "가로"> ~ </textarea>
체크박스 필드 - <input type = "checkbox">
라디오버튼 필드 - <input type = "radio">
전송 버튼 - <input type = "submit" value="전송">
리셋 버튼 - <input type = "reset" value = "초기화">
셀릭트 박스 - <select name ="이름">
(SIZE 속성 사용 시 콤보박스, 사용 안 하면 리스트 박스)
<option> ~
</select>

동일 속성 - <name = "이름설정" value = "초기값설정">

이번엔 굳이 많은 설명이 필요없습니다. 그냥 한번 만들어보고 확인만하고 여기서 넘어가셔도 됩니다.
자세한 부분은 나중에 PHP 나 ASP 배우실떄 공부하셔도 됩니다. 나머지는 예제를 참고하세요!

이로써 9강을 마칩니다.  첨부파일로 예제를 올립니다~
예제를 보기전에 한번 만들어보고 직접 비교해보고 하시길 바랍니다.

9강 예제.zip


다르다고 무조건 틀렸다고 생각하지 마세요, 제가 틀렸을수도 있습니다.
그럴땐 지적 깔끔하게 받겠습니다.
2011.01.25 12:15. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/publishing. Top

댓글을 달아 주세요

HTML 강의, HTML 강좌, HTMl 태그 강의, HTML 태그 강좌
안녕하세요, 현재 시각 AM 1:36...... 혹여나 살아있는분들 있을지 모르겠습니다. 암튼 8강 프레임 강의를 시작하도록 하겠습니다.
이번에도... '야(YA)' 를 마시고 야심하게 공부를 하려니깐 머리가 핑핑 도는군요.... 약간 X 할것도 같은 느낌...

암튼 강의를 시작하겠습니다! 프레임은 <frameset> 로 나눌 수 있으며 <frame> 태그로
프레임에 속할 문서를 불러올 수 있습니다.

프레임 생성 - <frameset cols/rows = "N or %"> 구조 생성 </frameset>
(cols - 가로분할, rows - 세로분할)
프레임 테두리 두께 - <frameset frameborder = "n">
(0 이면 없음, 1이면 생성)

프레임 불러오기 - <frame src = "경로"> </frame>
프레임 좌우여백 - <frame marginwidth = "n">
프레임 상하여백 - <frame marginheight = "n">
프레임 테두리 색상 - <frame bordercolor = "색상명/RGB값"

프레임 크기 변경 - <frame noresize>
프레임 스크롤 변경 - <frame scrollsing = "yes/no/auto"
(yes - 무조건 생성, no - 무조건 없앰, auto - 자동생성)

프레임 타겟 설정 - (원본) <frame src = "처음경로" name = "타겟이름">
프레임 타겟 이동 설정 - <a href = "이동 경로" target = "타겟이름">

그러니깐 a href 로 타겟이름을 설정하면 프레임으로 나눠 뜰때 타겟이름과
원본 name 이름이 똑같을시 이동이 됩니다. 물론 프레임 설정은
따로따로 가능하니깐 예제를 꼭 참고하세요!

참고로 프레임 태그는 Body 에 넣으면 작동하지 않습니다. Body 전 태그에 삽입해야지만 작동합니다.
나머지 내용은 예제를 참고하시길 바랍니다. 간단하게 예제 설명 하겠습니다.

8-1 예제 파일에서 cols(가로분할) 태그를 이용해 분할해 왼쪽은 menu, 오른쪽은 8-1(web) 파일 입니다.
보시면 아시다시피 menu 소스에서 target 를 right 로 설정해줬습니다. 그러면 메인 소스에서 보여질 프레임에
<frame name = "right" > 하면 설정한 프레임에 표시가 됩니다. 직접 만들어보고 비교하세요.

이로써 8강을 마칩니다.  첨부파일로 예제를 올립니다~
예제를 보기전에 한번 만들어보고 직접 비교해보고 하시길 바랍니다.

8강 예제.zip


다르다고 무조건 틀렸다고 생각하지 마세요, 제가 틀렸을수도 있습니다.
그럴땐 지적 깔끔하게 받겠습니다.


2011.01.25 03:22. RSS feed. Trackback 0 came from other blogs. Leave a Response.
Posted in 스터디/publishing. Top

댓글을 달아 주세요