네트워크

[TCP/IP가 보이는 그림책] 3. 애플리케이션 계층

Stitchhhh 2025. 4. 14. 19:50

애플리케이션 계층의 역할

TCP/IP의 최상위 계층에 위치한 애플리케이션 계층의 주요 역할에 대해 소개합니다.

애플리케이션 계층의 위치

TCP/IP의 5계층 중에서 가장 위에 위치한 것이 애플리케이션 계층입니다. 컴퓨터끼리의 주고받기를 사용자가 이용할 수 있는 '통신 서비스'라는 형태로 만드는 것이 이 계층의 역할입니다.

통신 서비스의 실현

애플리케이션 계층의 역할은 통신 서비스를 실현하는 것입니다. 그래서 이 계층은 '송신측과 수신측'이 아니라 '클라이언트와 서버'라는 개념을 갖고 있습니다.

애플리케이션 프로토콜

애플리케이션 계층에는 통신 서비스를 하는 서버와 클라이언트가 주고받기로 정한 프로토콜이 있습니다. 이것을 애플리케이션 프로토콜이라고 합니다.

 

애플리케이션 헤더

서버와 클라이언트의 주고받기에 필요한 정보는 애플리케이션 헤더에 들어있습니다.

애플리케이션 헤더

애플리케이션 계층에서 추가되는 헤더를 애플리케이션 헤더라고 합니다. 여기에는 서비스를 실현하기 위해 가장 중요한 '요청과 응답'에 관한 정보가 들어 있습니다.(프로토콜에 따라 헤더를 사용하지 않는 경우도 있습니다.)

아래 계층으로 가면 헤더와 데이터가 하나로 묶여버리므로, 데이터가 사용자가 해석할 수 있는 형태로 되어 있는 것은 이 계층뿐입니다.

텍스트 기반과 바이너리 기반

애플리케이션 헤더에 무엇을 어떻게 쓸지는 프로토콜에 따라 다릅니다. 또 사람이 읽을 수 있는 언어(텍스트 기반)로 쓰는 경우와 컴퓨터가 처리하기 쉬운 언어(바이너리 기반)로 쓰는 경우가 있습니다.

헤더만을 보낸다?

클라이언트가 서버에 서비스를 요청할 때 구체적인 데이터를 주고받지 않고 연락만 취할 때는 데이터 부분이 비어 있는 상태로 보냅니다.

 

HTTP 프로토콜

WWW 서비스를 지탱하는 프로토콜 HTTP를 소개합니다

주고받기 절차

HTTP 프로토콜은 하나의 요청에 대해 하나의 응답을 반환하는 아주 간단한 프로토콜입니다. 실제로 페이지를 구성하는 파일 수만큼 이 작업을 반복합니다.

요청 패킷과 응답 패킷

HTTP 프로토콜에서는 '요청'과 '응답'이라는 두 종류의 패킷을 사용하여 텍스트 형식으로 주고받기를 수행합니다.

 

요청 패킷

  • 메소드 : 요청의 종류입니다. GET 외에도 다양한 메소드가 존재합니다.
  • 요청 헤더 : 서버에 전달하는 클라이언트의 정보입니다. 항목명과 정보는 콜론으로 구분합니다.
  • 공백 줄 : 헤더와 본문의 경계를 나타냅니다.
  • 본문 : 요청 시 필요한 데이터가 들어갑니다. 메소드가 GET인 경우 비어 있게 됩니다.

응답 패킷

  • 메소드 : 클라이언트의 요청에 대한 처리 결과입니다.
  • 응답 헤더 : 서버에 전달하는 클라이언트의 정보입니다. 항목명과 정보는 콜론으로 구분합니다.
  • 공백 줄 : 헤더와 본문의 경계를 나타냅니다.
  • 본문 : 클라이언트에게 전달할 데이터가 들어갑니다.

 

통신을 유지하는 구조(1)

HTTP 프로토콜은 접속 상태를 유지한 채로 주고받기를 계속할 수가 없습니다.

HTTP 프로토콜은 1회 완결

HTTP 프로콜은 원래 '요청된 데이터를 반환하는 것'만을 목적으로 만들어졌습니다. 그래서 한 번의 요청과 응답으로 통신은 완결되고, 과거에 수행한 통신과 관련을 맺게 되는 경우는 없습니다.

이렇게 한 번으로 끝나는 프로토콜을 상태 비보존형 프로토콜이라고 합니다.

쿠키

HTTP 프로토콜의 주고받기에 관한 정보를 클라이언트측에 저장해두면 다음 통신때 그 정보를 서버에게 제시함으로써 서버는 사용자를 지정하고 이전 회에서 이어진 통신으로 취급할 수 있습니다. 이때 주고받는 정보를 쿠키라고 합니다.

쿠키는 HTTP 프로토콜의 정규 장치가 아니며, CGI(Common Gateway Interface) 등 클라이언트로부터 요청에 맞게 웹 페이지를 작성하는 장치와 함께 사용합니다.

 

통신을 유지하는 구조(2)

CGI를 사용한 쿠키의 주고받기를 소개합니다.

CGI를 사용하면 이런 것이 달라요

일반 웹 페이지의 주고받기

WWW 서버에서 응답 패킷을 만들어서 반환

CGI를 사용한 웹 페이지 주고받기

CGI에서 응답 패킷의 응답 헤더에 쿠키의 저장을 의뢰하는 명령을 작성

 

SSL/TLS

SSL/TLS를 이용하면, 인터넷 상에서 주고받는 데이터의 안정성을 높일 수 있습니다.

SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)

SSL은 인터넷 상에서 데이터 통신을 암호화하는 프로토콜입니다. SSL을 바탕으로 표준화한 것이 TLS입니다. SSL이라는 이름이 널리 보급되어 있어, SSL/TLS라고 표기하는 경우도 많습니다.

SSL/TLS의 구조

  1. WWW 클라이언트에서 SSL/TLS를 적용한 웹 페이지를 요청합니다.
  2. WWW 서버는 공개키, 비밀키, 인증서를 준비하고 클라이언트에 공개키와 인증서를 반환합니다.
  3. WWW 클라이언트는 증명서의 신뢰성을 확인하고, 공통키를 만듭니다.
  4. WWW 클라이언트는 데이터를 공통키로 암호화하고 공통키를 공개키로 암호화한 후 WWW 서버로 송신합니다.
  5. WWW 서버는 암호화된 공통키를 비밀키로 해제하고, 해제한 공통키로 데이터를 해제합니다.
  6. 이후부터는 공통키로 암호화하고 주고받기를 합니다.

 

문자 코드

대부분의 통신 서비스에서 주고받는 정보에는 '문자'가 포함되어 있습니다. 하지만 문자 그 자체를 주고받는 것은 아닙니다

문자 코드

컴퓨터 안에서는 문자 코드라는 특수한 수치를 사용하여 문자는 나타냅니다.

인코딩과 디코딩

일반적으로 사람이 이해하는 언어를 컴퓨터가 이해하는 언어(문자 코드)로 변환하는 것을 인코딩, 컴퓨터가 이해하는 언어를 다시 사람이 이해하는 언어로 바꾸는 것을 디코딩이라고 합니다.