Application Layer(1)

June Lee·2021년 4월 18일
0

네트워크

목록 보기
2/28

웹 브라우저: 네트워크 기능이 있는 프로세스

어플리케이션 레이어는 아래의 계층들에 대해서 전혀 신경쓸 필요가 없다.
어플리케이션 레이어는 client-server architecture이다.

server

  • 24시간 켜져있어야 한다.
  • 고정된 IP 주소를 가져야한다. (그래야 클라이언트가 찾아갈 수 있음)

client

  • 고정된 IP 주소를 가질 필요가 없다.

서버와 클라이언트 간의 통신은 결국 프로세스 간의 통신이다. 운영체제에서는 IPC(Inter Process Comunication)을 위해서 OS가 syscall 인터페이스를 만들어뒀다고 배웠는데, 네트워크에서는 이 프로세스들이 서로 다른 컴퓨터의 프로세스라는 차이점만 있고, 이처럼 다른 컴퓨터 속 프로세스 간의 통신을 위해 OS가 만들어둔 인터페이스는 socket이라고 부른다.


Socket

소켓에 쓰면 반대편에서 읽을 수 있는데, 그럴려면 둘이 연결이 되어야하고, 그러기 위해서는 상대편 소켓의 주소를 알아야한다. 그리고 이 소켓의 주소 역할을 하는 것이 IP Address(어떤 컴퓨터인지)와 Port 번호(컴퓨터 속 어떤 프로세스인지)이다.
사실 어떤 포털 사이트에 접속하기 위해서는 해당하는 서버의 IP 주소와 port 번호를 알아야 해당 서버 컴퓨터의 socket과 연결이 될 수 있는데, 이를 대신에서 우리는 도메인을 사용한다. 사람들이 도메인을 주소창에 입력하면, DNS라는 시스템에 의해서 IP 주소로 변환이 되고, Port 번호는 입력하지 않아도 자동으로 매칭된다.
웹사이트를 운영하는 거의 대부분의 서버 컴퓨터는 80번 포트를 사용한다. 그 이유는, 만약 모두 다른 포트 번호를 사용한다면 DNS에서 포트까지 다 매칭시켜줘야하는 번거로운 절차를 거쳐야하기 때문이다.


Transport Layer에서 서비스 받기를 원하는 것

  1. 데이터 무결성 (data integrity)
  2. 내가 보낸 데이터가 일정 시간 안에는 도착했으면 좋겠다. (timing)
  3. 내가 보낸 데이터가 일정 시간에 최소 어떤 양만큼 전달되면 좋겠다. (throughput)
  4. security
    -> 그렇지만, 사실 transport layer에서 제공해주는 것은 1번 데이터 무결성 뿐이다. 그나마도 TCP는 제공해주지만, UDP는 제공해주지 않는다.

Application Layer의 대표적 프로토콜

  • e-mail : SMTP
  • web : HTTP
  • file transfer : FTP
  • streaming multimedia : HTTP, RTP

HTTP(Hypertext Transfer Protocol)

hypertext(웹페이지)를 전달하는 protocol

  • 메소드는 request와 response가 있다.
  • 웹은 전송계층에서 TCP를 사용하기 때문에, response/request 이전에 TCP Connection을 해줘야한다.
  • HTTP는 stateless하다. (=상태가 없다. 즉 요청 들어오면 그걸 주는거지 더 이상의 정보를 기억하지 않는다)

TCP Connection을 사용하는 방식에 따른 HTTP 분류

request/response 이전에 TCP Connection을 해줘야한다고 했는데, 요청받은걸 전달하고 나서 끊어버리는지 계속 연결해두는지에 따라 HTTP가 두 가지로 나뉘어진다.

  1. non-persistent HTTP
    : response 준 후 TCP 연결을 끊어내는 경우. (TCP 연결을 끊어줄 때는 서버와 클라이언트 양쪽에서 같이 끊어줘야함) 새로운 요청이 필요하면 그때 다시 TCP 연결.

  2. persistent HTTP
    : 끊지 않고 계속 재사용하는 경우. 실제 웹브라우저에서는 persistent HTTP를 사용.

cf)
이미지가 여러 개 있는 html 파일일 경우, 원래는 클라이언트에서 html 파일을 먼저 요청하고 이후 이미지를 다시 요청해야하는데, 실제로는 html과 이미지에 대한 요청을 연달아서 파이프라인 형태로 해준다.

profile
📝 dev wiki

0개의 댓글