dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • 반성
  • 서블릿
  • 네이버 부스트캠프
  • 백준
  • 일기
  • Hackerrank
  • 스프링
  • BFS
  • Baekjoon
  • 기록
  • HackerRank mysql
  • dp
  • 그래프탐색
  • AI Tech
  • 프로그래머스
  • 회고
  • 프로그래머스 SQL
  • 백준 DP
  • c++
  • 부스트캠프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

2. URI와 웹 브라우저 요청 흐름
개발 도서, 강의/모든 개발자를 위한 HTTP 웹 기본 지식(김영한)

2. URI와 웹 브라우저 요청 흐름

2021. 8. 28. 01:18
728x90

1. URI, URL, URN?

- Uniform Resource Identifier, Uniform Resource Locator, Uniform Resource Name

- 영어 뜻대로, 자원 식별자와 자원의 위치, 이름이라고 이해했다.

- URI는 Locator나 Name으로 구별이 가능하다. URI가 상위 개념

 

구분 예시)

  1. http://test.com 은 해당 서버의 위치, 식별자 역할을 둘 다 하므로 URI이면서 URL이다.
  2. http://test.com/abc 역시 test 서버의 abc라는 자원의 위치, 식별자 역할이므로 URI이면서 URL이다.
  3. http://test.com/abc/def/index.html 역시 index.html 파일의 위치, 식별자 역할이므로 URI이면서 URL이다.
  4. 하지만 http://test.com/123 은 자원의 위치는 test 서버(http://test.com)까지이고, 자원의 식별자 역할은 123이 한다. URI이지만 URL은 아니다. (식별 역할)
  5. 역시 http://test.com/abc?name= kim 은 자원의 위치는 abc 디렉토리까지이고, 이후 자원의 식별자 역할은 name=kim이라는 쿼리 파라미터가 한다. 즉, URI이지만 URL은 아니다. (식별 역할)

- URL의 구성은 프로토콜:// 서버 도메인 이름 or IP 주소 : 포트 / 서버 내의 자원의 path / 쿼리 파라미터 / #fragment

- HTTP는 주로 80 포트, https는 443 포트 사용 - 생략 가능

- URN은 이미지처럼 따로 이름을 지정해주는 것이다. (하지만 이름만으로 자원을 찾는 방법이 보편화되지 않았다고 함)

- 쿼리 파라미터는

  • 웹 서버에 제공하는 파라미터, 문자열 형태
  • key = value 형식
  • ?로 시작하며 &로 여러 개를 사용할 수 있다. keyA=valueA&keyB=valueB

- 프래그먼트는

  • 서버에 전송되는 정보가 아니다.
  • html 내부 북마크에 사용 (화면 이동 시 #1, #2)

2. 웹 브라우저의 요청 흐름

배운 내용을 바탕으로 간단하게 정리하기

  1. URL 입력 - https://www.google.com/search?q=hello&hl=ko
  2. URL 파싱 후 프로토콜, 도메인 주소, 포트 등을 분석한다
  3. 도메인 주소는 DNS 서버를 통해 IP주소를 얻고, HTTP 요청 메시지를 생성한다.
  4. 계층을 타고 내려가면서 TCP/IP 계층 전달, 얻은 포트 번호와 3-way handshake(서버 연결 확인) 등을 진행한다.
  5. TCP/IP 패킷을 생성하고 HTTP 메시지를 감싸서 전송한다.
  6. 구글 서버에서 패킷을 받고, 응답 메시지가 담긴 응답 패킷을 다시 전송한다.
  7. 웹 브라우저에서 해석 후 렌더링을 진행한다.

 

참고 : https://medium.com/@js230023/url-%EA%B3%BC-uri%EC%9D%98-%EC%B0%A8%EC%9D%B4-154d70814d2a

728x90
저작자표시 비영리 변경금지 (새창열림)

'개발 도서, 강의 > 모든 개발자를 위한 HTTP 웹 기본 지식(김영한)' 카테고리의 다른 글

1. 인터넷 네트워크  (0) 2021.08.23
    '개발 도서, 강의/모든 개발자를 위한 HTTP 웹 기본 지식(김영한)' 카테고리의 다른 글
    • 1. 인터넷 네트워크
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바