쿠키 쿠키는 사용자를 식별하고 세션을 유지하는 방식 중에서 가장 널리 사용되는 방식이다. 쿠키는 캐시와 충돌할 가능성이 있기 때문에, 대부분의 캐시나 브라우저는 쿠키에 있는 내용물을 캐싱하지 않는다. 쿠키의 동작 방식 쿠키는 서버가 사용자에게 붙이는 스티커와 같다. 사용자가 웹 사이트에 방문하면, 웹 사이트는 서버가 사용자에게 붙인 모든 스티커를 읽을 수 있다. 처음에 사용자가 웹 사이트를 방문하면 웹 서버는 사용자에 대해 알수 없다. 웹 서버는 사용자가 다시 돌아왔을 때, 해당 사용자를 식별하기 위한 유일한 값을 쿠키에 할당한다. 쿠키는 임의 이름=값 형태의 리스트를 가지고 그 리스트는 Set-Cookie 또는 Set-Cookie2 같은 HTTP 응답 헤더에 기술되어 사용자에게 전달된다. 쿠키는 어떤 ..
HTTP/2.0 HTTP/2.0은 서버와 클라이언트 사이의 TCP 커넥션 위에서 동작한다. 이때 TCP 커넥션을 초기화하는 것은 클라이언트이다. HTTP/2.0 요청과 응답은 길이가 정의된(최대 16383바이트) 한 개 이상의 프레임에 담긴다. 프레임들에 담긴 요청과 응답은 스트림을 통해 보내지는데, 한 개의 스트림이 한 쌍의 요청과 응답을 처리한다. 하나의 커넥션 위에 여러개의 스트림이 동시에 만들어질 수 있으므로 여러 개의 요청과 응답을 동시에 처리하는 것이 가능하다. 또한 스트림에 대한 흐름 제어와 우선순위 부여 기능도 제공한다. 서버는 클라이언트에게 필요하다고 생각하는 리소스라면 그에 대한 요청을 명시적으로 받지 않더라도 능동적으로 클라이언트에게 보내줄 수 있다. 스트림 스트림은 HTTP/2.0 ..
캐시란? 웹 캐시는 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치이다. 웹 요청이 캐시에 도착했을때 캐시된 로컬 사본이 존재한다면, 그 문서는 윈 서버가 아니라 그 캐시로부터 제공된다. 캐시의 이점 1) 불필요한 데이터 전송을 줄여서, 네트워크 요금으로 인한 비용을 줄여준다. 2) 네트워크 병목을 줄여준다. 대역폭을 늘리지 않고도 페이지를 빨리 불러올 수 있게한다. 3) 캐시는 윈 서버에 대한 요청을 줄여준다. 서버는 부하를 줄일 수 있고 더 빨리 응답할 수 있다. 4) 페이지를 먼 곳에서 불러올수록 시간이 많이 걸리는데, 캐시는 거리로 인한 지연을 줄여준다. 여러개의 클라이언트가 서버에 같은 문서를 요청할때, 서버는 클라이언트들에게 각각 한번씩 전송하게된다. 똑같은 바이트들이 네트워크를 통..
TCP Connection 모든 HTTP 통신은 TCP/IP를 통해 이루어진다. TCP/IP 통신은 패킷 교환 네트워크 프로토콜들의 계층화된 집합이다. 클라이언트 애플리케이션은 서버 애플리케이션으로 어디서든 TCP/IP 커넥션을 맺을 수 있다. 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간에 주고받은 메시지들은 어떠한 정보도 바뀌지 않고 안전하게 전달된다. URL을 입력하는 브라우저는 어떤 단계를 수행할까? (1) 브라우저가 www.test.com 이라는 호스트명을 추출한다. (2) 브라우저가 이 호스트 명에 대한 IP 주소를 찾는다. (ex) 202.42.71.8) (3) 브라우저가 포트번호 80을 얻는다. (4) 브라우저가 202.42.71.8의 80 포트로 TCP 커넥션을 생성한다. (5) 브라우저..
HTTP (Hypertext Transfer Protocol) 웹 어플리케이션, 웹 브라우저, 서버는 모두 HTTP를 통해 서로 대화한다. HTTP는 전 세계의 웹 서버로부터 이 대량의 정보를 빠르고, 간편하고, 정확하게 사람들의 PC에 설치된 웹 브라우저로 옮겨준다. HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에, 데이터가 지구 반대편에서 오더라도 전송 중 손상되거나 꼬이지 않음을 보장한다. 웹 서버와 클라이언트 웹 콘텐츠는 웹 서버에 존재한다. 웹 서버는 HTTP 프로토콜로 의사소통하기 때문에 보통 HTTP 서버라고 불린다. 이들 웹 서버는 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다. 클라이언트는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 ..
메시지란? HTTP 메시지는 HTTP 애플리케이션 간에 주고받은 데이터의 블록이다. HTTP는 원서버 방향을 인바운드로 하여 송신된다. 인바운드 : 메시지가 원 서버로 향하는 것 아웃바운드 : 모든 처리가 끝난 후, 메시지가 사용자에게 돌아오는 것 결과적으로 클라이언트->서버가 인바운드이고, 서버에서 처리 후 클라이언트로 다시 돌아갈때의 서버->클라이언트가 아웃바운드이다. HTTP 메시지는 단순한 데이터 구조화된 블록이며 각 메시지는 클라이언트로부터의 요청이나 서버로부터의 응답 중 하나를 포함한다. 메시지의 구조는 시작줄, 헤더블록, 본문 이다. 시작줄 : 이것이 어떤 메시지인가? 헤더블록 : 속성 본문 : 데이터 또는 빈값 시작줄과 헤더는 줄 단위로 분리된 아스키 문자열이다. 본문은 단순히 선택적인 데..
URL (Iniform Resource Locator) URL은 인터넷의 리소스(웹에서 사용되는 식별할 수 있는 모든 자원)를 가리키는 표준 이름이다. URL은 전자 정보 일부를 가리키고 그것이 어디에있고 어떻게 접근할 수 있는지 알려준다. 브라우저가 정보를 찾는데 필요한 리소스의 위치를 기리킨다. URL을 통해 사람이 HTTP 및 다른 프로토콜을 통해 접근할 수 있다. 사용자는 브라우저에 URL을 입력하고 브라우저는 화면 뒤에서 사용자가 원하는 리소스를 얻기 위해서 적절한 프로토콜을 사용하여 메시지를 전송한다. URL 구조 http://www.test.com/index.html 1) http : 웹 클라이언트가 리소스에 어떻게 접근하는지 알려주는 URL의 스킴이다. HTTP 프로토콜을 사용한다. 2) ..
도입부 많은 사람들이 웹을 통해 개인적인 업무를 보거나 개인적인 데이터에 접근한다. 웹은 이런 편리함을 제공해주지만, 모든 정보나 업무가 공용은 아니기 때문에, 허가된 사람만이 데이터에 접근하고 업무를 처리할 수 있어야한다. 웹 사이트에 있는 개인의 프로필이나 개인이 작성한 문서는 해당 소유자의 동의 없이는 권한 없는 사용자가 볼 수 없어야한다. 그러기 위해서는 서버가 사용자가 누구인지 식별할 수 있어야한다. 서버가 사용자가 누군지 알면, 그 사용자가 어떤 작업이나 리소스에 접근할 수 있는지 결정할 수 있다. 인증이란, 당신이 누구인지 증명하는 것이다. 보통 사용자 이름과 비밀번호를 입력해서 인증한다. HTTP는 자체적인 인증 관련 기능을 제공한다. HTTP의 인증요구/응답 프레임워크 HTTP는 사용자 ..
웹 서버란? 웹 서버는 HTTP 요청(request)을 처리하고 응답(response)을 제공한다. 웹 서버라는 용어는 웹 서버 소프트웨어와 웹페이지 제공에 특화된 장비 모두를 가리킨다. 모든 웹 서버는 리소스에 대한 HTTP 요청을 받아서 콘텐츠를 클라이언트에게 돌려준다. 1) 웹 서버는 HTTP 및 그와 관련된 TCP 처리를 구현한 것이다. 2) 웹 서버는 자신이 제공하는 리소스를 관리하고 웹 서버를 설정, 통제, 확장하기 위한 관리 기능을 제공한다. 3) 웹 서버는 HTTP 프로토콜을 구현하고, 웹 리소스를 관리하고, 웹 서버 관리기능을 제공한다. 4) 웹 서버는 TCP 커넥션 관리에 대한 책임을 운영체제와 나눠갖는다. 5) 다목적 소프트웨어 웹서버 : 네트워크에 연결된 표준 컴퓨터 시스템에서 작동..