네트워크

HTTP 웹 기본 지식 - URI와 웹 브라우저 요청 흐름

SICDev 2021. 8. 24. 20:57
반응형

URI(Uniform Resource Identifier)❓

URI? URL? URN? 세 가지의 차이점은 무엇일까🤔🤔

 

URI가 가장 큰 개념이다. 여기서 I는 Identifier로 식별의 의미로, 리소스 즉 자원을 식별할 수 있는 형태를 의미한다.

 

URI안에는 URL과 URN이 존재하는데, L은 Locator(위치)를 의미해서 리소스가 존재하는 위치를 의미하고, N은 Name 말 그대로 리소스의 이름을 의미한다.

 

URN은 사실상 구분하기가 어렵기때문에 거의 URL을 사용한다고 보면 된다.

 


URL의 기본 구조❓

  • scheme://[userinfo@]host[:port][/path][?query][#fragment]
  • https://www.google.com/search?q=hello&hl=ko

※ userinfo는 거의 사용하지 않음 ( URL에 사용자 정보를 포함해서 인증해야 할 때 사용함 )

※ fragment는 거의 사용하지 않음 ( HTML 내부 북마크 등에 사용된다. 서버에 전송하는 데이터는 아니다.  )

 

1. scheme

주로 프로토콜을 쓴다❗ ( 프로토콜이란 어떤 방식으로 리소스에 접근할 것인지에 대한 규칙 )

EX) http(80), https(443), ftp 등

 

2. host

주로 도메인명이나 IP를 사용한다.

EX) http://192.168.0.1, https://www.google.com  

 

3. port

말 그대로 접속 포트에 대한 정보를 쓴다. 일반적으로는 생략한다.

EX) http -> 80번 포트, https -> 443 포트

 

4. path

리소스가 있는 경로를 쓴다. 보통 계층적 구조의 경로를 사용한다. ( 이해를 쉽게 하기 위해 )

EX) http://192.168.0.1/members/1 , https://www.google.com/home/image.jpg

 

5. query

key=value의 형태로 데이터(정보)를 입력한다.

( query parameter, query string 등으로 불린다. 파라미터값이 모두 문자 형태로만 넘어가기 때문이다.) 

EX) http://192.168.0.1/members/1?name=홍길동&age=13 ( 이렇게 설계하지는 않지만... 그냥 넘어가자😎 )

 


웹 브라우저 요청 흐름❓

  1. 요청을 보낼 서버를 알아야하니까 먼저 DNS 서버를 조회해서 IP와 PORT번호를 조회한다.
  2. HTTP 요청 메세지를 생성한다.
    • HTTP 요청 메세지의 형태이다
      ( GET이라는 HTTP 메서드와 path, query, http 버전, host 정보 등이 들어가  있다❗ )
  3. HTTP 메세지를 SOCKET 라이브러리를 통해 OS계층인 TCP/IP계층에 전달을 한다.
    ( 이때 3-way handshake를 통해 서버와 연결을 확인하고 데이터를 전달한다. )
  4. TCP/IP 계층에서는 이전의 웹 브라우저에서 전달 받은 데이터를 기반으로 TCP/IP 패킷을 생성한다.
  5. 네트워크 인터페이스 계층을 거쳐 서버로 전송된다🚒
  6. 서버는 전달 받은 데이터를 분석하고, HTTP 응답 메세지를 생성한다.
    • HTTP 응답 메세지의 형태이다.
      (응답코드, 응답데이터의 형태와 언어(?), 데이터의 길이, 실제 응답 데이터  등이 들어가 있다❗ )
  7. 서버도 위와 같은 방식으로 응답 패킷을 만들어서 클라이언트에게 패킷을 전달한다.
  8. 클라이언트는 응답 패킷을 분석하고, 웹 브라우저가 렌더링해서 화면에 뿌려준다.

 

 

출처

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

반응형