- Published on
www(웹)을 이용할 때는 이렇게 데이터를 주고 받는다 - OSI 7계층 HTTP
- Authors
- Name
- Bora Choi
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 : 네트워크 부하가 심함

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

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

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

HTTP 메소드 요청 타입
메소드 종류 | 설명 |
---|---|
GET | 클라이언트가 서버로부터 문서를 읽어오려 할 때 사용 |
HEAD | 클라이언트가 문서가 아닌 문서에 대한 특정 정보를 원할 경우 사용 |
POST | 클라이언트가 서버에게 어떤 정보를 전송할 때 사용 |
PUT | 클라이언트가 서버에게 특정 자원을 업로드할 때 사용 |
PATCH | PUT 과 비슷함, 기존 파일에서 변경사항만을 포함 |
COPY | 파일을 다른 위치로 복사하기 위해 사용 |
MOVE | 파일을 다른 위치로 이동하기 위해 사용 |
DELETE | 서버에서 문서를 제거하기 위해 사용 |
LINK | 문서에서 다른 위치로 링크를 생성하기 위해 사용 |
UNLINK | LINK Method에 의해 생성된 링크를 삭제하기 위해 사용 |
OPTION | 클라이언트가 서버에게 사용 가능한 옵션을 질의하기 위해 사용 |
GET
요청 방식
POST
요청 방식
GET
방식과 POST
방식의 차이점
GET
방식
URI 에 서버에 보낼 데이터를 함께 요청한다
POST
방식
전송할 데이터를 body 에 넣는다
URI(Uniform Resource Identifier)의 구조
URI란 ? 인터넷 상에서 특정 자원을 나타내는 유일한 주소
URI의 구조
scheme ://host[:port][/path][?query]
ex) ftp ://IP주소 :포트 /파일이름
http ://IP주소 :포트 /폴더이름/파일이름
도메인주소
HTTP 응답 프로토콜
HTTP 응답 프로토콜의 구조
사용자가 볼 웹 페이지를 담고 있다

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

상태코드 : 서버가 알려주는 여러가지 정보
상태 코드 종류 | 설명 |
---|---|
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 헤더 구조

- 일반헤더
- 요청헤더
- 항목 헤더
일반헤더
일반적인 정보를 담고있다
헤더 종류 | 설명 |
---|---|
Content-Length | 메세지 바디 길이를 나타낼 때 쓰인다 |
Content-Type | 메세지 바디에 들어있는 컨텐츠 종류 (Ex : HTML 문사는 text/html) |
요청헤더
클라이언트 정보를 담고있다
헤더 종류 | 설명 |
---|---|
Cookie | 서버로부터 받은 쿠키를 다시 서버에게 보내주는 역할을 한다 |
Host | 요청된 URL에 나타난 호스트명을 상세하게 표시 (HTTP 1.1은 필수) |
User-Agent | 클라이언트 프로그램에 대한 식별 가능 정보를 제공 |
응답헤더
서버 정보를 담고있다
헤더 종류 | 설명 |
---|---|
Server | 사용하고 있는 웹서버의 소프트웨어에 대한 정보를 포함 |
Set-Cookie | 쿠키를 생성하고 브라우저에 보낼 때 사용. 해당 쿠키 값을 브라우저가 서버에게 다시 보낼 때 사용한다 |