document_type : 문서 유형 (html 문서는 text/html, jpeg 파일은 image/jpeg)
브라우저에서 캐싱하기
웹 페이지 성능을 최적화 하려면 캐시를 이용한다.
예를 들어, 용량이 큰 이미지가 많은 사이트를 반복 접속하는 경우에 다운로드 시간과 HTTP GET 요청수를 줄이기 위해 해당 이미지를 사용자의 디스크에 저장하고 캐시로 사용한다.
브라우저는 캐시가 최신 버전인지 이전 버전인지 어떻게 확인할까?
바로 캐시를 사용하기 전에 서버에 HEAD 요청을 날려 Last-Modified Date 를 비교해 최신임을 확인한다.
여기서 주의할 점은 모든 파일에 대해 캐시를 만드는 것이 더 효율적일지 아니면, HEAD 요청을 만들어 날리는 값들을 고려했을 때 캐시로 만들지 않는 것이 더 효율적일지 고민해야 한다. (캐시하려는 파일의 크기가 매우 작은 경우)
FTP (File Transfer Protocol)
파일이 문서, 이미지, 프로그램 등 다양한 형태의 데이터를 갖고 있을 수 있기 때문에 컴퓨터 간의 파일 교환시에 호환성을 보장하는 프로토콜이 필요하다.
컴퓨터 간의 호환성이라는 것은 예를 들어, 한 컴퓨터에서는 JPEG 이미지가 .jpg 로 저장되지만 다른 컴퓨터에서는 .jpeg 로 저장될 수 있다. 또한 어떤 컴퓨터는 파일 경로를 (/) 를 사용하지만 다른 컴퓨터는 () 를 사용할 수도 있다.
이렇기 때문에 파일 전송에 대한 규약인 프로토콜을 이용하여 상호 컴퓨터 간에 파일 전송이 가능하다.
FTP 의 특성은 다음과 같다.
어떤 형태의 데이터든 전송이 가능하다.
파일을 다운로드 & 업로드 할 수 있다.
파일에 대한 권한을 설정할 수 있다.
ASCII 문자로 메시지가 교환된다.
파일을 검색하고 조회할 수 있다.
브라우저에서 파일을 다운로드 하게 되면 바로 FTP 프로토콜을 사용하게 된다.
FTP 통신 방식
HTTP 와는 다르게 FTP 는 클라이언트에서 서버로 한번 연결을 맺어놓은 상태에서 파일을 주고 받는 것이 아니라. 클라이언트에서 서버와의 연결이 맺어지면, 해당 연결은 명령어 입력을 위해 남겨놓고 (Control Connection), 파일을 보낼 때 새로운 연결을 추가하여 파일을 전송한다. (File Connection)
SMTP (Simple Mail Transfer Protocol)
메일 전송 프로그램이 서버로 메일을 보낼 때 사용하는 프로토콜이다.
오직 텍스트만 전송이 가능한 것이 특징이고, 스트림 방식을 이용하여 전송한다.
SMTP 는 한 개의 메시지를 해당 서버의 여러 수신자에게 보낼 수 있다는 특징이 있다.
상태 코드는 250 (수신 성공), 550 (수신자 못 찾음)
MIME (Multi-purpose Internet Mail Extensions)
SMTP 로 전송시 이메일에 텍스트 밖에 포함하지 못하는 단점을 보완하여, 메시지 안에 텍스트 이외의 데이터를 전송할 수 있는 프로토콜이다.
바이너리 파일을 출력 가능한 문자열 형태로 인코딩하고, 수신하는 부분에서 디코딩한다.
Base64 로 인코딩 하기는 하지만, 다른 형태의 인코딩도 사용할 수 있다.
인코딩 방식은 메시지의 헤더 안에 정의한다.
MIME 은 이메일 헤더에 2 줄을 추가하는데, 이메일에 MIME 이 사용되었는지 여부와 MIME 정보를 바디에 어떻게 포함시킬 건지 를 정의한다.