일단 브라우저 창에 URL을 입력하게 되면, 입력한 URL을 해석하여 확인합니다.
현재 페이지를 예를 들면
protocol : https
hostname : velog.io
resource : / 이후에 있는 것들
브라우저는 hostname 에서 a-z, A-Z, 0-9, - 혹은 . 이 아닌 문자들을 확인합니다.
국제화 도메인 네임과 같이 유니코드가 있을 때에는 브라우저가 URL에서 호스트네임 부분에 퓨니코드 (Punycode) 인코딩을 하기도 합니다. 도메인 주소 뒤 / 부터는 특정 문자를 UTF-8로 변환하는 URL escape code를 사용합니다.
또한 프로토콜이나 유효한 도메인 이름이 주어지지 않으면, 브라우저는 주소창에 놓인 텍스트를 브라우저의 기본 웹 검색엔진에 넘겨줍니다.
HTTP를 허용하지 않고 HTTPS를 사용하는 연결만 허용하는 기능입니다.
만약 HTTP로 요청이 왔다면 HTTP 응답 헤더에 "Strict Transport Security" 라는 필드를 포함하여 응답하게 되면, 이를 확인한 브라우저는 해당 서버에 요청할 때 HTTPS만을 통해 통신하게 됩니다. 그리고 자신의 HSTS 캐시에 해당 URL을 저장하는데 이를 HSTS 목록이라고 부릅니다.
HSTS목록에 해당 URL이 존재한다면 명시적으로 HTTP를 통해 요청한다 해도 브라우저가 이를 HTTPS로 요청합니다.
브라우저는 캐시를 조회하여 해당 웹사이트의 IP주소를 가지고 있는지 확인합니다. 만약 IP 주소를 찾을 수 없다면 gethostbyname 시스템 라이브러리 함수를 호출해 OS에 IP 주소를 찾도록 요청합니다. OS가 해당 도메인 IP 주소를 확인하는 첫 번째는 로컬에 위치한 hosts 파일. 만약 hosts파일에 존재하지 않다면 DNS 서버에 요청을 보냅니다.
IP 주소를 할당 받는 다면 해당 서버로 요청을 전송합니다. 네트워크 라우터의 라우팅이 경로를 설정하고, 라우터에서 라우팅 테이블을 통해 해당 요청이 어떤 경로를 통해 갈지 지정해줍니다.
ARP는 네트워크 상 IP 주소를 물리적 네트워크 주소 MAC으로 바인드 시키는 프로토콜이다.
ARP가 필요한 이유는 로컬 네트워크에서 단말과 단말 간 통신을 위해서 IP주소와 함께 MAC주소를 이용하는데 IP주소를 MAC주소와 매칭하여 목적지 MAC주소를 찾아가기 위함.
LAN을 한마디로 정의하면 네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한데 묶는 컴퓨터 네트워크 입니다.
같은 IP 대역을 공유하는 LAN에서 단말간 통신을 하기 위해 IP 주소를 목적지로 지정하지만, 실질적 물리 주소(MAC)를 사용해 목적지를 찾게 됩니다.
BroadCasting을 통해 ARP Request를 받은 같은 IP 대역 내의 단말들 중 IP-MAC 매핑에 목표인 단말이 이에 반응하여 ARP Response(목적지 단말의 MAC 주소) 를 보냅니다.
이러한 ARP Response들을 받아 ARP Table에 해당 단말의 IP와 MAC 주소를 적습니다. 그 이후로는 ARP Table을 참조해 IP와 매핑되는 MAC 주소를 전달합니다.
서버와 통신을 위해서는 TCP 소켓 연결을 진행합니다.
소켓 연결은 3-way-handshaking을 통해 이루어집니다. 서버에게 접속 요청을 보내면, 서버는 해당 요청을 확인하고 수락하는 메시지를 보냅니다. 또한, 클라이언트는 서버의 요청 수락 메시지를 받고 알겠다는 응답 메시지를 보내줍니다.
HTTPS 요청의 경우에는 암호화 통신을 위한 TLS 핸드쉐이킹이 추가됩니다. 이를 통해 서버와 클라이언트는 암호화 통신을 진행할 수 있습니다.
서버 응답에는 요청한 웹 페이지와 함께 상태 코드(status code), 압축 유형(Content-Encoding), 페이지 캐싱 방법(Cache-Control), 설정할 쿠키, 개인 정보 등이 포함 된다.
서버의 HTTP 응답 예시이다:
브라우저는 응답받은 HTML을 화면에 단계별로 표시한다. HTML을 렌더링한다. 그런 다음 HTML 태그를 확인하고 이미지, CSS 스타일시트, 자바스크립트 파일 등과 같은 웹 페이지의 추가 요소에 대한 GET 요청을 보낸다. 정적 파일(Static File)은 브라우저에서 캐싱되므로 다음에 페이지를 방문할 때 다시 가져올 필요가 없다. 마지막으로,페이지가 브라우저에 나타난다.
https://velog.io/@wonseok97/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90-URL%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4-%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94-%EC%9D%BC
https://velog.io/@khy226/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90-url%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4-%EC%96%B4%EB%96%A4%EC%9D%BC%EC%9D%B4-%EB%B2%8C%EC%96%B4%EC%A7%88%EA%B9%8C
https://woojeongmin.com/2022/study-log/what-happens-when-you-type-wwwnavercom/
되찾을 수 없는게 세월이니 시시한 일에 시간을 낭비하지 말고 순간순간을 후회 없이 잘 살아야 한다. -루소