본문 바로가기
아카이브/스프링

스프링의 정석 ( 클라이언트-서버, 웹 어플리케이션 서버, 텍스트 파일, 바이너리 파일 )

by nineteen 2021. 12. 22.
반응형

배운 것

클라이언트 - 서버

웹 어플리케이션 서버 ( WAS )

텍스트 파일, 바이너리 파일

 

 

 

내용 정리

브라우저에서 URL을 입력해 요청을 하면, 해당 서버에 있는 톰캣이 그 요청을 받아 객체를 생성하고 요청정보를 나눠서 담는다.

생성한 객체를 연결된 메소드의 매개변수로 제공

 

매개변수는 우리가 원하는 대로 적을 수 있음 (스프링이 알아서 처리해주기 때문)

우리가 필요한 것만 매개변수로 적으면, 스프링이 알아서 메소드의 매개변수에 해당하는 객체, 값을 넘겨준다.

 

EX) HttpServletRequest request   -- >   이 reqeust객체를 통해 요청의 원하는 정보를 얻을 수 있다

 

 

클라이언트 : 서비스를 요청하는 애플리케이션 (or 컴퓨터)

서버 : 서비스를 제공하는 애플리케이션 (or 컴퓨터)

 

서버는 어떤 서비스를 제공하는 지에 따라 구분된다.

    - 웹 서버, 파일 서버등등

 

만약 1대의 pc에 여러 서버(웹 서버, 파일 서버등)이 있다면 어떻게 접근할까?

    - ip주소만으로는 어떤 서버에 접근해야할 지 알 수 없음

    -> 요청 시, ip주소:port번호를 같이 써줘야 함

 

port번호를 통해 어떤 서버에 요청을 보내는 건 지 알 수 있음!

웹 서버는 기본이 80포트, 생략이 가능(80이 자동으로 붙음)

 

1포트에 1서버만이 가능하고, 서버가 포트에 연결되어 있어야 함(바인딩)

 

 

웹 서버

    - 웹을 서비스하는 것

 

웹 어플리케이션 서버 ( WAS )

    - 웹 어플리케이션을 서비스하는 것

    - 서버에 프로그램을 설치해놓고, 클라이언트가 이 프로그램을 사용할 수 있게 하는 것

    - EX) 톰캣

 

왜 필요할까?

-> 클라이언트에 프로그램을 설치하면 '업데이트' 시, 많은 PC를 다 업데이트 해야 함

그런데, 서버에 프로그램을 설치하면, 서버만 업데이트하면 되니까 편리해지는 장점

 

클라이언트는 서버에게 실행결과만 받으면 된다

 

 

텍스트 파일

    - 문자만 저장되어 있는 파일

    - 숫자를 문자로 변환 후 쓴다

 

 

바이너리 파일

    - 문자와 숫자가 저장되어 있는 파일

    - 데이터를 있는 그대로 읽고 쓴다

 

 

바이너리 파일은 파일에 그대로 저장하면 되지만, 텍스트 파일은 숫자를 문자로 바꿔서 저장

 

HTTP는 텍스트 기반 프로토콜, 그렇다면 바이너리 파일은 전송할 수 없는 걸까?

 

-> 텍스트 기반 프로토콜(HTTP)에서 바이너리 데이터를 전송하기 위해 MIME이 고안

HTTP의 Content-Type헤더에 사용, 데이터의 타입을 명시

 

 

Base64

    - 바이너리 데이터를 텍스트 데이터로 변환할 때 사용

    - '0'~'9', 'A'~'Z', 'a'~'z', '+', '/' 모두 64개 6비트의 문자로 구성

    - 바이너리 데이터를 6비트씩 잘라서 변환할 때 사용

 

Base64는 어떤 용도일까?

-> Base64는 모든 인코딩 공통이기 때문에 6비트를 가지고 변환을 하면 서로 다른 OS인 PC끼리 데이터 전달에 문제가 없음

 

 

바이너리 데이터를 텍스트 기반인 HTTP프로토콜로 보내는 방법

    - MIME타입을 지정해서 바이너리 파일이라는 것을 명시하고 전송

    - Base64를 사용해 바이너리 데이터를 텍스트 데이터로 변환

 

 

 

느낀점/보완할 점

 

웹의 기초와 원리에 대해 배우고 있는데, 이론으로 듣기만 할 게 아니라 직접 타이핑해보며 손에 익혀야 더 뚜렷한 경험으로 남을 거 같다는 생각이 든다.

직접 해보자

 

 

 

 

 

혹시 잘못된 정보가 있다면 지적 부탁드려요