복붙노트

[SPRING] http가 상태가 없다고 할 때의 의미는 무엇입니까?

SPRING

http가 상태가 없다고 할 때의 의미는 무엇입니까?

나는 웹용 자바를 실증하고 있는데 http가 무국적이라고 언급하고있다. 이것이 의미하는 바는 무엇이며 프로그래밍에 어떤 영향을 미치는지

나는 또한 스프링 프레임 워크를 연구 중이 었는데, 거기에는 콩이 상태가 바뀌면서 내부 콩으로 선언되어야한다고 언급되어있다. 그게 무슨 뜻이야?

해결법

  1. ==============================

    1.서버와 클라이언트 사이의 실제 전송 프로토콜 인 HTTP는 호출간에 아무 것도 기억하지 않기 때문에 "상태 비 저장"입니다. HTTP를 통해 액세스되는 모든 리소스는 스레드 연결이없는 단일 요청입니다. HTML 페이지에 HTML 페이지가있는 경우, 동일한 HTML 페이지에 세 개의 태그가 포함되어 있으면 네 개의 TCP 연결이 협상되어 열리고 네 개의 데이터 전송과 네 개의 연결이 닫힙니다. 프로토콜 수준에서 서버에 보관 된 상태가 전혀 없으므로 서버가 들어올 때 서버가 사용자에 대해 알게됩니다.

    서버와 클라이언트 사이의 실제 전송 프로토콜 인 HTTP는 호출간에 아무 것도 기억하지 않기 때문에 "상태 비 저장"입니다. HTTP를 통해 액세스되는 모든 리소스는 스레드 연결이없는 단일 요청입니다. HTML 페이지에 HTML 페이지가있는 경우, 동일한 HTML 페이지에 세 개의 태그가 포함되어 있으면 네 개의 TCP 연결이 협상되어 열리고 네 개의 데이터 전송과 네 개의 연결이 닫힙니다. 프로토콜 수준에서 서버에 보관 된 상태가 전혀 없으므로 서버가 들어올 때 서버가 사용자에 대해 알게됩니다.

    HTTP 1.1은 어떤 경우에도 HTTP 1.0에 대해 사실입니다 .HTML 1.1은 진정으로 상태 비 저장 프로토콜이 야기하는 피할 수없는 성능 문제 때문에 다양한 종류의 지속적인 연결 메커니즘을 추가합니다. HTTP를 상태 저장 (stateful)하게 만들고, 순수한 상태가 아닌 상태가 아닌 더티 스테이트가되도록 만듭니다.

    차이점을 이해하는 데 도움이되도록 Telnet 또는 SSH와 같은 프로토콜은 무국적이라고 상상해보십시오. 원격 파일의 디렉토리 목록을 가져 오려면 하나의 원자 조작으로 연결, 사인 인하 고 디렉토리로 변경하고 ls 명령을 실행해야합니다. ls 명령이 디렉토리 내용 표시를 완료하면 연결이 닫힙니다. 특정 파일의 내용을 표시하려면 다시 연결하고 로그인 한 다음 디렉토리로 변경하고 cat 명령을 실행하십시오. 파일을 표시하는 명령이 완료되면 연결이 다시 닫힙니다.

    그렇게 보면 Telnet / SSH의 렌즈가 꽤 어리석은 것 같지만 그렇지 않습니까? 음, 어떤면에서는 그것이 어떤면에서 그리고 어떤면에서는 그렇지 않습니다. 프로토콜이 상태 비 저장 (stateless) 일 때, 서버는 꽤 좋은 최적화를 할 수 있고 데이터는 쉽게 퍼질 수 있습니다. 무 상태 프로토콜을 사용하는 서버는 매우 효과적으로 확장 될 수 있으므로 실제 개별 데이터 전송은 매우 느릴 수 있습니다 (TCP 연결 열기 및 닫기는 저렴하지 않습니다!). 전체 시스템은 매우 효율적이며 많은 사용자에게 확장 될 수 있습니다.

    그러나...

    정적 웹 페이지를 보는 것 이외의 다른 일을하고 싶은 거의 모든 세션과 상태가 포함됩니다. HTTP가 원래 목적 (과학 논문과 같은 정적 정보 공유)으로 사용될 때 무국적 프로토콜은 많은 의미가 있습니다. 웹 응용 프로그램, 온라인 상점 등의 용도로 사용할 때 무국적 성향은 본질적으로 상태 보존적인 활동이기 때문에 귀찮습니다. 결과적으로 사람들은 매우 빠르게 비 상태 프로토콜의 최상위에서 상태를 채우는 방법을 생각해 냈습니다. 이러한 메커니즘에는 URL에 인코딩 상태와 같은 쿠키와 같은 것들이 포함되어 있습니다. 서버가 숨겨진 상태 요청과 같은 데이터를 기반으로 데이터를 동적으로 실행하게하는 등 ... 더 현대적인 것을 포함하여 웹 소켓과 같은 것들.

    다음은 개념을 더 깊이 이해할 수있는 몇 가지 링크입니다.

  2. ==============================

    2.HTTP는 상태를 저장하지 않습니다. 즉, HTTP를 사용하면 종점이 자신을 비롯하여 "기억하지"않습니다. 그것은 국가가 없습니다. 이것은 데스크탑 응용 프로그램과는 대조적입니다. 양식을 가지고 있고 다른 양식으로 이동 한 다음 되돌아 가면 응용 프로그램을 종료하지 않는 한 상태가 유지됩니다.

    HTTP는 상태를 저장하지 않습니다. 즉, HTTP를 사용하면 종점이 자신을 비롯하여 "기억하지"않습니다. 그것은 국가가 없습니다. 이것은 데스크탑 응용 프로그램과는 대조적입니다. 양식을 가지고 있고 다른 양식으로 이동 한 다음 되돌아 가면 응용 프로그램을 종료하지 않는 한 상태가 유지됩니다.

    일반적으로 웹 응용 프로그램에서 상태를 유지하기 위해 쿠키를 사용합니다.

  3. ==============================

    3.상태 비 저장 프로토콜은 서버가 다중 요청 기간 동안 각 사용자에 대한 정보 또는 상태를 보유 할 것을 요구하지 않습니다. 예를 들어, 웹 서버가 사용자의 웹 페이지 내용을 사용자 정의해야하는 경우 웹 응용 프로그램은 사용자의 진행 상황을 페이지별로 추적해야 할 수 있습니다.

    상태 비 저장 프로토콜은 서버가 다중 요청 기간 동안 각 사용자에 대한 정보 또는 상태를 보유 할 것을 요구하지 않습니다. 예를 들어, 웹 서버가 사용자의 웹 페이지 내용을 사용자 정의해야하는 경우 웹 응용 프로그램은 사용자의 진행 상황을 페이지별로 추적해야 할 수 있습니다.

    일반적인 해결책은 HTTP 쿠키를 사용하는 것입니다. 다른 방법으로는 서버 측 세션, 숨겨진 변수 (현재 페이지가 양식 인 경우) 및 URI 인코딩 매개 변수를 사용하는 URL 재 작성 (예 : /index.php?session_id=some_unique_session_code)이 있습니다.

    이리

  4. ==============================

    4.HTTP는 각 명령이 이전 명령과 관련없이 독립적으로 실행되기 때문에 상태 비 저장 프로토콜이라고합니다.

    HTTP는 각 명령이 이전 명령과 관련없이 독립적으로 실행되기 때문에 상태 비 저장 프로토콜이라고합니다.

    HTTP의이 단점은 쿠키를 포함한 여러 가지 새로운 기술에서 해결되고 있습니다.

  5. ==============================

    5.무언가가 무국적이라고 말한 것은 대개 서버가 상호 작용 사이의 상태를 추적한다고 가정 할 수 없다는 것을 의미합니다.

    무언가가 무국적이라고 말한 것은 대개 서버가 상호 작용 사이의 상태를 추적한다고 가정 할 수 없다는 것을 의미합니다.

    기본적으로 HTTP 프로토콜은 진정한 상태 비 저장 서버라고 가정합니다. 모든 요청은 독립적 인 요청으로 처리됩니다.

    실제로 이것은 일부 서버 (대부분)가 요청의 추적 쿠키를 사용하여 서버의 일부 상태를 특정 클라이언트와 일치 시키도록 수정되었습니다. 이는 쿠키가 작동하는 방식으로 작동하기 때문에 (쿠키가 클라이언트에 설정되면 각 후속 요청에서 서버에 게시됩니다).

    기본적으로 무국적자가 아닌 서버는 규모에있어 장애가됩니다. 특정 브라우저의 모든 요청을 동일한 인스턴스로 라우트하거나 상태의 백엔드 복제를 수행해야합니다. 이것은 일반적으로 응용 프로그램의 크기를 조정할 때 제한 요소입니다.

    상태를 추적하기위한 다른 솔루션이 있지만 (레일스의 암호화 된 상태 쿠키 참조) 근본적으로 성장하려는 경우 서버에서 상태를 추적하지 못하도록하는 방법을 찾아야합니다.

  6. from https://stackoverflow.com/questions/4913763/what-does-it-mean-when-they-say-http-is-stateless by cc-by-sa and MIT license