서론
지난번 JSP를 배우기 전에 1편에서 주소창을 통해 요청과 응답을 할 수 있다고 했다.
앞서 다룰 내용들을 설명하기 위해 적절한 예시가 존재한다.
우리가 네이버 웹툰을 보러 간다고 치자!
클라이언트는 서버에 '네이버웹툰 독립일기 보러갈거임' 이렇게 내용을 전송하는게 아니고
어떤 특정한 정보를 url에 담아 보낼것이다.
그럼 그때의 url 은 어떻게 바뀌느냐면
요청으로 titleId는 748105 번에서, 넘버는 187번째 게시글이고 일요웹툰인 페이지를 꺼내서
다시 클라이언트에게 전송해서 보여줄 것이다.
여기 no를 직접 조작하면 독립일기의 화수가 조정이 되는데
다만 화수가 조정이 된다고 해서 유료 결제해야 하는 페이지까지 뚫을 수 있는 것은 아니다.
이런식으로 URL을 통한 방식으로 접근도 가능하고, 또 특정 방식으로 접근 하려는 것을 차단하는 것도 가능하다.
사용자(클라이언트)는 웹 브라우저에 주소창에 보고싶은 웹툰의 주소를 입력한다.
(링크를 클릭하는 것은 html을 조금 하신분이라면 아시겠지만
주소창에 해당 링크 태그의 href 속성 값을 입력하는 것과 같다)
우리는 url의 구조가 어떻게 되는 것인지 컴퓨터를 공부하는 사람들은 취업을 위해 기본적으로 알 필요가 있다.
URL의 구조
url의 구조는 기본적으로 다음과 같다.
프로토콜://IP주소:포트번호/원하는 자원의 경로
http://DNS:port/URI
프로토콜이란?
프로토콜 (Protocol)은 통신 규칙을 의미한다.
그에 대한 예로 HTTP는 서버로 요청을 보내면 응답을 받는데
그 받는 것에 대한 통신 규칙을 표현할 필요성이 있어서 하는것이다.
http(80), ftp(20), https(443), telnet(23)... 등등 이렇게 여러가지 종류들의 통신 규약들이 있다.
바로 옆의 괄호 치고 숫자 있는것은 포트번호를 표현한 것이다.
각 프로토콜 마다 주로 사용하는 포트번호가 있다 (기본 포트 번호)
http -> 포트번호 80, ftp -> 포트번호 20...
포트번호란?
네트워크를 통해 도착한 데이터가 어떤 프로그램의 데이터인지 구분하기 위한 번호이다.
예를 들어 채팅 프로그램을 여러개 켜서 채팅을 하는데
카톡은 카톡에서만, 페이스북은 페이스북에서만 채팅이 오는 것은 우리에게는 매우 당연하다.
이 당연한 data의 구분을 포트번호가 역할을 대신하고 있다.
이 포트번호는 0 ~ 65535번 까지 있다
고정적으로 사용하는 잘 알려진 포트번호들이 존재한다.
잘 알려진 포트번호는 URL에서 생략이 가능하다.
그래서 위에서 주 포트번호를 사용하면 생략이 가능하다는 것이 바로 이말이다.
원래라면 우리가 사용하는 url의 도메인네임 바로 오른쪽에 : 땡땡 치고 포트번호가 붙어야 한다.
다만 해당 프로토콜의 주 포트번호를 사용한다면 IP주소 뒤의 :port를 생략할 수 있다
ex> http://www.naver.com:80, https://www.naver.com:443
하지만, 해당 포트번호를 반드시 사용할 필요는 없다
위 내용들은 http가 처음에 공표되었을 때의 문서 내용을 토대로 배운 것들을
공부한 것이기 때문에 꽤 정확한 정보라고 할 수 있다.
IP주소에 관하여...
IP주소를 지난 번 블로그 포스팅때 대부분의 사람들이 흔히 알고 있는 지식이니까 뭉뚱그려 넘어갔다.
여기서 다시 정리를 해보자면, IP주소는 전 세계 네트워크 상에서 어떤 한 컴퓨터를 찾아가기 위한 주소이다.
0.0.0.0 ~ 255.255.255.255 (4byte) 까지 1byte 가 8bit 이고 bit 하나 늘어날 때마다 2의 제곱수로 계산을 하니
4byte 는 256 의 4승 개의 IP 주소가 있다고 생각할 수 있겠다.
공인 IP가 있고 사설 IP들이 있는데, 공인IP(진짜 IP주소) 하나에 사설 IP(192.168...) 여러개를 붙여 사용한다
cmd에서 명령어 ipconfig 를 치면 사설 ip가 조회가 되는데
공인 ip를 조회하고 싶으면 네이버에 공인ip 조회를 검색해보면 된다.
HTTP 프로토콜
웹툰의 주소에 포함된 IP주소(또는 도메인)를 통해 해당 웹서버로 요청(request)을 보낸다.
네이버의 웹 서버는 요청을 받고, 클라이언트가 보낸 웹 주소(URL)에 포함된 웹툰 번호를 보고
알맞은 페이지를 생성(어떤 웹툰을 응답할지 결정하여)하여 응답(response)한다.
완성된 응답은 HTML, CSS, Javascript로 이루어져 있으며 (데이터만 응답하는 경우도 있음)
서버로 요청을 보낸 사용자의 웹 브라우저에서 해석된다.
웹 브라우저에 의해 해석된 응답은 클라이언트에게 보여지며,
클라이언트는 해당 페이지를 통해 새로운 다음 요청을 서버로 보낸다.
(계속 통신하는게 아니고 던지면 받고 던지면 받고 하는식)
HTTP 프로토콜은 서버에 다양한 방식(method)으로 요청을 보낼 수 있다.
같은 주소로 보내는 요청이라도 설정된 요청 메서드에 따라 각각 다른 작업을 수행할 수 있다
어떤 방식으로 할진 회의같은 것을 해서 결정이 된다.
이런걸로 crud를 구분하기도 하지만 나중에 좀 더 배워볼 예정이다.
GET : 데이터를 URL 뒤에 붙여서 요청을 보내는 방식. 주로 SELECT에 사용
POST : 데이터를 요청 객체의 body에 붙여서 보내는 방식. 주로 INSERT에 사용
PUT : 주로 UPDATE 작업에 사용
DELETE : 주로 DELETE 작업에 사용
'Java (국비지원 당시 공부했던 글) > JSP(+servlet)' 카테고리의 다른 글
jsp - 1. forward, redirect, attribute, scope (0) | 2022.07.26 |
---|---|
JSP를 배우기 전에... - 1. 주소창을 통해 요청 응답을 할 수 있다. (0) | 2022.07.24 |