본 게시글은 를 읽고 공부를 위해 기록해둔 게시글입니다. -- 이제 남은 파트가 엔티티와 인코딩, 국제화 이런것들인데 그냥 핵심 위주로 간략하게만 정리하고 마무리 하고자 함. HTTP는 이미지, 텍스트, 동영상 등 다양한 포맷의 데이터들을 실어나른다. 이를 브라우저에서 잘 식별하고 처리하기 위해서 "잘 라벨링된 엔티티"를 사용한다. HTTP 메시지를 운송 시스템의 컨테이너라고 생각한다면, HTTP 엔티티는 실질적인 컨테이너의 화물이다. 엔티티는 엔티티 헤더와 엔티티 본문으로 구성된다 Content-Type: 엔티티가 전달하는 객체의 종류, 타입 Content-Length: 전달되는 메시지의 길이나 크기 Content-Language: 전달되는 객체와 가장 잘 대응되는 자연어 Content-Encoding..
본 게시글은 서적을 읽고 공부를 위해 요약한 게시글입니다 인증, 다이제스트 인증 이 파트 할까말까 고민했는데 그냥 하기로 했다 --- # 인증 인증은 내가 누구인지를 증명하는 것이다. 1. 클라이언트: 문서를 주세요! (GET) 2. 서버: 문서를 받으려면 인증을 먼저 해주세요 (401 Unauthorized 응답 + WWW-Authenticate 헤더) 3. 클라이언트: 인증 정보를 서버로 준다 (GET + Authorization 헤더에 인증 파라미터를 담아 전송) 4. 서버: 인증 확인 이후 문서를 클라이언트에게 제공한다 (200 OK 응답 + 문서 전송) * 클라이언트가 Authorization 헤더에 인증정보를 담아 전송할 때, base-64 방식으로 인코딩하여 전송한다. "base-64는 바이..
* 본 게시글은 서적을 읽고 정리한 글입니다. # 쿠키를 알아보기 전에 사전지식 타임 * HTTP는 무상태(Stateless) 프로토콜이다. Stateless, 무상태 -> 연결 자체에 대한 정보를 가지지 않으며, 매 요청은 일회성이고 독립적으로 처리된다. - 클라이언트의 세션 정보를 서버에 저장하지 않는다 - HTTP, UDP가 대표적인 Stateless 프로토콜. 장점: 서버 변환, 증설이 자유롭다(Scaling) - 서버에 세션정보를 담고있지 않기때문에 그냥 슥 옮기면 된다. -> 급작스러운 트래픽이 몰릴때, 로드밸런싱에 용이. 단점: HTTP 요청을 보낼때마다 자신임을 알려주기 위한 추가적인 데이터를 보내줘야한다. (이때 사용하는게 "쿠키") Stateful, 상태 유지(?) - 서버가 클라이언트..
* 본 게시글은 서적을 읽고 정리한 글입니다. ---- 웹은 이제 단순히 정적인 HTML 파일을 보여주기만 하는 시대는 지났다. 사람들은 더 복잡한 리소스(동적인 HTML 등)를 사용하기를 원한다. 그런데 이 복잡한 리소스를 한개의 애플리케이션으로 처리하기는 이제 불가능해졌다. 이제 HTTP 외에 다른 프로토콜을 사용하는 애플리케이션과도 같이 연결해서 사용하고 싶다. (대표적으로 FTP 서버) 이때 사용되는 기술(?)이 대표적으로 [게이트웨이 & 터널] 이다. 게이트웨이: 서로 다른 프로토콜과 애플리케이션 간의 HTTP 인터페이스. 터널: HTTP 커넥션을 통해서 HTTP가 아닌 트래픽을 전송하는데 사용한다. # 게이트웨이 - 게이트는 리소스와 애플리케이션을 연결하는 역할을 한다. - 애플리케이션은 게이..
* 본 게시글은 책을 읽고 정리한 글입니다. # 캐시 웹 캐시는 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치이다. - 웹 요청이 캐시에 도착했을 때, 캐시된 로컬 사본이 존재한다면 그 문서는 원 서버가 아니라 그 캐시로부터 제공된다. 1. 불필요한 데이터 전송을 줄인다. 2. 네트워크 병목을 줄여준다. 대역폭을 늘리지 않고도 페이지 로딩 속도 개선 3. 캐시는 원 서버에 대한 요청을 줄여준다 4. 거리로 인한 지연을 줄여준다 [#1. 불필요한 데이터 전송을 줄인다] 복수의 클라이언트가 자주 쓰이는 원 서버 페이지에 접근할 때, 서버는 같은 문서를 클라이언트에게 각각 전송하게 된다 - 똑같은 바이트, 똑같은 데이터가 네트워크를 통해 반복적으로 이동한다. -> 불필요한 중복 전송은 네트워크 대..
* 본 게시글은 서적을 읽고 정리한 글입니다 # 웹서버 https://sedangdang.tistory.com/110?category=1011258 (참고) Java Spring 공부 정리 - 1 | 웹 서버, WAS 기본 sedangdang.tistory.com 웹 서버(Web Server) + 웹 애플리케이션 서버(Web Application Server)의 구성 웹서버는 HTTP 기반, 정적 리소스 제공하는 역할 (APACHE, NGNIX) 웹 애플리케이션 서버는 HTTP 기반, 애플리케이션 로직을 수행하는 역할 (Tomcat) 1. 커넥션을 맺는다 - WebServlet 연결하기 2. 요청을 받는다 (HttpServletRequest) 3. 요청을 처리한다 4. 리소스에 접근한다 5. 응답을 만든..
* 본 게시글은 서적을 적극 참고하여 작성하였습니다. # TCP 커넥션 전세계 모든 HTTP 통신은 패킷 교환 프로토콜들의 계층화된 집합인 를 통해 이루어진다. - TCP 커넥션은 메시지가 손실되거나 순서 변경 없이 온전하게 전송되는 것을 보장하는 신뢰할만한 통신방식이다. 1. 브라우저가 URL에 담긴 호스트명 추출 2. DNS 서버를 거쳐 자연어로 적힌 호스트명을 IP주소로 변환 3. 포트번호 확인 4. 브라우저와 서버 간 TCP 커넥션을 연결한다 (3 hand-shake) 5. 브라우저와 서버 간 요청 - 응답 메시지를 주고받는다 6. 커넥션 종료. - HTTP는 기존의 TCP/IP 4계층을 이용하는 방식 (IP + TCP + HTTP) - HTTPS는 HTTP와 TCP 사이에 "SSL" 암호화 계층..
# HTTP(HyperText Transfer Protocol) 전 세계의 웹 애플리케이션, 서버, 브라우저는 모두 HTTP를 통하여 서로 데이터(이미지, 영상, html 파일 등..)를 주고받는다. 따라서 HTTP를 알아야 웹의 흐름을 제대로 이해할 수 있다. HTTP가 전송의 신뢰성을 보장해줌으로써 개발자들은 인터넷 전송 결함에 대한 걱정 없이 오로지 개발에만 집중할 수 있게 해준다. * 리소스(Resource): 웹 서버 파일 시스템의 정적 파일. 웹 리소스는 식별 가능한 대상으로, 디지털이거나, 물리적이거나, 추상적인 대상이며 URI를 통하여 식별한다. * 미디어 타입 (MIME Type), Content-Type HTTP는 수많은 데이터 타입의 자료들을 전송하는데 사용된다. 이를 각각 구분하기 ..