티스토리 뷰

1.  웹 브라우저 여행은 URL 입력부터 시작한다

  • URL은 http 뿐만 아니라 ftp, file, mailto로 시작하는 것 등 여러 가지가 있다.
  • 웹 서버에 접근할 때는 http, FTP 서버에 접근할 때는 ftp 라는 식으로 여러 종류의 URL이 준비되어 있다.
  • 모든 URL에는 공통점이 있는데, 맨 앞에 있는 문자열에서 엑세스하는 방법을 나타낸다는 것이다.
* HTTP 프로토콜로 웹 서버에 엑세스하는 경우
  http://user:password@www.cyber.co.kr:80/dir/file1.htm

  * FTP 프로토콜로 파일을 다운로드하거나 업로드하는 경우
  ftp://user:password@ftp.cyber.co.kr:21/dir/file1.htm

  * 클라이언트 PC 자체의 파일에서 데이터를 읽어오는 경우
  file://localhost/c:/path/file1.zip

  * 메일을 송신하는 경우
  mailto:tone@cyber.co.kr

  * 뉴스그룹의 기사를 읽는 경우
  news:comp.protocols.tcp-ip

 

2.  브라우저는 먼저 URL을 해독한다

* URL의 요소
  http: + // + 웹 서버명 + / 디렉토리 명 + / + .... + 파일명

  * 예시
  http://www.naver.com/dir1/kim0914/index.html

  * 요소
  프로토콜: http
  //: //
  웹 서버명: www.naver.com
  파일 경로: /dir1/kim0914/index.html
  • URL은 몇 개의 요소를 나열한 것입니다. 그래서 URL을 해독할 때는 요소를 따로따로 분해한다.

 

3.  파일명을 생략한 경우

  • / 로 끝나는 URL을 볼 수 있다. 예를 들면 http://www.lab.cyber.co.kr/dir/
  • URL의 규칙에는 이와 같이 파일명을 생략해도 좋다.
  • 파일명을 생략한 경우 어느 파일에 접근해야할지 모르기 때문에 서버에서는 미리 설정해둔다.
  • 이때 주로 설정해두는 값은 index.html , default.htm 이다.
  • 따라서 www.lab.cyber.co.krwww.lab.cyber.co.kr/index.html 처럼 읽혀진다.

 

4.  HTTP의 기본 개념

  • URL을 해독하면 어디에 접근해야 하는지 판명된다.
  • HTTP 프로토콜은 먼저 클라이언트에서 서버를 향해 요청(리퀘스트) 메세지를 보낸다.
  • 요청 메세지안에는 무엇을, 어떻게 에 대한 내용이 담겨있다.
    • 무엇을 을 URI라고 하는데, 보통 페이지 데이터를 저장한 파일의 이름이나 CGI 프로그램의 파일명을 URI로 슨다. 예를 들어 /dir1/file1.html 이나 /dir/program1.cgi
    • 뿐만 아니라 http:로 시작하는 URL을 그대로 쓸 수도 있다.
    • 즉, 다양한 엑세스 대상을 쓸 수 있으며, 이러한 액세스 대상을 통칭하는 말이 URI이다.
    • 어떻게 에 해당하는 것이 메소드로, 이 메소드에 의해 웹 서비스에 어떤 동작을 하고 싶은지 전달한다.
    • HTTP 메서드 

5.  HTTP 요청(리퀘스트) 메시지를 만든다

  • 리퀘스트 메시지의 첫 번째 행에 요청(리퀘스트)라인을 작성한다. 여기서 중요한 것은 맨 앞에 있는 메소드다.
  • 이것을 통해 웹 브라우저는 웹 서버에 어떻게 할 것인가를 전달한다.
* **요청 메세지**
  <메소드><공백><URI><공백><HTTP 버전>       -> 요청 라인
  <필드명>:<필드값>
  .
  .
  .
  <공백 행>
  <메시지 본문>                            -> 메시지 본문의 내용은 POST, PUT

  * **응답 메세지**
  <HTTP 버전><공백><상태 코드><공백><응답 문구>
  <필드명>:<필드값>
  .
  .
  .
  <공백 행>
  <메시지 본문>
  • 브라우저 윗부분에 있는 URL 입력 상자에 URL을 입력하고, 해당 페이지를 표시한다.
  • 또한 웹 페이지 안에 포함된 하이퍼링크를 클릭하거나, 폼에 데이터를 기입해 ‘송신’ 버튼을 누를 때와 같은 몇 가지 경우가 있다. 메소드의 종류는 이런 경우에 따라 달라진다.
* method='GET'
  GET /cgi/sample.cgi?Field1=ABCDEFG&SendButton=SEND HTTP/1.1

  * method='POST'
  POST /cgi/sample.cgi HTTP/1.1

  Field1=ABCDEFG&SendButton=SEND
  • 두 번째 행부터는 메시지 헤더라는 행이 이어진다.
  • 요청에 대한 자세한 정보가 필요한 경우에 메시지 헤더에 담을 수 있다. 날짜, 클라이언트가 취급하는 데이터 종류, 언어, 압축 형식, 클라이언트나 서버의 소프트웨어 명칭과 버전, 데이터의 유효기간, 최종 변경 일시 등 다수의 항목이 사양으로 정해져있다.
  • 메시지 헤더 종류
  • 1. 제너럴 헤더
  • 2. 리퀘스트 헤더
  • 3. 응답 헤더
  • 4. 엔티티 헤더

6.  요청 메시지를 보내면 응답이 돌아온다

  • 응답 메시지의 포맷도 기본적인 개념은 요청 메시지와 같다.
  • 다른 점은 첫 번째 행이 다르다.
  • 응답의 경우 정상 종료됐는지, 오류가 발생했는지, 즉 요청의 실행 결과를 나타내는 상태 코드와 응답 문구를 첫 번째 행에 작성해야한다.
  • 상태코드는 200, 400, 500등 숫자로 나타낸 값이며 실행 결과를 알려주는 것이 목적이다.
  • 응답문구는 문장으로 작성되어 있으며 사람에게 실행결과를 알리는 것이 목적이다.
  • 상태코드
    • 1xx: 처리의 경과 상황을 통지
    • 2xx: 정상 종료
    • 3xx: 무언가 다른 조치가 필요함을 나타냄
    • 4xx: 클라이언트 오류
    • 5xx: 서버 오류
댓글