Search
Duplicate
📒

[Network Study] xx.x URI와 웹 브라우저 요청 흐름 ⭐

상태
완료
수업
Network Study
주제
HTTP
4 more properties

URI

NOTE
URI (통합 자원 식별자) = URL + URN
웹 기술에서 사용하는 논리적 물리적 리소스를 식별하는 고유한 문자열 시퀀스
Uniform
리소스 식별하는 통일된 방식
Resource
자원 = URI로 식별할 수 있는 모든 것 (제한X)
웹 브라우저 HTML, 실시간 교통정보 등 모든 정보를 말함
Identifier
다른 항목과 구분하는데 필요한 정보

URL, URN

NOTE
위치(URL)는 변할 수 있지만 이름(URN)은 변하지 않는다
URL(위치)는 변할 수 있다. URN(이름)은 변하지 않는다.
URN → ISBN(어떤 책의 고유번호)
URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않음
사실 그렇게 중요한건 아니고 URI = URL 로 이해하는게 좋다
두 주소 모두 index.html을 가리키고 있다
1번째 주소
웹 서버의 실제 파일 위치를 나타내는 주소 (URI, URL)
2번째 주소
index라는 파일이 웹 서버에 존재하지 않으므로 URL은 아니다.
하지만 서버 내부에서 이를 처리하여 결국 INDEX.HTML을 가리키기 때문에 URI라고 볼 수 있다.

URL 분석

NOTE
https://www.google.com/search?q=hello&hl=ko을 분석해보자!
scheme:[//[userinfo@]host[:port]][/path][?query][#fragment]
Java
복사
위의 구조형식
scheme (프로토콜)
https를 의미한다!
어떤 방식으로 자원에 접근할 것인가에 관한 클라이언트 서버간 약속 규칙
userinfo
사용자 정보(거의 안씀)
host
도메인 명, IP주소
port
접속포트
path
리소스 경로
query
웹 서버에 제공하는 파라미터
fragment
HTML 내부 북마크 등에 사용

웹 브라우저 요청 흐름

1. 웹 브라우저에 URL 입력

NOTE

2. DNS 조회, HTTP 요청 메시지 생성

NOTE
DNS 조회
HTTP 요청 메시지 생성
http 메서드/path, query string/HTTP 버전/호스트(도메인명)

3. 3-way-handshake(SOCKET 라이브러리), 7→4계층 이동

NOTE
TCP 전송을 위해 3-way handshake로 클라이언트-서버 연결!
캡슐화/역캡슐화에서 배운 데이터 계층에 따른 PDU 구조
SOCKET 라이브러리를 통해 헤더 부분이 IP, PORT 정보를 넣어 3way-handshake로 웹브라우저(클라이언트) 와 웹서버(서버)를 연결한다
연결이되면 HTTP 메시지를 TCP/IP 계층에 전달한다.

4. 4계층 패킷 생성

NOTE
TCP에서 PORT 등의 데이터를 넣어주면서 TCP/IP 패킷을 생성한다!

5. 클라이언트 → 서버, 요청 패킷 전달

NOTE
수 많은 노드를 거쳐 웹 서버에 패킷을 전달한다. (노드, 라우터를 통함)
다음과 같이 많은 라우터와 노드들을 거쳐서 데이터 전송..

6. 서버에서 HTTP 응답 메시지 생성

NOTE
웹 서버(서버)에 도착한 패킷의 헤더 부분은 버리고 HTTP 메시지(데이터 부분)을 서버가 해석하여 HTTP 응답 메시지를 생성

7. 서버 → 클라이언트, 응답 메시지 생성

NOTE
헤더 부분에 출발지(IP, PORT), 목적지(IP, PORT) 정보 등을 담고 데이터 부분에 HTTP 응답 메시지를 담아 만든 응답패킷을 웹 브라우저(클라이언트)에 전달

8. 웹 브라우저 HTML 렌더링

NOTE
웹 브라우저(클라이언트)가 웹 서버로부터 받은 응답 패킷에서 헤더 부분을 버리고 HTTP 응답 메시지의 데이터(HTML)을 렌더링하여 화면에 뿌려준다