본문 바로가기

프로그래밍/HTTP

[HTTP 완벽 가이드] HTTP 개관

클라이언트와 서버

 

HTTP 프로토콜로 요청, 응답을 받는 두 주체를 HTTP 클라이언트와 HTTP 서버라 한다.

 

리소스

웹 리소스란 웹에서 제공되는 모든 컨텐츠를 뜻한다.

 

정적 파일로는 html, ms docs , jpeg, avi 등이 있고

동적 리로스로는 사용자가 누구인지 어떤 정보를 요청하는지 등으로 다른 컨텐츠를 생성할 수 있다.

 

MIME (Multipurpose Internet Mail Extensions)

원래는 이메일간 데이터 타입을 지정하기 위해 사용했지만, 사용성이 좋아 HTTP 에서도 채택 되었다.

웹 서버는 모든 HTTP 객체에 MIME 타입을 붙이고 브라우저에서는 MIME 타입을 받아들일 수 있는지 확인한다.

 

text/html -> (primary object type)/(specific subtype)

 

content-type: image/jpeg 등...

 

 

URI 구조

URI 구조

크게 URL(uniform resource locator) 과 URN(uniform resource name) 로 구분된다.

 

URL(uniform resource locator): 특정 서버에서 하나의 자원에 대한 구체적인 위치를 서술

URN(uniform resource name): 자원의 위치에 영향을 받지 않는 유일한 이름

 

 

트랜잭션

클라이언트 요청과 서버의 응답 한 쌍을 하나의 트랜잭션이라고 한다.

 

메소드

모든 HTTP 요청 메시지는 하나의 메소드를 갖는다(get, post, put, delete, head)

 

상태 코드

모든 응답 메시지는 상태 코드와 함께 반환(200, 302, 404)

 

웹페이지는 여러 http 트랜잭션을 수행하고 얻은 각각의 리소스를 모아 만든다.

 

메시지

시작줄: 첫줄로, 요청이라면 무엇을 해야 하는지 , 응답이면 무슨 작업을 했는지 나타낸다.

헤더: 여러 줄일 수도 있고 없을 수도 있다.

빈줄

본문: 헤더 다음 개행 라인이 들어가면 헤더가 끝나고 본문이 시작된다.

 

- 메시지의 예시

 

TCP 커넥션

TCP/IP

네트워크의 신뢰성 있는 의사소통을 가능하게 한다.

 

- 오류 없는 데이터 전송

- 순서에 맞는 전달

- 조각나지 않는 데이터 스트림

 

 

IP주소 & 포트 번호

클라이언트에서 서버에 메시지를 전송하기 전에 커넥션을 맺어야 한다.

이때 IP주소와 포트 번호를 사용한다.

 

웹 브라우저가 HTTP 통신을 통해 리소스를 보여주는 원리

 

1. 브라우저가 서버의 URL에서 호스트 명을 추출

2. 서버의 호스트 명을 IP로 변환

3. 브라우저는 URL에서 포트 번호 추출

4. 웹 서버와 TCP 커넥션 맺음

5. 브라우저는 서버에 HTTP 요청을 보냄

6. 서버는 HTTP 응답을 돌려줌

7. 커넥션이 닫히고 브라우저는 문서를 보여줌

 

 

프로토콜 버전

HTTP/0.9

디자인 결함, GET 만 가능, MIME 헤더 미지원

HTTP/1.0

HTTP 헤더 메서드, MIME 처리

HTTP/1.0+

keep alive 커넥션, 가상 호스팅, 프록시 지원

HTTP/1.1

설계 결함 교정, 성능 최적화

HTTP/2.0

구글의 SPDY 프로토콜을 기반으로 설계 진행중

 

웹의 구성요소

프록시

클라이언트와 서버 사이에 위치한 HTTP 중개자 보안과 성능 최적화를 위해 사용된다.

사용자를 대신해서 서버에 접근, 요청과 응답을 필터링해 위험을 제거 할 수 있다.

 

캐시

많이 찾는 웹페이지를 캐시 서버에 보관

 

게이트웨이

어플리케이션과 연결된 특별한 웹 서버.

주로 HTTP 전송을 다른 프로토콜(ex ftp) 로 변환 하기 위해 사용된다.

터널

단순히 HTTP 통신을 전달하기만 하는 프록시