(1) 웹 페이지는 객체들로 구성
(2) 웹 페이지는 기본 HTML 파일과 여러 참조 객체들로 구성
(3) 각 객체는 URL로 지정
URL은 객체를 가지고 있는 서버의 호스트 이름과 객체의 경로 이름으로 구성
인터넷의 모든 객체는 URL보유
HTTP는 TCP를 사용
①클라이언트는 80번 포트로 서버에게 TCP연결(소켓 생성)을 시작
②서버는 클라이언트의 TCP연결 요청 수랑
③웹 브라우저와 웹서버 사이에 HTTP 메시지를 교환
HTTP는 비상태 프로토콜(Stateless Protocol)
서버는 클라이언트의 과거 요청들에 대한 정보를 유지 하지 않음
👉 서버가 client의 state를 저장 하지 않음
참고 : "상태"를 유지하는 프로토콜은 복잡함.
과거의 기록(상태)들을 유지, 관리해야 하기 때문
서버나 클라이언트 중 하나가 깨진 경우 각각의 "상태"가 불일치하게 되어 조정 필요
요구/응답 쌍이 분리된 tcp연결을 통해 송/수신 👉 객체 1개를 받기 위해 연결 요청 해야 함
하나의 tcp 연결로 하나의 객체만 전송
단점 : 각 객체 당 2RTT 필요 (각 TCP 연결에 대한 OS 오버헤드가 필요하다.)
웹 브라우저는 참조 객체들을 가져오기 위해 종종 병렬 TCP 연결을 시도
RTT(Round-Trip Time)
: 클라이언트에서 송신된 패킷이 서버까지 간 후 응답이 다시 되돌아 오는데 걸리는 시간
HTML 파일 요청 응답 시간
TCP 연결을 초기화하는 1RTT
HTTP 요청 후 HTTP 응답으로 처음 몇 바이트를 받는데 필요한 1RTT
파일 전송 시간
따라서,
비지속 HTTP의 응답 시간 = 2RTT + 파일 전송 시간
모든 요구 / 응답 쌍이 같은 tcp 연결 상에서 송수신
하나의 tcp 연결로 다수의 객체들이 전송
서버는 응답을 보낸 후에 TCP 연결을 유지(일정 시간이 지나면 terminated)
클라이언트 / 서버 간의 이후 HTTP 메시지들은 같은 연결을 통해 송수신
클라이언트는 객체를 참조하자 마자 요청을 송신(응답대기X)
모든 참조 객체들에 대해 1RTT만 필요
GET
POST
HEAD
GET, POST, HEAD
PUT : URL 필드에 명시된 경로로 개체 몸체 안에 파일 업로드
DELETE : URL 필드에 명시된 파일을 삭제