You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
전 세계의 웹 브라우저, 서버, 웹 애플리케이션은 모두 HTTP(HyperText Transfer Protocol)을 통해 서로 대화한다. HTTP는 현대 인터넷의 공용어이다.
1장의 내용
얼마나 많은 클라이언트와 서버가 HTTP를 이용해 통신하는지
리소스(웹 컨텐츠)가 어디서 오는지
웹 트랜잭션이 어떻게 동작하는지
HTTP 통신을 위해 사용하는 메시지의 형식
HTTP 기저의 TCP 네트워크 전송
여러 종류의 HTTP 프로토콜
인터넷 곳곳에 설치된 다양한 HTTP 구성요소
1. HTTP: 인터넷의 멀티미디어 배달부
HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용
HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에, 사용자는 인터넷에서 얻은 정보가 손상된게 아닌지 염려하지 않아도 된다. 애플리케이션 개발자도 데이터가 전송 중 파괴되거나, 중복되거나, 왜곡되는 것, 즉 인터넷의 결함이나 약점에 대한 걱정 없이 애플리케이션 고유의 기능을 구현하는데 집중할 수 있다.
2. 웹 클라이언트와 서버
월드 와이드 웹의 기본 요소
웹 서버 = HTTP 서버
웹 콘텐츠는 웹 서버에 존재한다.
역할 : HTTP 클라이언트가 요청한 데이터를 제공 (HTTP 응답으로 돌려줌)
웹 클라이언트 = HTTP 클라이언트
역할 : 서버에게 HTTP 객체를 요청
ex) 인터넷 익스플로러, 구글 크롬 같은 웹 브라우저
웹 브라우저는 요청에 대한 응답결과를 사용자의 화면에 보여준다.
예를 들어 http://[www.google.com](https://github.com/LandvibeDev/HTTPStudy/issues/www.google.com)/index.html 페이지를 열어볼 때 웹 브라우저는 HTTP 요청을 www.google.com 서버로 보낸다. 서버는 요청받은 객체 ("/index.html")를 찾고, 그것의 타입, 길이 등의 정보와 함께 HTTP 응답에 실어서 클라이언트에게 보낸다.
3. 리소스
웹 리소스 - 웹 콘텐츠의 원천, 즉 웹 콘텐츠를 제공하는 모든 것. 웹 서버가 관리하고 제공한다.
정적 파일 (가장 단순한 웹 리소스)
텍스트 파일, HTML 파일, 마이크로소프트 워드 파일, JPEG 이미지 파일, 동영상 파일, 그 외 모든 종류의 파일
요청에 따라 콘텐츠를 생산하는 프로그램
사용자가 누구인지, 어떤 정보를 요청했는지에 따라 다른 동적 콘텐츠를 생성
어떤 종류의 콘텐츠 소스든 리소스가 될 수 있음
스프레드 시트 파일, 탐색 웹 게이트웨이, 인터넷 검색 엔진 등등 ..
3.1 미디어 타입
웹 서버는 모든 HTTP 객체에 MIME 타입을 붙인다. 웹 브라우저는 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 MIME 타입을 통해 확인한다.
MIME(Multipurpose Internet Mail Extensions) 타입
원래 각기 다른 전자메일 시스템 사이에서 주고받기 위해 설계된 MIME(Multipurpose Internet Mail Extensions)은 HTTP에서도 멀티미디어 콘텐츠를 기술하고 라벨을 붙이기 위해 채택되었다.
사선(/)으로 구분된 주 타입과 부타입으로 이루어진 문자열 라벨
HTML로 작성된 텍스트 문서 : text/html
plain ASCII 텍스트 문서 : text/plain
JPEG, GIF 이미지 : image/jpeg, image/gif
비디오, PPT 파일 등 : video/quicktime, application/vnd.ms-powerpoint
부록 내용 정리
MIME 미디어 타입은 메시지 엔티티 본문의 콘텐츠를 설명하는 표준화된 이름이다.
배경
본래 멀티미디어 이메일을 위해 개발되었지만, 데이터 객체의 포맷과 목적 설명이 필요한 HTTP를 비롯해 여러 다른 프로토콜에서 재 사용되어 왔다.
MIME 타입 구조
HTTP에서 MIME 타입은 Content-Type과 Accept 헤더에서 널리 사용된다.
HTTP 개관
전 세계의 웹 브라우저, 서버, 웹 애플리케이션은 모두 HTTP(HyperText Transfer Protocol)을 통해 서로 대화한다. HTTP는 현대 인터넷의 공용어이다.
1장의 내용
1. HTTP: 인터넷의 멀티미디어 배달부
2. 웹 클라이언트와 서버
월드 와이드 웹의 기본 요소
예를 들어
http://[www.google.com](https://github.com/LandvibeDev/HTTPStudy/issues/www.google.com)/index.html
페이지를 열어볼 때 웹 브라우저는 HTTP 요청을 www.google.com 서버로 보낸다. 서버는 요청받은 객체 ("/index.html")를 찾고, 그것의 타입, 길이 등의 정보와 함께 HTTP 응답에 실어서 클라이언트에게 보낸다.3. 리소스
웹 리소스 - 웹 콘텐츠의 원천, 즉 웹 콘텐츠를 제공하는 모든 것. 웹 서버가 관리하고 제공한다.
3.1 미디어 타입
웹 서버는 모든 HTTP 객체에 MIME 타입을 붙인다. 웹 브라우저는 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 MIME 타입을 통해 확인한다.
MIME(Multipurpose Internet Mail Extensions) 타입
주 타입
과부타입
으로 이루어진 문자열 라벨text/html
text/plain
image/jpeg
,image/gif
video/quicktime
,application/vnd.ms-powerpoint
부록 내용 정리
MIME 미디어 타입은 메시지 엔티티 본문의 콘텐츠를 설명하는 표준화된 이름이다.
본래 멀티미디어 이메일을 위해 개발되었지만, 데이터 객체의 포맷과 목적 설명이 필요한 HTTP를 비롯해 여러 다른 프로토콜에서 재 사용되어 왔다.
HTTP에서 MIME 타입은 Content-Type과 Accept 헤더에서 널리 사용된다.
분리형
혼합형
멀티파트형
혼합형으로, 여러개의 컴포넌트 타입으로 이루어져있다.
MDN WEB DOCS 추가 설명 [링크](https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types)
3.2 URI(Uniform Resource Identifier)
대부분의 URL은 세 부분으로 이루어진 표준 포맷을 따른다.
4. 트랜잭션
HTTP 트랜잭션은 요청과 응답으로 구성되어 있고, HTTP 메세지를 이용해 이루어진다.
4.1 메서드
모든 HTTP 요청 메시지는 한개의 메서드를 갖는다. 메서드는 서버에게 어떤 동작이 취해져야 하는지 말해준다. (3장에서 자세히 다룸 )
4.2 상태 코드
모든 HTTP 응답 메시지는 상태 코드와 함께 반환된다. 상태코드는 클라이언트에게 요청이 성공했는지 아니면 추가 조치가 필요한지 알려주는 세자리 숫자다.
HTTP는 상태 코드에 텍스트로 된 사유 구절(reason phrase)도 함께 보내지만, 이 부분은 설명만을 위한것일 뿐 실제 응답 처리에는 숫자로된 코드가 사용된다.
4.3 웹 페이지는 여러 객체로 이루어질 수 있다.
애플리케이션은 보통 하나의 작업을 수행하기 위해 여러 HTTP 트랜잭션을 수행한다.
페이지 레이아웃을 서술하는 HTML뼈대를 한번에 트랜잭션으로 가져온 뒤, 첨부된 이미지, 그래픽 조각, 자바 애플릿 등 을 가져오기 위해 추가로 HTTP 트랜잭션을 수행한다. 이 리소스들은 각각 다른 서버에 위치할 수도 있다.
5.메시지
HTTP는 일반 텍스트로 이루어진 단순한 줄 단위 문자열이다.
그 외 다른 종류의 HTTP 메시지는 없다.
출처 - [MDN HTTP 메시지](https://developer.mozilla.org/ko/docs/Web/HTTP/Messages)
:
로 구분되어 있는 하나의 이름과 하나의 값으로 구성된다. 헤더 필드를 추가하려면 한 줄을 더하면 된다. 헤더는 빈줄로 끝난다.6. TCP 커넥션
어떻게 메시지가 TCP(Transmission Control Protocol, 전송 제어 프로토콜) 커넥션을 통해 한 곳에서 다른 곳으로 옮겨가는지
6.1 TCP/IP
HTTP는 애플리케이션 계층 프로토콜이다. HTTP는 네트워크 통신의 핵심적인 세부사항에 대해서 신경 쓰지 않는다. 대신 대중적이고 신뢰성있는 프로토콜인 TCP/IP 에게 맡긴다.
TCP/IP는 TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합이다. TCP/IP는 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해준다.
일단 TCP 커넥션이 맺어지면 클라이언트와 서버 컴퓨터간에 교환되는 메시지가 없어지거나, 손상되거나, 순서가 뒤바뀌어 수신되는 일은 결코 없다.
6.2 접속, IP 주소 그리고 포트번호
HTTP 클라이언트가 서버에 메시지를 전송할 수 있게 되기 전에, IP주소와 포트번호를 사용해 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야한다. -> URL을 이용하면 된다.
URL은 리소스를 가지고 있는 장비에 대한 IP주소와 포트번호를 알려줄 수있다.
출처 - [티스토리 블로그](https://real-dongsoo7.tistory.com/72?category=716262)
6.3 텔넷(Telnet)을 이용한 예제
텔넷 - 원격 터미널 세션을 위해 사용되며, HTTP 서버를 포함한 일반적인 TCP 서버에 연결하기 위해 사용될 수도 있다.
7. 프로토콜 버전
오늘날 쓰이고 있는 HTTP 프로토콜은 버전이 여러가지다.
HTTP/0.9
HTTP/1.0
HTTP/1.0+
HTTP/1.1
HTTP/2.0
출처 - [MDN HTTP/1.x의 커넥션 관리](https://developer.mozilla.org/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x)
8. 웹의 구성요소
8.1 프락시
8.2 캐시
웹 캐시와 캐시 프락시는 자신을 거쳐가는 문서들 중 자주 찾는 것의 사본을 저장해두는, 특별한 종류의 HTTP 프락시 서버이다. 다음번에 클라이언트가 같은 문서를 요청하면 그 캐시가 갖고 있는 사본을 받을 수 있다.
HTTP는 캐시를 효율적으로 동작하게 하고 캐시된 콘텐츠를 최신버전으로 유지하면서 동시에 프라이버시도 보호하기 위한 많은 기능을 정의한다. (7장에 계속)
8.3 게이트웨이
8.4 터널
HTTP 터널을 활용하는 대표적인 예로, 암호화된 SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹 트래픽만 허용하는 사내 방화벽을 통과시키는 것이 있다.
우선 HTTP/SSL 터널은 HTTP 요청을 받아들여 목적지의 주소와 포트번호로 커넥션을 맺는다. 이후부터는 암호화된 SSL 트래픽을 HTTP 채널을 통해 목적지 서버로 전송할 수 있게 된다.
8.5 에이전트
사용자 에이전트는 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램이다. 웹 요청을 만드는 애플리케이션은 뭐든 HTTP 에이전트다.
MIME (Multipurpose Internet Mail Extensions)
전자우편
따라서 메세지 헤더와 그 값은 항상 ASCII 문자를 사용해야한다.
출처 - 티스토리 [HTTP] MIME TYPE
참고
HTTP 응답에 대한 멀티 파트 타입으로
206 Partial Content
와 함께 범위응답을 하게 된다.여러번에 걸쳐 파일을 리턴해줄 것을 요청할 때 사용한다
출처
MIME 타입 확인하는 java 코드
String mimeType = Files.probeContentType(source);
application/octet-stream
반환String mimeType = new Tika().detect(file);
The text was updated successfully, but these errors were encountered: