inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모든 개발자를 위한 HTTP 웹 기본 지식

비 연결성(connectionless)

자원에 관하여 질문 있습니다.

348

shef

작성한 질문수 22

2

stateless에서는 클라이언트가 현재 무엇을 사고 싶은지, 어떤 지불방법을 했는지 등등 고객의 상태를 저장하지 않음으로써 자원을 아끼고,

connectionless는 클라이언트의 연결을 유지하기 위한 IP주소나 PORT정보들을 저장하지 않음으로써 자원을 아낀다고 생각을 했습니다.

즉 여기서 서버의 자원이라는 것은 저장공간이라고 이해를 했는데요.

이렇게 클라이언트들의 상태 정보나 IP, PORT 정보를 저장하는데 그렇게 많은 공간이 필요한가요?? 이러한 단순한 정보들이 몇만개 있다고해서 그렇게 큰 공간을 차지할 것 같다고 생각이 되지 않아서 질문 드립니다.

단순히 생각해서 한 클라이언트와 연결을 유지하는데 100바이트의 저장 공간이 필요하다고 하면 10만대와 연결하면 10메가 바 이트정도 필요할 것 같은데 .. 

자원 network connectionless stateless

답변 1

5

나무늘보

안녕하세요. 손지우 님, 공식 서포터즈 codesweaver 입니다.
.

자원의 개념은 조금 더 포괄적입니다. CPU의 연산 수, 메모리 사용량, 보조 기억장치 사용량 모두 자원에 포함됩니다.

.

세션 파일 각각이 차지하는 용량문제보다, 세션으로 무언가를 관리해야 하는 점이 부담이라고 생각하시면 됩니다. 보통의 세션은 보조기억장치(HDD, SSD)에 보관하게 됩니다. (서버 분산이 필요한 경우 DB에서 관리하기도 합니다). 

.

아시다시피 HDD, SSD는 메모리(램)에 비해 터무니 없이 느립니다. 그런데 모든 데이터는 기본적으로 램에 적재되어야만 CPU가 처리할 수 있습니다. 그래서 이런 세션파일을 메모리에 적재하는 프로세스가 계속 발생합니다.

.

이 때 세션에서 관리하는 데이터가 많으면 많을수록 데이터를 램에 적재하는 프로세스는 계속 무거워집니다. 서버에서는 이런 작업이 수천번 이상 이루어질 수 있는데 이 횟수가 늘어나면 늘어날수록 비효율적이 됩니다. 그래서 가급적 서버는 클라이언트에 관한 정보를 들고 있지 않는게 자원적으로 좋다고 말하는 것입니다.

(예를들면 상품 리스트를 보기 위해 클릭이 세번 필요한 A가 있고, 한번 필요한 B 사이트가 .있다고 하겠습니다. 천명의 고객이 A사이트를 이용하면 리스트 이동까지 총 3천번의 클릭이 필요합니다. 그 중간 클릭 과정도 계속 서버에서 데이터를 요청받아야 한다고 생각하면 최소 3천번의 리퀘스트가 발생합니다. B사이트는 반면에 최소 1천번의 데이터를 요청하겠지요. 요점은 사소한 차이도 누적되면 어마어마한 차이가 난다는 것입니다)


감사합니다.

0

shef

세션 파일은 TCP/IP 연결과 끊김에 상관없이 서버에서 클라이언트의 정보(ex로그인)를 유지해야할 때 생성해서 저장하는 것이라고 생각하고 있었는데요.
그게 아니라 세션 파일은 TCP/IP연결이 되면 무조건 생기고 클라이언트의 상태 정보를 저장하다가 TCP/IP 연결이 끊어지면 삭제되는데 , 로그인과 같은 기능을 위해서는 이 때 세션 파일을 삭제하는게 아니라 계속 유지한다라고 이해해도 될까요? 

5

나무늘보

안녕하세요 손지우님! 

.

말씀하신 내용이 맞습니다. 세션은 서버에서 클라이언트 정보를 유지해야 할 때 생성하여 보관합니다. 말씀하신 로그인 기능이 대표적으로 세션을 사용하는 예 입니다.

.

서버에서 클라이언트 정보를 유지해야 할 경우 메모리/보조기억장치/DB 에 세션을 생성하고 이 아이디를 사용자 쿠키에 심어둡니다. (도메인 기반으로 작동) 이후 클라이언트는 해당 도메인에 접속할때마다 쿠키를 항상 전달합니다. 그러면 서버에서 이 쿠키에 심어진 세션 아이디를 참조하여 메모리/보조기억장치/DB에 위치한 세션 데이터를 로드 하는 과정을 거치게 됩니다. 
.

감사합니다.

캐시 관련 질문입니다.

0

616

1

ETag 질문입니다.

0

727

1

캐시의 설정 주체

0

534

1

영속쿠키 질문입니다.

0

503

1

협상(accept-language)

0

686

1

에러 코드의 구현 주체

0

438

1

웹서버가 구현?

0

596

1

필수헤더?

1

560

1

Host와 Port

0

774

1

다른 도메인이 같은 포트를 사용하는 경우

0

1259

1

표준 헤더와 임의 헤더

0

534

1

POST 등록 후 Location 헤더

0

569

1

프로세스의 상태가 변경되는 경우에 Post 사용

1

1809

1

지속연결에 대해서.

0

692

1

제가 아는 쿼리 파라미터 개념이 맞는지 확인 부탁드립니다.

0

593

1

캐시 내용중 no cache 일때

0

358

1

DNS 서버 관련 질문

1

748

1

캐시로 저장된 파일의 유효기간은 얼마나 되나요?

0

662

1

웹브라우저 요청흐름 질문입니다.

0

847

1

캐시 무효화 질문드립니다

0

561

1

리다이렉트와 리다이렉션 차이?

0

2596

1

쿠키 및 세션 관련 질문드립니다

0

587

1

HTTP 메서드 ( HTTP 메서드의 속성 파트 ) 강의의 멱등 내용에 대하여 질문드립니다.

0

1645

1

header 나 gzip으로 데이터 보낼떄 데이터는 base64로 인코딩되서 가는 건가요?

0

480

1