웹 브라우저 요청 흐름 정리
웹 브라우저 = 클라이언트, 웹 서버 = 서버
1. 웹 브라우저로 입력된 URL로 부터 IP,PORT 정보를 얻고 웹 브라우저가 HTTP 요청 메세지를 생성한다.
2. 애플리케이션 계층의 '소켓 라이브러리'를 통해 IP, PORT 정보를 '헤더 부분'에 담아 연결을 위한 패킷을 만들고 3-way-handshaking으로 웹 서버와 연결한다
3. 소켓 라이브러리를 통해 HTTP 메세지를 TCP/IP 계층으로 전달한다.
4. 헤더부분(출발지 IP, PORT, 목적지 IP, PORT 등)과 데이터부분(HTTP 요청메세지)을 합쳐 TCP/IP패킷을 생성한다
5. 웹 브라우저에서 인터넷망(수많은 노드들)을 거쳐 '웹 서버'로 패킷을 전달한다.
6. 웹 서버는 도착한 패킷의 헤더 부분은 버리고 데이터 부분(HTTP 요청메세지)을 해석하여 HTTP 응답메세지를 만든다.
7. 헤더부분과 데이터부분을 합쳐 TCP/IP 응답 패킷을 생성한다
8. 웹 서버에서 인터넷망을 거쳐 웹 브라우져로 응답 패킷을 전달한다.
9. 웹 브라우저는 도착한 응답패킷의 헤더부분은 버리고 HTTP 응답메세지의 데이터(HTML)을 렌더링하여 화면에 뿌려준다.
URI 질문정리
Q. '호스트명'과 '도메인명'은 같은 것인가?
-> '호스트 이름'은 '도메인 이름'의 한 가지 특수한 유형으로 도메인 이름 중에서 'IP 주로를 설정할 수 있는 이름'을 말한다.
-> '호스트'의 기준은 IP주소이고, 호스트 이름은 호스트에 부여된 이름이다. 즉 IP 주소를 갖고 있는 어떤 것에 이름을 부여한 것이다.
Q. DNS는 3-way-handshake가 발생하지 않는가?
-> DNS는 UDP를 이용하므로 3-way-handshake가 발생하지 않는다.
'모든 개발자를 위한 HTTP' 카테고리의 다른 글
모든 개발자를 위한 HTTP 웹 - 6. HTTP 상태코드 (0) | 2022.09.09 |
---|---|
모든 개발자를 위한 HTTP 웹 - 5. HTTP 메서드 활용 - HTTP API 설계 예시 (0) | 2022.09.09 |
모든 개발자를 위한 HTTP 웹 - 3. HTTP 기본 - 비 연결성 (0) | 2022.09.09 |
모든 개발자를 위한 HTTP 웹 - 3. HTTP 기본 - Stateful, Stateless (0) | 2022.09.09 |
모든 개발자를 위한 HTTP 웹 - 1. 인터넷 네트워크 - IP(인터넷 프로토콜) (0) | 2022.08.31 |