Network

모두의 네트워크 7장. 응용 계층: 애플리케이션에 데이터 전송하기

응용 계층의 역할

일반적으로 서비스를 요청하는 측을 클라이언트, 서비스를 제공하는 측을 서버라고 한다. 서버 측에는 웹 서버 프로그램과 메일 서버 프로그램 등이 있다. 이러한 애플리케이션은 응용 계층에서 동작한다.

즉, 애플리케이션이 동작하는 계층이라 응용 계층이다.

(여기서는 세션 계층, 표현 계층을 모두 포함해 응용 계층이라고 칭한다.)

응용 계층에서는 사용자측의 요청을 전달하기 위해 통신 대상이 이해할 수 있는 메시지로 변환하고 전송 계층으로 전달하는 역할을 한다. 이를 위해서는 응용 계층의 프로토콜을 사용해야한다.

  • HTTP / 웹 사이트 접속
  • DNS / 이름 해석
  • FTP / 파일 전송
  • SMTP / 메일 송신
  • POP3 / 메일 수신

HTTP란?

클라이언트는 웹 사이트를 보기 위해 서버의 80번 포트를 사용해 HTTP 통신을 한다.

  • HTTP/1.0
    • 요청을 보낼 때마다 연결했다 끊는 작업을 반복한다.
  • HTTP/1.1
    • keepalive 기능이 추가되었다. 이는 연결을 한 번 수립하면 데이터 교환을 끝낼 때까지 유지하고, 데이터 교환을 모두 끝내면 연결을 끊는 구조이다. keepalive는 요청을 순서대로 처리하는 특징을 갖는다.
    • keepalive 관련 흥미로운 글 - nginx reload와 keep-alive (부제: zero-downtime은 사기일까?)
  • HTTP/2.0
    • 요청을 보낸 순서대로 응답을 반환하지 않아도 된다.

이 외에도 HTTP 프로토콜은 버전별로 추가적인 특징을 가지니, 한번 쯤 확인해보면 좋을 것 같다.

참고가 될 만한 링크를 첨부한다.

 

이 외에도 7장에는 추가적으로 DNS 서버, 메일 서버의 동작이 포함되어있는데 매우 간단하게 포함되어있다. 그래서 따로 정리하지 않았다. 이후 성공과 실패를 결정하는 1%의 네트워크 원리를 정리하면서 DNS 서버와 관련된 자세한 글을 게재할 생각이다. 

 

모두의 네트워크 정리하기