...
URL 구성 이해하기
- 프로토콜 : https
- 호스트명 : www.google.com
- 포트번호 : 443
- 패스 : /search
- 쿼리 파라미터 : q=hello&hl=ko
scheme
- 주로 프로토콜(어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙) 사용
- 예) http, https, ftp 등등
- http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능
userinfo
- URL에 사용자 정보를 포함해서 인증
- 요즘은 거의 사용하지 않음
host
- 호스트명(www.google.com)
- 도메인명 또는 IP 주소를 직접 사용 가능
port
- 접속 포트
- 일반적으로 생략 가능
- 생략 시 http는 80, https는 443 포트 번호로 설정된다.
- 톰캣은 8080 포트를 사용
path
- 리소스 경로(path)
- 계층적 구조로 구성됨
- /home/file1.jpg
- /members
- /members/100
- /items/iphone12
query
- query parameter, query string 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태
- key=value 형태
- ?로 시작되며, &로 여러개 추가 가능
- ex) ?keyA=valueA&keyB=valueB
fragment
- html 내부 북마크 등에 사용
- 웹문서 해시태크라고도 불림
- 서버에 전송하는 정보 아님
URL의 웹 브라우저 요청 흐름
다음 URL을 가지고 https://google.com/search?q=hello&hl=ko 어떻게 웹 브라우저가 요청해서 진행되는지 지금까지 배운지식을 토대로 흐름을 파악해보자.
1. DNS 서버를 조회해서 IP와 포트 정보를 받는다.
2. 정보를 토대로 HTTP 요청 메시지를 생성한다.
3. 서버에 HTTP 메시지 전송
- 웹브라우저의 SOCKET 라이브러리를 이용해서 TCP/IP 커넥션 연결 요청
- 이전단계에서 찾은 IP와 PORT정보를 가지고 SYN, SYN+ACK, ACK 과정(3 way handshake)을 통해 서버와 연결을 한다.
- 연결이 성공되면 TCP/IP 4 계층으로 데이터를 전달한다.
- HTTP 메시지를 포함한 TCP/IP 패킷 생성하여 서버로 전송하게 된다.
4. 서버는 패킷을 받으면 TCP/IP 패킷을 까고 HTTP 메시지를 가지고 해석
5. 그 후 html 데이터를 포함한 응답 메시지를 만들어서 클라이언트에 반환
6. 클라이언트에서는 응답메세지를 받아 화면에 렌더링
# 참고자료
모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.