네트워크 4. URI와 URL

최창우·2022년 8월 8일
0

네트워크

목록 보기
4/4
post-thumbnail

🙌 이전 포스팅 참고

📕 URI / URL / URN

URI(Uniform Resource Identifier) : 리소스를 식별
URL(Uniform Resource Locator) : 리소스가 있는 위치를 지정
URN(Uniform Resource Name) : 리소스에 이름을 부여

위 세가지는 헷갈려서 구분이 잘안된다.. 하나씩 알아보자.

📖 URI와 URL

URI이면 URL이다. (X)
URL이면 URI이다. (O) 로 알 수 있듯이, URI는 URL을 포함한다.

가정 : template.html 파일이 해당경로에 존재할경우

1. https://www.changwoo.com/template.html
위 문장은 URI이면서 URL이다.
왜냐하면 template.html 파일이 실제로 저 경로에 존재하기 때문이다.

2. https://www.changwoo.com/template
위 문장은 URI이지만, URL은 아니다.
왜냐하면 확장자명이 붙질않아서 해당 파일이 경로에 존재하지 않지만,
서버에서 이를 처리하여 template 파일을 가리키기 때문이다.

가정 : school/attendance 라는 파일은 없다.

https://www.changwoo.com/school/attendance
위 문장은 URI이다. 왜냐하면 해당 파일이 해당 경로에 없기 때문에 아마
위 문장은 서버에서 school이라는 클래스의 attendance 메소드를 호출할 것이다.

📖 URN

URN은 리소스에 이름을 부여한 주소이다.

URL : foo://example.com:8042/over/there?name=ferret#nose
URN : urn:example:animal:ferret:nose


📕 URL 문법 이해하기

이제부터 URI와 URL를 같은 의미로 사용

설명을 위한 예로 사용할 경로는 아래와 같다.
https://www.google.com:443/search?q=hello&hl=ko

1. https : 프로토콜
2. www.google.com : 호스트명
3. 443 : 포트번호 (기존에 등록된 것들의 경우 생략가능)
4. /search : 패스
5. ?q=hello&hl=ko : 쿼리 파라미터

📖 PORT

접속을 위한 포트를 지정
일반적으로 생략하며, 생략시 http는 80 / https는 443

📖 PATH

리소스 경로를 명시

  • 경로로 변수 전달가능
  • 예를들어 "학교/학년/학번/이름" 이런식으로 데이터를 계층적으로 설계하였다면
    "땡땡대학교/1학년/201500000/홍길동" 형태로 데이터에 접근가능
  • 위처럼 PATH로 리소스경로를 나타냈을때 각각의 값을 path parameter 라 한다.

계층적구조 사용

예)

  • home/file1.jpg
  • home/changwoo/template.html

📖 QUERY

웹서버로 제공하는 파라미터 값을 부여하는 방법으로
query parameter 또는 query string(전부 string으로 넘어가서)으로 부른다.

  1. KEY=VALUE 형태
  2. ?로 시작
  3. &로 추가 가능
    • key1=value1&key2=value2

📕 웹 브라우저 요청 흐름

설명을 위한 예로 사용할 경로는 아래와 같다.
(전달되는 데이터는 HTML이라 가정)
https://www.google.com:443/search?q=hello&hl=ko

  1. 호스트명(www.googole.com) + PORT(443) 통해 DNS 조회
  2. HTTP 요청 메시지 생성
[요청메시지]
GET /search?q=hello&hl=ko HTTP/1.1
HOST: www.google.com
  1. socket library 를 통해 TCP/IP 계층에 전달
  2. TCP/IP 패킷 생성, HTTP 메시지 포함
  3. 인터넷망으로 보냄
  4. 구글서버에 도착하면, TCP/IP 분해하여 필요정보얻고 껍데기버림
  5. HTTP 응답 메시지 생성
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

<html>
	<body>...</body>
</html>
  1. 3번 ~ 5번 과정 수행 (구글서버입장)
  2. 웹 브라우저 HTML 렌더링

😎 다음 포스팅에서 HTTP가 뭔지 자세히 알아보자!


📚Reference

본 포스팅은 인프런-김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식 내용을 토대로 작성하였습니다. 진짜 강의도 너무 좋고 강의 타임도 짧은데다, 저렴하니 들어보면 좋을거같습니다.

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글