1. Client & Server
웹에 연결된 컴퓨터는 클라이언트와 서버, 두 가지 종류로 나눌 수 있다.
- 클라이언트 : 일반적인 웹 사용자의 인터넷이 연결된 장치들과 이런 장치들에서 이용 가능한 웹에 접근하는 소프트웨어
- 서버 : 웹 페이지, 사이트, 앱을 저장하는 컴퓨터
2. Component for Web
(1) 인터넷 연결 : 웹에서 데이터를 보내고 받을 수 있게 하는 원동력 (2) TCP/IP (Transmission Control Protocol/Internet Protocol) : 데이터가 목적지를 향해 어떻게 웹을 지나다닐 수 있는지 정의하는 통신 규약 (3) DNS (Domain Name System Servers) : 웹 사이트를 위한 주소록
- IP 주소는 정확히 기억하기에 쉽지 않기 때문에 특정 도메인을 지정하고 도메인에 따라 웹 사이트의 IP 주소로 매칭시켜준다.
(4) HTTP (HyperText Transfer Protocol) : 클라이언트와 서버가 서로 통신할 수 있게 하기 위한 언어를 정의하는 Application Protocol (5) Component Files : 웹 사이트를 구성하는 여러 파일들
- Codes : 근본적으로는 HTML, CSS, Javascript로 구성되어 있다.
- Resources : 이미지, 음악, 비디오 등등 웹 사이트를 구성하는 코드를 제외한 요소들
3. Workflow of Web in Browser
(1) 브라우저에 웹 사이트 주소(Domain Name)를 입력한다.
(2) 브라우저는 도메인 네임 주소에 대한 IP 주소를 얻기 위해 DNS Server에 요청을 보낸다. (DNS)
(3) 브라우저는 DNS Server로부터 받은 IP 주소를 사용하여 웹 서버에 접속한 후 서버에 웹 사이트의 사본을 클라이언트에게 보내달라는 HTTP Request 메시지를 전송한다. (HTTP)
- 해당 웹 서버에 요청을 보내기 위해 TCP에게 요청 정보를 넘겨준 다음, 웹 서버에 전달된다. (TCP)
- TCP에서 만들어진 정보는 여러 홉의 네트워크를 거쳐 웹 서버가 있는 네트워크로 라우팅될 수 있도록 캡슐화된다. (IP)
- 일반적으로 네트워크 간 라우팅을 하기 전, 게이트웨이의 IP 주소에 대응하는 MAC 주소를 네트워크 내에 브로드캐스트하여 알아낸 다음, 패킷을 게이트웨이에 전달한다. (ARP, Ethernet, NAT, 사설 네트워크) : 유무선 공유기가 게이트웨이의 역할을 수행한다.
- 그 다음, 게이트웨이에서는 IP 헤더를 보고 자신에게 전송된 패킷이 아닌 것을 알고 목적지가 되는 웹 서버의 주소가 속한 네트워크를 찾기 위해 자신(게이트웨이)이 속한 네트워크의 라우터로 패킷을 전달한다. (라우팅 프로토콜)
- 라우터에서도 마찬가지로 IP 해더를 확인하여 목적지가 되는 웹 서버의 주소가 자신(라우터)이 속한 네트워크인지 확인하며, 여러 홉의 네트워크를 거쳐 전달한다.
- 목적지가 되는 웹 서버의 IP 주소가 속한 네트워크에 도달하게 되면, 라우터는 네트워크 내에 브로드캐스트하여 웹 서버의 MAC 주소를 알아낸 다음, 목적지로 패킷을 전송한다. (ARP)
- 패킷을 수신한 웹 서버는 IP 주소를 통해 자신에게 온 패킷임을 알 수 있고, 헤더 정보를 제거한 뒤 남은 데이터를 상위 프로토콜 계층으로 올려보낸다. (IP)
- 웹 서버 내의 어떤 어플리케이션으로 전달해야 하는지 파악한 다음, 필요없는 정보를 제거하고 해당 웹 서버 어플리케이션으로 전달한다. (TCP)
(4) 서버는 요청 메시지를 받고 클라이언트의 요청을 승인하고 처리에 대한 결과(응답)를 전송한다. 정상적인 흐름이면, 서버는 웹 사이트의 파일들을 데이터 패킷으로 브라우저에 전송한다.
(5) 브라우저는 전송받은 데이터 패킷을 조합하여 하나의 웹 페이지를 구성한다.