[JSP] 웹 프로그래밍 기초
1. 웹과 웹 프로그래밍
1) URL
웹 브라우저의 상단, 주소표시줄에 https://helena90-study.tistory.com 과 같이 입력하면 원하는 웹 페이지로 이동할 수 있다.
웹 페이지의 주소를 의미하는 이 문자열을 URL이라고 부른다.
URL은 Uniform Resource Locator (통합 자원 주소)의 약자이다.
URL은 웹페이지 ( 브라우저에 표현된 화면)의 주소이다.
URL의 구성
https://helena90-study.com/teststore/nomember/join.jsp?username='apple'
- 프로토콜 -브라우저와 서버가 내용을 주고받을 때 사용하는 '통신규약'을 의미하다.
- 서버 이름 - 웹 페이지 서버의 이름이다. '180.33.231.534'처럼 IP주소를 입력할 수 있고, 'www.google.com'처럼 도메인의 이름을 입력할 수 있다.
- 경로 - 웹 페이지의 상세한 주소를 의미한다. 서버의 이름으로 접근할 수 있는 화면이 '메인'화면이라면, 메인이외의 더 자세한 화면들을 표시하기 위해 사용된다.
- 쿼리문자열 - 웹 페이지에서 어떤 기능을 이용하거나, 화면을 구성하거나, 다음 화면으로 넘겨주어야 할 때 필요한 값을 주소에 담아 넘겨주는 경우가 발생한다. 위 샘플 URL을 이용하여 추가로 설명하면, 개발자는 이 URL로 이동할 때 username에 apple라는 값을 함께 가지고 와서 화면을 구성할 때 위 값을 이용하여 apple를 화면에 출력하거나, 보이지 않는 요소에 apple를 넣어두었다가 사용자의 액션에 따라 움직이도록 처리할 수 있다.
2) 웹 브라우저와 웹 서버
- 웹 브라우저에 URL을 입력하면, 웹서버가 웹페이지를 제공한다.
이 때, 웹서버에서 URL에 해당하는 웹 페이지를 가져오기 위해서는 아래의 절차를 거쳐야 한다.
- 웹 페이지를 출력하는 과정
[1] 웹 브라우저가 DNS에 서버이름을 보내며 IP주소를 요청한다.(요청)
[2] DNS가 서버의 이름에 맞는 IP주소를 찾아 웹 브라우저에 보낸다.(응답)
[3] 웹 브라우저가 웹 서버에게 이 IP주소와 다음경로, 쿼리 문자열의 값으로 이루어진 URL을 보내 웹 페이지를 요청한다(요청)
[4] 웹 서버는 HTML파일을 보내준다(응답).
- IP주소
웹 브라우저와 웹 서버는 서로 다른 컴퓨터에 위치한다.
네트워크 상에서는 이 컴퓨터의 위치를 알고 있어야 사용자가 원하는 데이터를 가져와 표현할 수 있다. 웹 서버가 실행중인 컴퓨터, 인터넷을 통해 연결된 모든 컴퓨터들은 고유한 주소를 가지고 있는데, 이 주소를 IP주소라고 말한다.
IP주소는 127.0.0.1 처럼 숫자로 구성되어있다. 이런 숫자는 외우기 어려워서, " www.google.com"같은 도메인 이름을 사용한다.
- DNS(Domain Name System)는
웹 브라우저와 웹 서버가 연결할 때, 사용자의 편의를 돕기 위해 문자열로 만들어진 서버의 이름을 IP로 변환해야한다.
도메인은 사용자가 쉽게 주소를 기억하게 만들기 위해 사용되지만, 컴퓨터는 IP주소로 해당 컴퓨터를 찾아간다.
DNS는 도메인에 해당하는 IP주소를 가지고있는 전화번호부와 같은 역할을 한다.
웹브라우저가 도메인을 DNS에 보내면 IP주소를 응답한다.
- 포트(port)
한개의 컴퓨터에서는 웹 서버 프로그램이나 동영상 스트리밍 서버 , 채팅서버 등 여러개의 서버 프로그램을 실행할 수 있다.
IP주소는 연결할 컴퓨터를 구분하는데에만 사용된다.
접속한 컴퓨터에서 다양한 서버 프로그램을 제공할 때, 특정 프로그램을 사용하기 위하여 '포트'를 사용한다.
( 각 서버 프로그램은 클라이언트가 연결할 떄 다른 서버 프로그램과 구분할 수 있도록 포트를 사용한다. )
포트는 8080처럼 숫자로 구성된 번호이다.
프로그램마다 구분되는 포트 번호를 사용한다.
웹 서버에서 사용하는 기본 포트 번호는 80이다. 그래서 URL에서 프로토콜이 http이면 항상 80번 포트로 연결한다.
- 클라이언트와 서버
네트워크 프로그램에서 요청하는 쪽을 '클라이언트'라고 한다.
요청을 받아 기능이나 데이터를 응답하는 쪽을 '서버'라고 부른다.
클라이언트는 어떤 상황이든 '요청'하는 역할을 한다면 언제든 클라이언트로 명명할 수 있다.