1. URI, URL, URN
URI는 Uniform Resource Identifier의 약자이다.
확인하는 방법?을 통합하여 URI라고 부르는 것 같다.
확인하는 방법에는 URL과 URN이 있다.
URN(Resource Name)
자원을 확인할 때? 이름을 부여한다.
이름으로 부여하게 되면 찾기 정말 어렵기 때문에 거의 사용하지 않는다.
URL(Resource Locator)
우리가 평상시에 사용하던 URL이 이 URL이다.
URL은 자원이 있는 위치를 지정한다.
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com :443 /search ?q=hello&hl=ko
프로토콜, 호스트명, 포트 번호, path, 쿼리 피라미터로 이루어져 있다.
여기서는 https이기 때문에 포트 번호 443을 가리킨다.
그래서 우리가 위의 주소를 들어가려면 아래와 같은 과정을 거치게 된다.
웹 브라우저에서 DNS(구글 주소)를 조회하여 IP주소를 얻는다.
그리고 PORT번호는 https이므로 443이다.
HTTP 메시지를 이제 서버에게 보내야한다.

처음에 파란색은 HTTP 메시지이다.
그것을 이제 TCP/IP가 출발지 IP, PORT, 목적지 IP, PORT를 가지고 있는 TCP/IP 패킷으로 감싸고 보낸다.
서버는 이제 그 감싸져있던 것들을 풀고 안에 있는 메세지를 읽는다.
메세지를 읽고 나서 응답 메시지를 보내게 되고, 웹 브라우저는 해당 주소를 띄우게 된다.
아래는 TCP/IP패킷 사진이다

2. HTTP
HTTP 특징
클라이언트 서버 구조
stateless 프로토콜, 비연결성
http 메시지
단순함, 확장 가능
이 있다.
2.0.1. 클라이언트 서버 구조
클라이언트 서버 구조는 Request Response구조라고 할 수 있다.
클라이언트는 서버에 요청을 보내고, 응답을 대기한다.
서버가 클라이언트의 요청에 대한 결과를 만들어서 응답한다.
2.0.2. stateless 프로토콜
무상태 프로토콜이란 서버가 클라이언트의 상태를 보존하지 않는 것이다.
연결을 끊으면 그 즉시 자료를 삭제하는 것이다.
서버 확장성이 높지만 클라이언트가 계속해서 추가 데이터를 전송해줘야한다.
2.0.3. stateless vs stateful
상태 유지는 데이터를 전송하면서 중간에 다른 서버로 바뀌면 안된다.
왜냐하면 바뀐 서버는 현재 어떤 상태인지 모르기 떄문이다.
(그래서 만약에 다른 서버로 바뀐다면 상태 정보를 다른 서버에게 미리 알려줘야 한다.)
만약에 클라이언트 A가 서버 A와 결제 시스템을 통신한다.
stateful이므로 서버 1로만 통신하고 있다. 그러다가 서버1이 고장나게 되면
결제를 하게될 때 처음부터 다시 결제해야하는 상황이 생길 수 있다.
무상태는 서버가 바뀌어도 된다.
왜냐하면 어차피 클라이언트가 처음부터 모든 상태 정보를 제공하기 때문에 다른 서버로
바뀌어도 어떤 상태인지 알 수 있기 때문이다.
그래서 무상태는 무한한 서버 증설이 가능하다.
무상태는 서버1이 고장이 나더라도 서버2와 통신을 할 수 있다.
--> 수평 확장 유리하다.
2.0.4. connectionless vs connection, 비연결성 vs 연결성
연결을 유지하는 모델은 아래의 그림과 같다.

이전에 통신했던 것들을 끊지않고 계속해서 유지한다.
클라이언트 2,3과 요청/응답을 하지 않아도 계속 연결을 유지해야하므로
서버 자원이 계속해서 소모된다.
비연결성은 요청하고 응답이 끝나면 바로 연결을 종료시킨다.
그러나 비 연결성은 연결을 하기 위해 3 way handshake를 하게 되는데
이 때 걸리는 시간이 추가적으로 생긴다.
'Spring 강의 > HTTP 웹 기본 지식' 카테고리의 다른 글
HTTP 웹 기본 지식 - HTTP 헤더1 일반 헤더 (0) | 2021.08.20 |
---|---|
HTTP 웹 기본 지식 - HTTP 상태코드 (0) | 2021.08.18 |
HTTP 웹 기본 지식 - HTTP 메서드 활용 (0) | 2021.08.17 |
HTTP 웹 기본 지식 - HTTP 메서드 (0) | 2021.08.13 |
HTTP 웹 기본 지식 - 인터넷 네트워크 (0) | 2021.08.12 |