http : 2 - by 김영한님 강의

꾸준하게 달리기~·2023년 6월 9일
0

cs

목록 보기
2/16
post-thumbnail
post-custom-banner

URI와 웹 브라우저 요청 흐름

uri 안에 url과 urn이 있음.
uri는
uniform(리소스식별 통일 방식)
resource(자원)
identifier(구분하는데 필요한 정보)
여기서 리소스란..?
식별할 수 있는 모든 정보(html, 실시간 교통정보, 날씨 등..)



url : 리소스의 위치 지정 (location)

urn : 리소스의 이름 부여 (name)

이름만으로 리소스를 찾는 방법은 보편화되어있지 않음
-> uri = url의 의미로 생각하면 된다.

예를 들어,
URL
scheme://[userinfo@]host[:port][/path][?query][#fragment]

(프로토콜)//(유저정보)host(포트)/(경로)?(쿼리문) 이런식이다.
위에서 아래의 url로 변환하는 과정을 말하자면,

사용하는 프로토콜은 https,
유저정보는 생략,
호스트는 google,
포트는 443(https)
경로는 search 라는 매핑
(계층적 구조로 설계시 /search 뿐만 아니라 /search/100 이런식 가능),
쿼리문은 물음표시작,
serach내용은 hello,
언어는 ko로 나타내면 아래와 같다.

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

웹 브라우저 요청 흐름

(https://www.google.com:443/search?q=hello) 를 입력했을때,

  1. 웹 브라우저(크롬, 엣지 등등..) dns 조회해서,
    dns를 통해 ip, 그다음 프로토콜을 통해 port를 따옴.

  2. 웹 브라우저가 tcp의 3way handshake를 통해 google과 연결 후
    1번에서 따온 ip와 port번호로 tcp/ip 패킷을 씌운 후 데이터 전달
    해당 데이터 안에 http 요청 메세지 존재.
    (해당 내용은 search니까 get요청으로 + 쿼리문 search?q=hello 날라감)

  1. 2번에서 보낸 요청패킷이 구글에 도착하면, tcp/ip 패킷을 제외하고 http메세지 해석 후
    보낸 과정과 마찬가지의 계층을 거쳐 http 응답 메세지 보냄.

  2. 받은 http 응답 메세지를 통해 웹 브라우저를 렌더링 한 후 화면에 띄움.

해당 내용에는 아주 자세한 내용은 생략되어있음 (2번과 3번 사이에 라우터에 의한 노드끼리의 홉 과정과 같은 내용)

정리!

웹 브라우저는 dns에서 얻어온 IP 주소를 사용하여
TCP 계층의 3-way handshake를 거쳐 서버에 연결된 후
TCP 패킷에 http메세지가 감싸지고, 해당 데이터를 보내는것.
(내가 헷갈리는것은, 3-way handshake와 홉은 각각 다른 개념이며, TCP의 3-way handshake는 클라이언트와 서버 간의 연결 설정을 위한 과정이고, 홉은 데이터의 전달을 위한 라우터를 거치는 과정)
그리고, 웹 브라우저가 ip주소를 얻는것, TCP 계층의 3-way handshake를 거쳐 연결된 후 TCP 패킷에 http메세지가 감싸지고, 해당 데이터를 보내는것. 전부 os가 수행

이미지 출처 : 김영한님 pdf

profile
반갑습니다~! 좋은하루 보내세요 :)
post-custom-banner

0개의 댓글