웹 브라우저: 네트워크 기능이 있는 프로세스
어플리케이션 레이어는 아래의 계층들에 대해서 전혀 신경쓸 필요가 없다.
어플리케이션 레이어는 client-server architecture이다.
server
client
서버와 클라이언트 간의 통신은 결국 프로세스 간의 통신이다. 운영체제에서는 IPC(Inter Process Comunication)을 위해서 OS가 syscall 인터페이스를 만들어뒀다고 배웠는데, 네트워크에서는 이 프로세스들이 서로 다른 컴퓨터의 프로세스라는 차이점만 있고, 이처럼 다른 컴퓨터 속 프로세스 간의 통신을 위해 OS가 만들어둔 인터페이스는 socket이라고 부른다.
소켓에 쓰면 반대편에서 읽을 수 있는데, 그럴려면 둘이 연결이 되어야하고, 그러기 위해서는 상대편 소켓의 주소를 알아야한다. 그리고 이 소켓의 주소 역할을 하는 것이 IP Address
(어떤 컴퓨터인지)와 Port 번호
(컴퓨터 속 어떤 프로세스인지)이다.
사실 어떤 포털 사이트에 접속하기 위해서는 해당하는 서버의 IP 주소와 port 번호를 알아야 해당 서버 컴퓨터의 socket과 연결이 될 수 있는데, 이를 대신에서 우리는 도메인을 사용한다. 사람들이 도메인을 주소창에 입력하면, DNS라는 시스템에 의해서 IP 주소로 변환이 되고, Port 번호는 입력하지 않아도 자동으로 매칭된다.
웹사이트를 운영하는 거의 대부분의 서버 컴퓨터는 80번 포트를 사용한다. 그 이유는, 만약 모두 다른 포트 번호를 사용한다면 DNS에서 포트까지 다 매칭시켜줘야하는 번거로운 절차를 거쳐야하기 때문이다.
hypertext(웹페이지)를 전달하는 protocol
request/response 이전에 TCP Connection을 해줘야한다고 했는데, 요청받은걸 전달하고 나서 끊어버리는지 계속 연결해두는지에 따라 HTTP가 두 가지로 나뉘어진다.
non-persistent HTTP
: response 준 후 TCP 연결을 끊어내는 경우. (TCP 연결을 끊어줄 때는 서버와 클라이언트 양쪽에서 같이 끊어줘야함) 새로운 요청이 필요하면 그때 다시 TCP 연결.
persistent HTTP
: 끊지 않고 계속 재사용하는 경우. 실제 웹브라우저에서는 persistent HTTP를 사용.
cf)
이미지가 여러 개 있는 html 파일일 경우, 원래는 클라이언트에서 html 파일을 먼저 요청하고 이후 이미지를 다시 요청해야하는데, 실제로는 html과 이미지에 대한 요청을 연달아서 파이프라인 형태로 해준다.