1. 1 HTTP: 인터넷의 멀티미디어 배달부
HTTP
- 웹 서버로부터 정보를 브라우저에 전달하는 역할
- 신뢰성 있는 프로토콜로, 신뢰성 있는 데이터 전송을 보장한다.
1.2 웹 클라이언트와 서버
웹서버
- 웹콘텐츠가 존재하는 곳 (HTTP 서버)
- 웹 서버는 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다.
클라이언트 요청과정
- URL 주소 중 도메인 네임 부분을 운 서버에서 검색한다.
- DNS 서버에서 해당 도메인 네임에 해당하는 IP주소를 찾아 사용자가 입력한 URL정보와 함께 전달한다.
- 브라우저는 HTTP 프로토콜을 사용하여 요청 메시지를 생성하고 HTTP 요청 메시지는 TCP/IP프로콜을 사용하여 서버로 전송된다.
- 서버는 response 메시지를 생성하여 다시 브라우저에게 데이터를 전송한다.
- 브라우저는 response를 받아 파싱하여 화면에 렌더링한다.
1.3 리소스
웹 리소스
- 웹 서버 파일 시스템의 파일
- 정적 파일: 텍스트 파일, HTML 파일, 이미지/동영상 파일, 그 외 파일
- 동적 콘텐츠 리소스: 사용자, 요청한 정보, 시간에 따라 다른 콘텐츠 생성
1.3.1 미디어 타입
MIME(Multipurpose Internet Mail Extensions)
- HTTP 전송객체에 붙는 데이터 포맷 라벨
- 이메일 호환을 위해 설계되었음
- 주타입 / 부타입
HTML: text/html
plain ASCII: text/plain
JPEG: image/jpeg
GIF: image/gif
퀵타임: video/quicktime
ppt: application/vnd.ms-powerpoint
1.3.2 URI
URI(uniform resource identifier)
- 서버 리소스 이름
1.3.3 URL
URL(uniform resource locator)
- 특정 서버의 리소스에 대한 구체적인 위치
- 스킴(scheme): 프로토콜 (http://, https://)
- 서버의 주소: (www.joes-hardware.com)
- 웹 리소스: (/specials/saw-blade.gif)
1.3.4 URN
URN(uniform resource name)
- 리소스 이름
- URI는 URL, URN을 포함한다.
1.4 트랜잭션
HTTP 트랜잭션
- 요청 명령과 응답 결과로 구성
1.4.1 메서드
- GET: 서버에서 클라이언트로 지정한 리소스를 보내라.
- PUT: 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라.
- DELETE: 지정한 리소스를 서버에서 삭제하라.
- POST: 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라.
- HEAD: 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라.
- 그 외 CONNECT, **OPTIONS**, TRACE, **PATCH** - [mdn http methods
- 참고 : (https://developer.mozilla.org/ko/docs/Web/HTTP/Methods)
1.4.2 상태 코드
- 200: ok. 요청이 성공적으로 되었습니다.
- 302: 다시 보내라, 다른 곳에 가서 리소스를 가져가라.
- 404: 요청받은 리소스를 찾을 수 없습니다.
- 참고 : (https://developer.mozilla.org/ko/docs/Web/HTTP/Status)
1.4.3 웹페이지는 여러 객체로 이루어질 수 있다.
- 하나의 페이지에서 대량의 HTTP 트랙잭션 수행 가능
1.5 메시지
요청 메시지
- 웹 클라이언트에서 웹 서버로 보낸 HTTP 메세지
- 시작줄: 요청 - 무엇을 해야 하는지 / 응답: 무슨일이 일어났는지
- 헤더: 요청에 들어가는 HTTP 헤더는 HTTP 헤더의 기본 구조를 따릅니다. (구분자 :)
- 본문: 메시지 본문 (이미지, 비디오, 오디오, 응용 소프트웨어)
- 참고 : (https://developer.mozilla.org/ko/docs/Web/HTTP/Messages#%EC%8B%9C%EC%9E%91_%EC%A4%84)
1.6 TCP 커넥션
TCP(Transmission Control Protocol)
- 전송 제어 프로토콜
1.6.1 TCP/IP
- 오류 없는 데이터 전송
- 순서에 맞는 전달
- 조각나지 않는 데이터 스트림
1.6.2 접속, IP 주소 그리고 포트번호
- TCP 커넥션: 전화 거는 것과 비슷 (서버에 연결)
- 80 포트: HTTP 서버
1.7 프로토콜 버전
- HTTP/0.9, HTTP/1.0, HTTP/1.0+, HTTP/1.1, HTTP/2.0
- HTTP/2.0: 책에서는 진행중이라고 되어있지만, 현재 상용
1.8 웹이 구성요소
- 프락시(proxy): 클라이언트와 서버 사이에 위치한 HTTP 중개자
- 캐시: 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 저장소
- 게이트웨이: 다른 애플리케이션과 연결된 특별한 웹 서버
- 터널: 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
- 에이전트: 자동화된 HTTP 요청을 만드는 준지능적(semi-intelligent) 웹 클라이언트
1.8.1 프락시
- 클라이언트의 모든 HTTP 요청을 받아 (요청을 수정한 뒤에) 서버에 전달
- 보안을 위해 사용
1.8.2 캐시
- 자주 찾는 것의 사본을 저장해 두는, 특별한 종류의 프락시 서버
1.8.3 게이트웨이
- 게이트웨이는 다른 서버들의 중개자로 동작하는 특별한 서버
- 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용
1.8.4 터널
- 터널은 두 커넥션 사이의 raw 데이터를 그대로 전달해주는 HTTP 애플리케이션
1.8.5 에이전트
- 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램
'HTTP' 카테고리의 다른 글
[HTTP 완벽 가이드]2장 URL과 리소스 (0) | 2023.09.20 |
---|