1. HTTP 개관
HTTP를 간략하게 정리합니다.
#
1.1 HTTP 인터넷의 멀티미디어 배달부HTTP는 신뢰성이 있는 데이터 전송 프로토콜을 사용하며, 데이터가 손상되거나 꼬이지 않도록 방지합니다.
#
1.2 웹 클라이언트와 서버- 클라이언트 ---(HTTP 요청)---> 서버
- 클라이언트 <---(HTTP 응답)--- 서버
#
1.3 리소스웹 서버는 웹 리소스를 관리하게 제공합니다.
웹 리소스란.
- 웹 콘텐츠의 원천
- 정적 리소스와 동적 리소스 등이 있습니다.
- 대표적인 예시로, 파일시스템, 텍스트파일 등등
#
미디어 타입MIME(Multipurpose Internet Mail Extensions) 타입이라는 데이터 포맷 라벨을 붙이며, 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙입니다.
예를 들면 다음과 같이 붙입니다. 아래 말고도 수많은 MIME이 존재합니다.
- HTML : text/html
- plain ASCII 텍스트 문서 : text/plain
- JPEG : image/jpeg
- GIF : image/gif
#
URI서버 리소스 이름은 URI(Uniform Resource Identifier)라고 불립니다.
URI는 크게 2가지로 나눠지며, URL과 URN으로 나눠집니다.
#
URL리소스 식별자의 가장 흔한 형태이며, 리소스에 대한 구체적인 위치를 서술합니다. 보통 세 부분으로 이루어진 표준 포맷입니다.
- 스킴(scheme) : URL의 첫번째 부분, 리소스 접근 프로토콜
- 서버의 인터넷 주소
- 웹 서버의 리소스
오늘날 대부분의 URI는 URL입니다.
#
URNUniform Resource name의 약자로서, 콘텐츠를 이루는 한 리소스에 대해 유일무이한 이름 역할을 합니다. 실험 중인 상태입니다.
#
1.4 트랜잭션HTTP 트랜잭션 = 요청 + 응답
#
메서드대표적인 메서드는 GET, PUT, DELETE, POST, HEAD 등이 있습니다.
#
상태코드- 200 : 정상
- 302 : 다시 보내세요
- 404 : 없어요...
좀 더 자세하게는 이후에 표현합니다.
#
웹 페이지는 여러 객체로 나눠질 수 있습니다.즉, 웹 페이지 = 리소스의 모음
#
1.5 메시지HTTP 메시지는 단순한 줄 단위의 문자열입니다.
- 요청 메시지 : 웹 클라이언트에서 웹 서버로 보낸 HTTP 메서드
- 응답 메시지 : 웹 서버에서 클라이언트로 가는 메시지
크게 세가지로 구성됩니다.
- 시작줄 : 요청이라면 무엇을 해야하는 지, 응답이라면 무슨일이 일어났는지 나타냅니다.
- 헤더 : 0개 이상,
:
으로 구분되며 하나의 이름과 하나의 값으로 이뤄지며 끝은 빈줄로 끝납니다. - 본문 : 어떤 종류의 데이터든 들어갈 수 있는 본문입니다.
보통 다음과 같이 줍니다.
#
1.6 TCP 커넥션#
TCP/IP- HTTP는 애플리케이션 계층 프로토콜 (네트워크 통신에 대해 신경쓰지 않음)
- TCP/IP는 다음을 신경씁니다.
- 오류 없는 데이터 전송
- 순서에 맞는 전달 보장
- 조각나지 않는 데이터 스트림
계층에 대한 공부는 좀 더 필요합니다. 여기서 간략하게 정리하면 다음과 같습니다.
위부터 네트워크 프로토콜 스택입니다.
- HTTP : 애플리케이션 계층
- TCP : 전송 계층
- IP ; 네트워크 계층
- 네트워크를 위한 링크 인터페이스 : 데이터 링크 계층
- 물리적인 네트워크 하드웨어 : 물리 계층
#
접속, IP 주소, 포트번호TCP 커넥션을 하기 위해서는 IP 주소와 포트번호가 필요합니다. 이때는 URL을 통해서 알 수 있는데, 포트번호가 생략되어 있으면 80으로 가정하고 진행합니다.
#
telnettelnet을 통해서 TCP 커넥션을 만들 수 있습니다.
#
1.7 프로토콜 버전여러가지 프로토콜 버전이 있습니다.
- HTTP/0.9 : 많은 문제가 존제.
- HTTP/1.0 : 처음으로 널리쓰이게 된 HTTP 버전, MIME 추가
- HTTP/1.0+ : keep-alive, 가상 호스팅, 프락시 등이 지원됩니다.
- HTTP/1.1 : 현재 사용하는 표준 메서드, 성능 최적화 및 잘못된 기능 제거
- HTTP/2.0 : 10장에서 추가 설명합니다.
#
1.8 웹의 구성요소- 프락시 : 클라이언트와 서버 사이에 위치한 HTTP 중개자
- 캐시 : 많이 찾는웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
- 게이트웨이 : 다른 애플리케이션과 연결된 특별한 웹 서버
- 터널 : 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
- 에이전트 : 자동화된 HTTP요청을 만드는 semi-intelligent한 웹클라이언트
#
프락시- 클라이언트와 서버 사이에 위치
- 클라이언트의 모든 HTTP 요청을 받아 서버로 전달
- 주로 보안을 위해 사용됨
#
캐시- 자주 찾는 것의 사본을 저장하는 특별한 종류의 HTTP 프락시
- 훨씬 문서를 더 빨리 받을 수 있음
#
게이트 웨이- 다른 서버들의 중개자로 동작하는 특별한 서버
- HTP 트래픽을 다른 프로토콜로 변환하기 위해 사용됨
- 리소스를 진짜 서버 처럼 요청을 다룹니다.
#
터널- 두 커넥션 사이 날(raw) 데이터를 열어보지 않고 전달해주는 HTTP 애플리케이션
- 주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송합니다.
- 대표적인 예시로, SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹 트래픽만 허용하는 사내 방화벽을 통과시키는 것
#
에이전트- HTTP 요청을 만들어주는 클라이언트 프로그램
#
1.9 시작의 끝#
1.10 추가 정보URL의 포맷과 인터넷에 잇는 URL들이 가리키는 다양한 리소스 형식에 대해 정리합니다. 그리고 URN으로 발전하는 과정에 대해서도 정리합니다.
#
HTTP 메시지웹 콘텐츠를 실어 나르는 HTTP 메시지에 대해 자세히 정리합니다.
#
커넥션 관리HTTP에서 관리하는 TCP 커넥션에 대해 일반적인 오해들과 잘못 작성된 큐칙 및 동작 방식에 대해 알아봅니다.