logo
Published on

www(웹)을 이용할 때는 이렇게 데이터를 주고 받는다 - OSI 7계층 HTTP

Authors
  • avatar
    Name
    Bora Choi
    Twitter

HTTP 프로토콜

HTTP 프로토콜의 특징

HyperText Transfer Protocol ( 하이퍼 텍스트 전송 프로토콜 )

www에서 쓰이는 핵심 프로토콜로 문서의 전송을 위해 쓰이며, 오늘날 거의 모든 웹 애플리케이션에서 사용되고 있다.

→ 음성, 화상 등 여러 종류의 데이터를 MIME로 정의하여 전송 가능

HTTP 특징
  • Request / Response ( 요청/응답 ) 동작에 기반하여 서비스 제공
HTTP 1.0의 특징
  • “연결 수립, 동작, 연결 해제”의 단순함이 특징 →하나의 URL은 하나의 TCP 연결
  • HTML 문서를 전송 받은 뒤 연결을 끊고 다시 연결하여 데이터를 전송한다.
HTPP 1.0의 문제점
  • 단순 동작 ( 연결 수립, 동작, 연결 해제 )이 반복되어 통신 부하 문제 발생

HTTP 1.1의 특징

  • HTTP 1.0과 호환 가능
  • Multiple Request 처리가 가능하여 Client의 Request가 많을 경우 연속적인 응답 제공 -> Pipeline 방식의 Request / Response 진행
  • HTTP 1.0과는 달리 Server가 갖는 하나의 IP Address와 다수의 Web Site 연결 가능

HTTP 1.1

  • 빠른 속도와 Internet Protocol 설계에 최적화될 수 있도록 Cache 사용
  • Data를 압축해서 전달이 가능하도록 하여 전달하는 Data 양이 감소

HTTP 프토토콜의 통신 과정

HTTP/1.0 : 네트워크 부하가 심함

http1

HTTP/1.1 : 1.0의 문제점을 보완

http11

HTTP 요청 프로토콜

HTTP 요청 프로토콜의 구조

요청하는 방식을 정의하고 클라이언트의 정보를 담고있는 요청 프로토콜 구조

httprequest
GET /produ/content.asp?code=sch-v310 HTTP/1.1# Request Line
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash,
application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,
application/xaml+xml, application/x-ms-xbap, application/x-ms-application, */*
Referer: http://www.sst.com/
Accept-Language: ko
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0;
InfoPath.3; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: www.sst.com
Proxy-Connection: Keep-Alive
Cookie: ASPSESSIONIDCCDQARAS=EMCDFFBCECFHKPAGOADOIOIE# Headers
# 공백
# Body (없음)
Request Line
request-line

HTTP 메소드 요청 타입

메소드 종류설명
GET클라이언트가 서버로부터 문서를 읽어오려 할 때 사용
HEAD클라이언트가 문서가 아닌 문서에 대한 특정 정보를 원할 경우 사용
POST클라이언트가 서버에게 어떤 정보를 전송할 때 사용
PUT클라이언트가 서버에게 특정 자원을 업로드할 때 사용
PATCHPUT 과 비슷함, 기존 파일에서 변경사항만을 포함
COPY파일을 다른 위치로 복사하기 위해 사용
MOVE파일을 다른 위치로 이동하기 위해 사용
DELETE서버에서 문서를 제거하기 위해 사용
LINK문서에서 다른 위치로 링크를 생성하기 위해 사용
UNLINKLINK Method에 의해 생성된 링크를 삭제하기 위해 사용
OPTION클라이언트가 서버에게 사용 가능한 옵션을 질의하기 위해 사용
GET 요청 방식

get

POST 요청 방식

post

GET 방식과 POST 방식의 차이점

GET 방식

geturi

URI 에 서버에 보낼 데이터를 함께 요청한다

POST 방식

postbody

전송할 데이터를 body 에 넣는다

URI(Uniform Resource Identifier)의 구조

URI란 ? 인터넷 상에서 특정 자원을 나타내는 유일한 주소

uri

URI의 구조

scheme ://host[:port][/path][?query]
ex)  ftp  ://IP주소 :포트  /파일이름
     http ://IP주소 :포트  /폴더이름/파일이름
					   도메인주소

HTTP 응답 프로토콜

HTTP 응답 프로토콜의 구조

사용자가 볼 웹 페이지를 담고 있다

response
HTTP/1.1 200 OK# Status Line
Date: Fri, 25 Mar 2011 06:54:45 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 93639
Content-Type: text/html
Set-Cookie: ASPSESSIONIDACAQARBT=HMJLELBCDNGEJCLNAMJFLCBO; path=/
Cache-control: private# Headers
# 공백
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title>『Magicimt』</title>
<style type="text/css">
… → # Body

Status Line

statusline

상태코드 : 서버가 알려주는 여러가지 정보

상태 코드 종류설명
100~199단순한 정보
200~299클라이언트의 요청이 성공
300~399클라이언트의 요청이 수행되지 않아 다른 URL로 재지정
400~499클라이언트의 요청이 불완전하여 다른 정보가 필요
500~599서버의 오류를 만나거나 클라이언트의 요청 수행 불가
  • 200 (OK) : 클라이언트의 요청이 성공했다는 것을 나타낸다
  • 403 (Forbidden) : 클라이언트가 권한이 없는 페이지를 요청했을 때
  • 404 (Not Found) : 클라이언트가 서버에 없는 페이지를 요청했을 때
  • 500 (Internal Server Error) : Server의 일부가 멈췄거나 설정 오류가 발생
  • 503 (Service Unavailable) : 최대 Session 수를 초과했을 때

HTTP 헤어 포맷

HTTP 헤더 구조

httpheader
  • 일반헤더
  • 요청헤더
  • 항목 헤더

일반헤더

일반적인 정보를 담고있다

헤더 종류설명
Content-Length메세지 바디 길이를 나타낼 때 쓰인다
Content-Type메세지 바디에 들어있는 컨텐츠 종류 (Ex : HTML 문사는 text/html)

요청헤더

클라이언트 정보를 담고있다

헤더 종류설명
Cookie서버로부터 받은 쿠키를 다시 서버에게 보내주는 역할을 한다
Host요청된 URL에 나타난 호스트명을 상세하게 표시 (HTTP 1.1은 필수)
User-Agent클라이언트 프로그램에 대한 식별 가능 정보를 제공

응답헤더

서버 정보를 담고있다

헤더 종류설명
Server사용하고 있는 웹서버의 소프트웨어에 대한 정보를 포함
Set-Cookie쿠키를 생성하고 브라우저에 보낼 때 사용. 해당 쿠키 값을 브라우저가 서버에게 다시 보낼 때 사용한다