TCP/IP 4계층 - 애플리케이션 계층

애플리케이션 계층

애플리케이션 계층의 프로토콜들은 웹이나 이메일, 파일 공유와 같이 사용자가 실제로 사용하면서 체감할 수 있는 서비스를 제공한다. 하지만 사용자가 직접 이용하지 않아서 체감할 수 없는 프로토콜들도 존재하는데 DNS, DHCP, SSL/TLS, NTP, LDAP와 같은 것들이 있다. 이러한 프로토콜들은 OS나 다른 애플리케이션 계층의 프로토콜들이 간접적으로 사용하는데, 주로 인터넷이나 LAN의 원활한 사용을 위해 사용자에게 보이지 않는 이면에서 동작하고 있다.

HTTP

HyperText Transfer Protocol의 약자이다. 말 그대로 요청에 대한 응답으로 HTML을 해준다.

HTTP message

HTTP 프로토콜을 통해 클라이언트와 서버는 데이터를 주고받게 되는데, 이 때에 주고받은 데이터를 HTTP 메세지라고 부르며 크게 request, response의 두 가지 형태로 구분된다. HTTP 메세지는 총 네 가지 영역으로 구분한다.

  1. start line - 요청 / 응답에 따라 두 가지로 나뉨
    • 요청 : request line
    • 응답 : status line
  2. header - 메세지 상세정보
  3. blank line
  4. message body

stateless status

HTTP는 무상태성이다. 통신할때 정보를 한 번씩 주고받고 바로 끊기때문에 상태정보를 저장하지 않는다. 상태정보를 저장하지 않는다 함은 사용자나 클라이언트의 컨택스트를 서버쪽에 유지 하지 않는다는 의미로,쉽게 표현하면 HTTP Session과 같은 컨텍스트 저장소에 상태 정보를 저장하지 않는 형태를 의미한다.

URL

Uniform Resource Locator의 약자이다.

1
2
http://www.sample.co.kr/sample/index.html
스키마://호스트.도메인/디렉터리/파일

HTTP 응답과 상태 코드

HTTP response 데이터의 첫 번째 행에는 상태 코드가 들어가며, 요청에 대한 응답 상태를 표시하기 위함이다. 응답 내용은 메세지 바디에 들어가게된다. 상태코드는 1xx ~ 5xx 번 대로 이루어져 있으며 간단하게 살펴보면

  • 1xx : 조건부 응답
  • 2xx : 성공
  • 3xx : 리다이렉트
  • 4xx : 클라이언트 오류(요청 오류)
  • 5xx : 서버 오류
    로 나누어 진다.

세션을 유지하기 위한 쿠키

앞서 얘기한 것 처럼 HTTP는 stateless 프로토콜이기 때문에 요청과 응답하는 과정에서 상태 정보를 저장하지 않는다. 상태를 유지하기 위해서 Cookie(쿠키)를 사용한다.

웹 브라우저는 웹 서버로부터 응답받은 메세지에 Set-Cookie라는 물자열이 있는지 확인하고, 만약 있으면 쿠키 내용을 로컬 디스크에 쿠키형태로 저장한다. 기본적으로 쿠키는 클라이언트가 보관하고있기 때문에 보안에 취약한데, 각각의 브라우저들이 자체적으로 방어책을 구현하고 있다. 예를 들면, 쿠키가 생성된 웹 서버와 동일한 도메인을 사용하는 웹 사이트에만 쿠키를 전송시키거나, 유효기간이 지난 쿠키들을 폐기하기도 한다. 중요한 것은 유출되었을 때 보안 문제가 생길 만한 정보는 쿠키에 저장하지 않는 것이 제일 중요하다. 기본적으로 각종 정보는 서버에 저장하는 것이 원칙이고, 동일한 사용자인지 확인하기 위한 세션 ID 등의 식별 정보만 클라이언트에 쿠키로 저장하도록 제한해야 한다.

Share