HTTP 개관 #
작성자 jaewon0913
1.1 HTTP: 인터넷의 멀티미디어 배달부 #
HTTP란? #
- 전 세계의 웹 서버로부터 대량의 정보(이미지, HTML 페이지, 텍스트 파일, 동영상 등)를 빠르고, 간편하고, 정확하게 사람들의 PC에 설치된 웹 브라우저로 옮겨준다.
- 신뢰성 있는 데이터 전송 프로토콜을 사용하므로 데이터가 지구 반대편에서 오더라도 전송 중 손상되거나 꼬이지 않음을 보장한다.
1.2 웹 클라이언트와 서버 #
웹 서버란? #
- 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다.
- 웹 서버는 HTTP 프로토콜로 통신하기 때문에 보통 HTTP 서버라고도 불린다.
- 웹 리소스를 관리하고 제공한다.
웹 클라이언트란? #
- 서버에게 HTTP 객체를 요청하고 사용자에게 해당 데이터/화면을 보여준다.
- 보통 사용자가 사용하는 구글 크롬, 인터넷 익스플로러가 웹 클라이언트이다.
1.3 리소스 #
리소스란? #
- 웹 콘텐츠의 원천이다.
- 요청에 따라 콘텐츠를 생성하는 프로그램이 될 수 있다.
- 텍스트파일, HTML파일, 워드 파일, 이미지, 동영상 등 모든 종류의 파일 및 콘텐츠 소스도 포함된다.
미디어타입
- HTTP 는 수천 개의 데이터 타입을 다루기 때문에 MIME(Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장) 라는 데이터 포맷 라벨을 웹에서 전송되는 객체 각각에 붙인다.
- 즉 이 웹 콘텐츠가 어떤 데이터 타입인지 알려주는 라벨이다.
- 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다.
- 표현 형식: ‘주 타입/부 타입’
- HTML 데이터 타입 = “text/html”
- JPEG 이미지 데이터 타입 = “image/jpeg”
- GIF 이미지 데이터 타입 = “image/gif”
URI
- URI(Uniform Resource Identifier, 통합 자원 식별자)는 서버 리소스 이름이라고도 불린다.
- 인터넷의 우편물 주소 같은 역할로 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다.
URL
- URL(Uniform Resource Locator, 통합 자원 지시자)는 리소스 식별자의 가장 흔한 형태이다.
- 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다.
- 오늘날 대부분 URI는 URL이다.
- 표현은 세 부분으로 이루어진 표준 포맷을 따른다.
- 첫 번째, 스킴(Scheme) 이라고 불리며, 리소스에 접근하기 위해 사용되는 프로토콜을 서술한다.(ex: http://)
- 두 번째, 서버의 인터넷 주소를 제공한다.(ex: www.study-gram.com)
- 세 번재, 웹 서버의 리소스를 가리킨다.(ex: /images/apple.jpg)
URN
- URN(Uniform Resource Name, 유니폼 리소스 이름)은 URI 의 두 번재 종류이다.
- 리소스의 위치에 영향을 받지 않는 유일무이한 이름 역할을 한다.
1.4 트랜잭션 #
- 트랜잭션은 요청(Request) 명령(클라이언트 -> 서버)과 응답(Response) 결과(서버 -> 클라이언트)로 구성되어 있다.
메소드(method)
- HTTP 는 HTTP 메서드라고 불리는 여러 가지 종류의 요청 명령을 지원한다.
- 모든 요청 메세지는 1 개의 메소드를 갖는다.
HTTP 메소드 | 설명 |
---|---|
GET | 서버에서 클라이언트로 지정한 리소스를 보내라 |
PUT | 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스를 저장하라 |
DELETE | 지정한 리소스를 서버에서 삭제해라 |
POST | 클라이언트 데이터를 서버 게이트웨이 어플리케이션으로 보내라 |
HEAD | 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라 |
상태 코드
- 클라이언트에게 요청이 성공했는지 아니면 추가 조치가 필요한지 알려주는 3자리 숫자이다.(3장에서 상세히 다)
HTTP 상태코드 | 설명 |
---|---|
200 | 성공 |
404 | 리소스를 찾을수 없음 |
500 | 서버 에러 |
1.5 메시지 #
- HTTP 메시지는 단순한 줄 단위의 문자열이다.
- Client -> Server 로 보낸 HTTP 메시지를 요청 메시지라 한다.
- Server -> Client 로 보낸 HTTP 메시지를 응답 메시지라 한다.
- 구성은 아래와 같다.
- 시작줄
- 요청 및 응답애 대한 내용
- 헤더
- 0개 이상의 헤더 필로 구성
- 쌍점(:)으로 구분되어 하나의 이름과 하나의 값으로 구성
- 빈 줄로 끝남
- 본문
- 어떤 종류의 데이터든 들어갈 수 있는 메시지 본문
- 요청: 웹 서버로 데이터를 실어보냄
- 응답: 클라이언트로 데이터 반환
- 텍스트 이외에 임의의 이진 데이터 포함 가능(이미지, 비디오, 오디오 등)
- 시작줄
1.6 TCP 커넥션 #
TCP/IP
- TCP(Transmission Control Protocol, 전송 제어 프로토콜)
- 오류 없는 데이터 전송
- 순서에 맞는 전달(데이터는 언제나 보낸 순서대로 도착)
- 조각나지 않는 데이터 스트림(언제든 어떤 크기로든 보낼 수 있음)
- TCP/IP
- 패킷 교환 네트워크 프로토콜의 집합
- 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터/네트워크든 서로 신뢰성 있는 의사소통을 가능하게 함
- 일단 TCP 커넥션이 맺어지면, 클라이언트와 서버 컴퓨터 간에 교환되는 메시지가 없어지거나, 손상되거나 하는 일은 없다.
접속, IP 주소 그리고 포트번호
- HTTP 메시지를 전송하기 위해서는 IP 주소와 포트번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야 함
- 표현 방식 : “IP주소:포트번호”(ex: http://127.0.0.1:8080)
- 클라이언트와 서버 사이의 통신 순서
- 웹 브라우저는 서버의 URL 에서 호스트 명을 추출
- 서버의 호스트 명을 IP로 변환
- URL에서 포트번호를 추출
- 웹 서버와 TCP 커넥션을 맺음
- 클라이언트는 서버에 HTTP 요청을 보냄
- 서버는 클라이언트에 HTTP 응답을 보냄
- 커넥션이 닫히면, 웹 브라우저는 문서를 보여줌
1.7 프로토콜 버전 #
- HTTP/1.0 : 처음으로 널리 쓰이기 시작한 HTTP 버전
- HTTP/1.1 : HTTP 설계의 구조적 결함 교정, 성능 최적화, 잘못된 기능 제거에 집중한 현재의 HTTP 버전
- HTTP/2.0 : HTTP/1.1 성능 문제를 개선한 HTTP 버전(10장에서 자세히 다룸)
1.8 웹의 구성요소 #
이름 | 설명 |
---|---|
프락시 | 클라이언트와 서버 사이에 위치한 HTTP 중개자 |
캐시 | 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고 |
게이트웨이 | 다른 애플리케이션과 연결된 특별한 웹 서버 |
터널 | 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시 |
에이전트 | 자동화된 HTTP 요청을 만드는 준지능적 웹클라이언트 |