developer-ellen
인간 디버거의 로그 찍기
developer-ellen
전체 방문자
오늘
어제
  • 분류 전체보기 (217)
    • 회고록 (0)
    • 취뽀 및 커리어 여정의 Stack (2)
      • SSAFY 7기 (2)
    • 프로그래밍공부 (24)
      • c++ (0)
      • JAVA (3)
      • Spring (5)
      • design pattern (3)
      • BackDB (1)
      • Servlet&JSP (3)
      • Vue (4)
      • JPA (4)
      • Infra (1)
      • Linux (0)
    • AI (3)
      • papers (3)
      • trend (0)
    • 프로젝트진행 (0)
      • 데이터베이스 (0)
      • 서버개발 (0)
      • 인공지능 (0)
      • 하루정리 (0)
    • 포트폴리오 (0)
    • 알고리즘 (158)
      • 알고리즘문풀 (155)
      • 알고리즘공부 (3)
    • 통계공부 (15)
      • 시계열분석 (15)
      • 회귀분석 (0)
    • CS (14)
      • 컴퓨터네트워크 (4)
      • 운영체제 (8)
      • 데이터베이스 (2)
    • 주저리주저리 (0)
      • 필사 (0)
    • 취업관련정보 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 삼성코테파이썬풀이
  • 삼성코테기출
  • c++디자인패턴
  • 삼성코테파이썬
  • 삼성코테자바풀이
  • 카카오코테java풀이
  • 삼성코테자바준비
  • 데이터분석
  • 통계학
  • 운영체제인터럽트
  • 시계열분석
  • MA모형
  • SW역량테스트파이썬
  • Arima
  • c++ 빌더 패턴
  • 시계열
  • BOJ파이썬풀이
  • SW역량테스트파이썬풀이
  • 백준파이썬풀이
  • 삼성코테준비
  • 통계분석
  • 삼성코테구현풀이
  • 삼성코테자바꿀팁
  • 삼성코테기출자바풀이
  • 삼성코테구현문제추천
  • ARIMA모형
  • 카카오코테
  • AR모형
  • 삼성코테파이썬준비
  • 코테파이썬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
developer-ellen

인간 디버거의 로그 찍기

URI와 웹 브라우저 요청 흐름
CS/컴퓨터네트워크

URI와 웹 브라우저 요청 흐름

2022. 7. 10. 14:42

1.  URI, URL, URN

1) URI(Uniform Resource Identifier)

  • URI는 URI와 URN을 모두 포함하는 용어
  • 자원의 위치(Locator)와 이름(Name)을 모두 포함
  • URL은 자원이 있는 위치(Locator)를 지정하고, URN은 자원에 이름(Name)을 부여

 

2) URL 분석

형태 : scheme://[userinfo@]host[:port][/port][?query][#fragment]
예시 : https://www.google.com:443/search?q=hello&hl=ko
  • scheme : 주로 프로토콜을 사용하며 어떤 방식으로 자원에 접근할 것인가 하는 규칙
    • ex : http, https, ftp, ...
  • userinfo : 사용자 정보를 포함해서 인증에 사용하며 거의 사용하지 않음
  • host : 호스트명, 도메인명 또는 IP 주소를 직접 사용 가능
  • port : 접속 포트로 IP가 컴퓨터의 논리적인 주소면 port는 컴퓨터에서 실행되는 앱의 주소
    • http는 80, https 443이 기본 포트번호이며 생략 가능
  • path : 리소스 경로로 계층적 구조로 이루어짐
    • ex : /members, /members/100, /items/iphone12, ...
  • query : key-value 형태의 pair resource이며 ?로 시작하며 &로 자원 추가가 가능함
    • 형태 : ?a=b&c=d
    • query parameter 또는 query string으로 부름
  • fragment : html 내의 북마크에서 사용되며 서버에 전송되는 정보가 아님

 

2.  https://www.google.com/을 접속할 때 일어나는 일

1) 웹 브라우저에서 서버로 요청했을 때의 흐름

https://www.google.com:443/search?q=hello&hl=ko

(1) 브라우저의 URL 파싱

  • 브라우저에서 어떤 프로토콜,URL, 포트로 요청할 것인지 분석
  • 명시적으로 포트를 선언하지 않았다면 HTTP는 80, HTTPS는 443의 디폴트 값으로 요청
  • 브라우저는 URL에 적힌 값을 파싱해 HTTP Request Message를 만들어 OS에 전송을 요청하며, 이때 Domain으로 요청을 보낼 수 없어 DNS Lookup을 수행
HTTP 요청 메시지
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com

 

(2) DNS Lookup 과정

  • 브라우저 -> hosts 파일 ->  DNS cache 순서로 도메인에 해당되는 ip를 찾기
  • 일반적으로 DNS Lookup은 루트 도메인 -> 서브 도메인 서버 순으로 찾음

 

(3) HTTP 메시지 전송

  • 웹 브라우저가 HTTP 메시지를 생성하며 SOCKET 라이브러리를 통해 전달된다.
  • 프로토콜 스택이라는 OS에 내장된 네트워크 제어용 소프트웨어에 의해 HTTP 메시지를 담은 패킷을 생성한다.
  • 네트워크 인터페이스 계층에서 패킷에 네트워크 제어 정보를 덧붙여 LAN 어댑터에 전송하고 LAN어댑터는 이를 전기 신호로 변환시켜 송출한다.

 

(4) 라우터를 통해 패킷 이동

  • 패킷은 스위칭 허브를 경유해 인터넷 접속용 라우터에서 ISP로 전달되고 인터넷으로 이동한다.
  • 액세스 회선에 의해 통신용 라우터로 운반되어 인터넷의 핵심부로 전달된다.
  • 고속 라우터들 사이로 목적지까지 패킷이 전달되기 됩니다.

 

(5) 목적지 도착

  • 핵심부로 통과한 패킷은 목적지의 LAN에 도착하여 방화벽이 패킷을 검사한다.
  • 캐시 서버로 보내어 웹 서버에 갈 필요가 있는지 검사한다.
  • 웹 서버에 도착한 패킷은 프로토콜 스택이 패킷을 추출해 HTTP 메시지를 복원하며, 웹 서버 어플리케이션으로 넘긴다.
  • 애플리케이션은 요청에 대한 HTTP 응답 메시지를 작성해 클라이언트로 회송하여 위에서 전달된 흐름 그대로 전송된다.

 

 

 

 

인프런의 김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식"라는 강의를 보고 직접 공부하면서 작성하였습니다.

혹시 문제가 있다면 바로 삭제하겠습니다.

 

'CS > 컴퓨터네트워크' 카테고리의 다른 글

CORS란? (Spring Boot+Security 처리)  (0) 2022.08.07
HTTP와 HTTPS의 개념과 차이점에 대하여  (0) 2022.07.31
HTTP 상태코드  (0) 2022.07.10
    'CS/컴퓨터네트워크' 카테고리의 다른 글
    • CORS란? (Spring Boot+Security 처리)
    • HTTP와 HTTPS의 개념과 차이점에 대하여
    • HTTP 상태코드
    developer-ellen
    developer-ellen

    티스토리툴바