배운 것
클라이언트 - 서버
웹 어플리케이션 서버 ( 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를 사용해 바이너리 데이터를 텍스트 데이터로 변환
느낀점/보완할 점
웹의 기초와 원리에 대해 배우고 있는데, 이론으로 듣기만 할 게 아니라 직접 타이핑해보며 손에 익혀야 더 뚜렷한 경험으로 남을 거 같다는 생각이 든다.
직접 해보자
혹시 잘못된 정보가 있다면 지적 부탁드려요
'아카이브 > 스프링' 카테고리의 다른 글
스프링의 정석 (@RequestParam, @ModelAttribute) (0) | 2021.12.27 |
---|---|
스파르타 코딩클럽 [ 웹개발의 봄, Spring ] - 1주차 (0) | 2021.12.26 |
스프링의 정석 (서블릿과 JSP) (0) | 2021.12.24 |
스프링의 정석 (관심사 분리와 MVC패턴) (0) | 2021.12.24 |
스프링의 정석 ( 원격 프로그램, HTTP 요청/응답 ) (0) | 2021.12.21 |