TCP/IP 기반의 Application Protocol 중 인터넷 서비스 프로토콜인 HTTP 는 현재까지 가장 범용적으로 사용되고 있다.
HTTP는 기본적으로 클라이언트-서버 프로토콜이다.
요청은 하나의 개체, 사용자 에이전트 ( 대부분의 경우 브라우저지만, 무엇이든 될 수 있다) 에 의해 전송됩니다. 각각의 개별적인 요청들은 서버로 보내져 처리되어 response라고 불리는 객체를 서버로부터 돌려받습니다.
HTTP 는 헤더정보를 통해 많은 유용한 정보를 전달 합니다.
아래 예시를 참고
- HTTP Request Header
Line 1 : 요청 Method 로 HTTP 는 클라이언트가 서버에게 요청하는 방법을 정의 한다 특히 요청 Method는
Line 2: host는 요청을 한 서버의 호스트 이름
Line 3: User-Agent 는 요청 한 클라이언트 ( 대부분 브라우저 )의 어플리케이션 이름, 버전, 처리 가능한 기능 등 다양한 정보를 담고 있다.
gzip , deflate 과 같은 압축파일을 풀수 있음을 서버에 알려 , 서버는 이를 알고 응답 데이터를 압축해서 전송하여 전송 속도개선에 활용된다.
Line 9: Connction: Keep-Alive : HTTP1.1 이후 제공되는 기능으로
일반적으로 HTTP는 connection less 방식으로 연결을 매번 끊고 새로 생성하는 구조입니다.
이는 network 비용측면에서 많은 비용을 소비하는 구조입니다.( 최초 연결하기 위한 준비과정을 의미함 ) 그래서 HTTP 1.1부터는 Keep-Alive를
사용하면 keep Alive time out내에 client에서 request를 재 요청하면 socket(port)를 새로 여는 것이 아니라
이미 열려 있는 socket(port)에 전송하는 구조가 가능하다.
참고로 보면 Keep-Alive: timeout=5, max=99 부분에서 max 는 최초 연결된 port에 대해서 100회 request를 받겠다는 의미입니다.
keep alive time out이 되었을 때 client의 socet이 닫히거나 browser가 더 이상 얻어 올 것이 없으면 자동으로 닫어 버림.
HTTP KEEP Alive 설정하기
- HTTP Response Header
응답 코드