2017. 7. 21. 18:20ㆍWebHacking/Web
< 아파치 웹 서버 구축하기 >
1> 웹 서버 설치
#yum -y install apache.i686
#service httpd start
1-1> 처음 아파치 웹 서버에 접속하면 아파치의 기본 권한을 가진다 ( 기본사용자 : apache )
[root@localhost ~]# cat /etc/passwd | grep apache apache:x:48:48:Apache:/var/www:/sbin/nologin |
1-2> 아파치 설정파일 ( /etc/httpd/conf/httpd.conf )
#vi /etc/httpd/conf/httpd.conf ... 292 DocumentRoot "/var/www/html" ... |
아파치 웹 서버에 접속하는 것은 "/var/www/html" 디렉토리에 들어가는 것과 같다
[ 아피치 웹 서버 첫 접속화면 ]
2> 기본 페이지 생성
/etc/httpd/conf/httpd.conf 파일의 402번째 line : DirectoryIndex index.html index.html.var
/var/www/html 에 index.html을 만들자 => 기본 페이지 ( 아파치 웹 서버 시작 페이지 )
[root@localhost html]# pwd /var/www/html [root@localhost html]# vi index.html |
[ index.html 소스 ]
[ index.html 작성후 아파치 첫 페이지 ]
3> 와이어샤크 분석
[ Wireshrak Capture ]
웹의 기본 동작
TCP동기화 => 요청 => 응답 => TCP세션종료
웹에서는 세션을 계속 유지하지 않는다 => 접속자가 많아질 경우에 웹의 과부하를 방지한다
4> HTTP메시지
- 유형 : 요청 or 응답 : 메시지 전송을 위해 일반적인 메시지 형식을 사용한다
- 구성
Start-Line - 요청라인 or 상태라인
Message-Header
CRLF ( 빈라인 ) - 헤더와 바디의 구분
Message-Body - Payload ( 요청메시지에는 없음 )
[ HTTP 요청 패킷 ]
Request 패킷 분석
Hypertext Transfer Protocol GET / HTTP/1.1\r\n #[메서드] [페이지주소(/index.html)][웹버전] Host: 192.168.6.123\r\n #웹 페이지 호스트 User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)\r\n #사용 브라우저 If-Modified-Since: Mon, 31 Jul 2017 20:08:40 GMT\r\n If-None-Match: "80be2-5c-555a298cef83c"\r\n Connection: Keep-Alive\r\n Accept: text/html, application/xhtml+xml, */*\r\n # 웹 브라우저가 허용할 수 있는 Accept-Language: ko-KR\r\n # 자신이 허용할 수 있는 언어 Accept-Encoding: gzip, deflate\r\n # 자신이 허용할 수 있는 인코딩 목록 \r\n # 헤더의 끝을 알리는 빈 라인 |
[ HTTP 응답 패킷 ]
Response패킷 분석
Hypertext Transfer Protocol HTTP/1.1 200 OK\r\n # 상태라인 ( [버전] [ 응답 ] ) [Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n] Request Version: HTTP/1.1 Status Code: 200 Response Phrase: OK Date: Mon, 31 Jul 2017 11:12:55 GMT\r\n *Server: Apache\r\n #서버 항목 Access-Control-Allow-Credentials: true\r\n Access-Control-Allow-Origin: http://cafe.naver.com\r\n Access-Control-Allow-Methods: GET,POST\r\n Access-Control-Allow-Headers: X-Requested-With,Content-Type,charset\r\n Cache-Control: no-cache,no-store,must-revalidate\r\n Pragma: no-cache\r\n Expires: Wed, 31 Dec 1969 23:59:59 GMT\r\n P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"\r\n Content-Length: 434\r\n #1전달하려는 데이터의 크기 Connection: close\r\n Content-Type: text/plain;charset=utf-8\r\n #2전달하려는 데이터의 타입 \r\n #헤더의 끝을 알려주는 빈 라인 #바디에 메시지가 있을 때 필수적으로 있어야할 항목들이다 [HTTP response 1/1] [Time since request: 0.015859000 seconds] [Request in frame: 44] File Data: 434 bytes Line-based text data: text/plain |
* 상태라인 ( Status-Line ) 상태코드
1xx : 정보교환할 때
2xx : 어떤 요청에 대한 성공상태
200 : OK / 201 : Created / 202 : Acceoted
3xx : 요구에 대한 처리완료를 위해 추가적인 조치가 필요하다
301 : 영구이동 / 302 : 임시 이동 / 304 : Not modified
4xx : 클라이언트 측 오류
400 : Bad Request / 403 : Forbidden / 404 : Not Found /
5xx : 서버 측 오류
500 : Server 내부 에러 / 503 : 서비스 사용할 수 없음
'WebHacking > Web' 카테고리의 다른 글
PHP배열(array생성자) 및 반복문(foreach) (0) | 2017.08.02 |
---|---|
가상머신에 PHP설치 / PHP출력문 / 변수 (0) | 2017.08.02 |
자바스크립트 DOC객체 메서드 / 사용법 (0) | 2017.08.02 |
웹 페이지에서 자바스크립트 실행하기 / Javascript 기본문법 / 반복문 / 조건문 (0) | 2017.08.02 |
HTTP Method / GET Flooding / Slowloris (0) | 2017.08.01 |