본 게시글은 김영한님의 HTTP 웹 기본 지식 강의를 보고 정리한 글입니다.
URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류가 되어질 수 있다.
https://www.ietf.org.rfc/rfc3986.txt - 1.1.3. URI, URL, and URN
아래의 그림과 같이 URL: 일반적으로 우리가 보게 되는 주소라고 생각하면 되겠고 URN:URL을 이름으로 바꾼 것! 이라고 생각을 하면 될 거같다. 그치만 URN을 사용을 하게 되면 일반적으로 매핑이 어렵다는 단점이 있다.(일므으로만 되어 있으니)
이제 본격적으로 URL, URN에 대해서 알아보자.
주로 프로토콜을 사용을 한다.
프로토콜이란? 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
ex) http, https, ftp 등등
http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략이 가능하다.
https는 http에 보안을 추가한 것이다.(HTTP Secure)
그림으로 한 번 살펴보는 것이 이해하는것에는 제일 편할 거 같아 그림으로 표현을 주로 하겠다.
주로 이렇게 주소를 입력하게 된다면 브라우저에서 HTTP 요청 메시지를 생성한다.
HTTP 요청 메시지(path부터 들어가게 된다)
GET /search?q=hello&hl=ko HTTP/1.1
HOST: www.google.com
위와 같이 생성이 된다.
그렇게 이제 서버로 가기 전 과정들을 또 보게 되면?
다음과 같이 진행이 되어진다. 이거 그림 TCP/IP에서 계층별로 어떻게 가는지 확인했을때의 그림과 같다는 것을 알 수 있는데, 여기서 보면 socket라이브러리를 통하여 전달을 TCP/IP 연결을 하고, 데이터를 전달하고 패킷을
TCP/IP 패킷을 생성, HTTP 메시지를 포함한 후 이제 서버로 전송을 한다.
여기서 이전에 말했던대로 TCP/IP패킷 껍데기 안에 HTTP 메시지를 넣어서 보내준다.
이렇게 전달을 하고 나중에 서버에 도착을 하게 된다면 TCP/IP는 서버에서 다 까서 버린다.
마치 사과 껍질 까고 안에것만 먹는 것처럼 HTTP 메시지만 확인을 하게 된다. 그럼 요청 패킷을 받았으니 응답 패킷도 받아야겠지?
HTTP/1.1 200 OK
Content-Type : text/html;charset=UTF-8
Content-Length: 3423<html> <body>...</body> </html>
이렇게 위와 같은 과정을 통하여서 우리가 보는 화면이 제공이 되게 된다.
이 과정에 대해서는 정말로 여러 기술 면접에서 단골로 나오는 질문인만큼 이 과정에 대해서는 머리속으로 넣어놓고 다녀야겠다는 생각이 많이 든다!