본문 바로가기

Network

URL와 웹 브라우저 요청 흐름

728x90
목차
- URI (not URL)
- 웹 브라우저 요청 흐름

 

URI

(= Uniform Resource Identifier .. 해석해보세요 리소스를 식별하는 통합된 방법)

 

드가자 ~

하기 전에 URI? URL? URN? 차이 알아보자.

 

URI (Resource Identifier)
URL (Resource Locator)
= 리소스의 위치
URN (Resource Name)
= 리소스의 이름

 

URL과 URN의 차이 .. 궁금하면 500원이 아니고 [더보기] ⬇️

더보기

URL과 URN의 차이를 알아보자.

 

URL은 위치를 의미하고 URN은 이름이라는 것 .. (앞에 말했잖아. ㅇㅋㅇㅋ.)

여기서 알 수 있는 것은,

  • URL은 어떻게 리소스를 얻을 것이고 어디에서 가져와야하는지 명시하는 URI이다.
  • URN은 리소스를 어떻게 접근할 것인지 명시하지 않고 경로와 리소스 자체를 특정하는 것을 목표로하는 URI이다.

 

URI의 단어 뜻

  • Uniform : 리소스를 식별하는 통일된 방식
  • Resource : 자원, URI로 구분할 수 있는 모~~~든 것 (제한 없음)
  • Identifier : 다른 항목과 구분하는데 필요한 정보  

 

URL, URN 단어 뜻

  • URL(Locator) : 리소스가 있는 위치를 말함
  • URN(Name) - Name : 리소스의 이름을 말함 

✔️ 위치는 변할 수 있지만 이름은 변하지 않는다.

✔️ URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 흔하지 않다. 

 

✅ 이 뒤로 언급되는 글에 있어서, URI = URL 같은 의미라고 생각해주세요. 

 

URL 분석

예를 들어서 아래와 같은 URL이 있다고 가정해보자.

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

 

scheme

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

  • 주로 프로토콜 사용
    • 프로토콜 : 어떤 방식으로 자원에 접근할 것인가? 하는 규칙
      ex) http, https
  • http = 80 port / https = 443 port를 주로 사용 
  • 포트 생략 가능
  • https VS http 
    • https는 http에 보안이 추가된 형태 (HTTPS Secure)

 

알면 복잡해지는 지식 ⬇️

더보기

App Transform Security

서버 통신할 때 넣어줘야 한다.

 

ATS는 앱, 웹 서비스 사이에 통신 시 보안 향상을 위한 기능으로 iOS 9.0 / macOS 10.1 부터 적용 가능하다.

이 정책으로 모든 인터넷 통신 시 안전한 프로토콜을 사용하도록 보장하며 사용자의 민감한 정보가 유출되는 것을 방지한다.

 

다양한 종류의 애플리케이션이 개인의 여러 가지 정보(연락처, 사진, 건강정보, 메시지, 메일 등)를 다루게 되면서 사용자 정보보호에 대한 중요성이 한층 부각되었다.

그런데 기존의 보안/암호 기술은 오래되어 공격에 취약해졌지만, 컴퓨터 성능은 점점 발전하면서 새롭게 등장하는 네트워크 공격이 강력해지자 이에 대응하기 위해 2015년 ATS를 도입하게 되었다.

2016년부터 새롭게 만들어지는 애플리케이션은 반드시 ATS를 사용해야 하며, 기존에 개발된 애플리케이션은 ATS를 사용할 수 있도록 네트워크 보안을 강화해야 한다고 한다.

 

ATS 기능 비활성화 방법: 해당 프로젝트의 info.plist 파일에서 설정

모든 HTTP 통신 허용 > 암호화 하지 않은 통신이므로 불가피한 때 외에는 사용하지 않는 것이 좋다.

특정 도메인 통신 허요 > ATS에서 제외할 특정 도메인 지정

 

userinfo

scheme://[userinfo@]~

 

  • URL에 사용자 정보를 포함해서 인증
  • 거의 사용하지 않는다.

 

host

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

  • 호스트명
  • 도메인명 또는 IP 주소

 

port

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

  • 접속 포트
  • 일반적으로 생략 > http는 80, https는 443
  • 특정서버에 따로 접근할 경우는 입력하기도 한다.

 

path

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

 

  • 리소스 경로
  • 계층적 구조 (마치 디렉토리처럼)

 

query

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

  • key=value 형태
  • ?로 시작, &으로 추가 가능
  • query parametr, query string (모두 문자열로 넘어가기 때문에) 등으로 불린다.

 

fragment

https://www.google.com/search?q=hello&hl=ko[#fragment] 

  • html 내부 북마크 용도로 사용
  • 서버에 전송하는 정보는 아니다.

 


웹 브라우저 요청 흐름 

이런 상황이라고 가정할 때, 3 way handshake를 통해 서버와 통신을 하는데,

웹 브라우저에서 요청을 보내면, DNS를 조회하고 HTTPS PORT를 확인한 뒤 > HTTP 요청 메시지를 생성한다.

 

해당 메시지가 생성되면 아래의 과정을 거쳐서 서버에 전달된다. 

 

TCP/IP 패킷 안에 HTTP 메시지를 담아서 서버에 전달을 하고, 잘 도착이 되었다면 서버에서 요청 메시지를 확인한다.

그리고 그에 맞는 HTTP 응답 메시지를 담아 다시 웹 브라우저로 보낸다. 

잘 도착이 된다면, 웹 브라우저 화면에 알맞는 화면이 띄워진다.

 

'Network' 카테고리의 다른 글

[네트워크] HTTP 상태코드  (0) 2022.09.15
HTTP 메서드 활용  (2) 2022.09.06
HTTP 메서드  (0) 2022.08.30
HTTP 기본  (1) 2022.08.23
인터넷 네트워크  (2) 2022.08.15