Application layer

HTTP(HyperText Transfer Protocol)

HTTP는 웹 클라이언트가 웹 서버에게 웹 페이지를 요청하는 방식과 서버가 클라이언트로 어떻게 웹 페이지를 전송하는지를 정의한다.

HTTP는 데이터의 손실 또는 TCP가 어떻게 손실 데이터를 복구하고 네트워크 내부에서 데이터를 올바른 순서로 배열하는지 걱정할 필요가 없다. 이것은 TCP와 프로토콜 스택의 하위 계층들이 하는 일이다.

HTTP 서버는 클라이언트에 대한 정보를 유지하지 않으므로, HTTP를 비 상태 프로토콜(stateless protocol)이라고 한다.

HTTP의 디폴트 모드는 파이프라이닝을 이용한 지속 연결을 사용한다. 지속 연결에서 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지한다. 같은 클라이언트 서버 간의 요청과 응답은 같은 연결을 통해 보내진다.

Stateless HTTP Protocol

HTTP Transaction은 매번 요청에 대해 독립적이다. 웹 브라우저를 통한 클라이언트의 연속적인 작업 요청이 유지되거나 해당 정보를 보관하지 않는다. 이러한 형태의 Transaction을 stateless라고 한다.

Stateless 통신 방식은 다수의 사용자를 상대로 하는 인터넷에서 네트워크나 서버의 오버헤드를 줄일 수 있다. 그러나 일련의 연속된 작업에서 이전의 정보를 유지할 수 없으므로 데이터를 추적하거나 사용자 인식 등의 서비스를 하기 어렵다.

HTTP 통신에서 이러한 점을 해결하기 위해 Cookie나 Session 등을 이용하여 클라이언트의 Transaction과 관련된 정보를 서버상에 저장하여 관리하는 방법을 제공하고 있다.

HTTP 메시지 포맷

GET :
브라우저가 URL 필드로 식별되는 객체를 요청할 때 사용된다.

POST :
개체 몸체는 GET 방식에서는 비어 있고(empty) POST 방식에서 사용된다. HTTP 클라이언트는 사용자가 폼을 채워 넣을 때 POST 방식을 사용한다. 방식 필드의 값이 POST이면, 개체 몸체는 사용자가 폼 필드에 입력한 것을 포함한다.

HEAD :
GET 방식과 유사하다. 서버가 HEAD 방식을 가진 요청을 받으면 HTTP 메시지로 응답하는데, 요청 객체는 보내지 않는다.

HTTP 응답 메시지

200 OK

301 Moved Permanentely

400 Bad Request

401 Not Found

505 HTTP Version Not Supported

FTP(File Transfer Protocol)

FTP가 한 파일을 전송하는 데 두 TCP 연결, 즉 제어 연결(control connection)과 데이터 연결(data connection)을 동시 사용한다. 제어 연결은 두 호스트 간에 제어 정보, 즉 사용자 계정, 비밀번호, 원격 디렉터리를 바꾸는 명령, 파일을 보내고(put), 가져오는(get) 명령들과 같은 정보를 보내는데 사용된다. 반면에 데이터 연결은 실제 파일을 보내는데 사용된다.

FTP에서 제어 연결은 사용자 세션 시간 동안 계속 연결되어 있으나, 세션의 각 파일이 전송될 때마다 새로운 데이터 연결이 생성된다(데이터 연결은 지속적이지 않다).

진행 중인 각각의 사용자 세션에 대한 상태 정보를 유지하는 것은 FTP가 동시에 유지할 수 있는 전체 세션의 수를 상당히 제한시킨다. 반면에 HTTP는 사용자 상태를 유지할 필요가 없는 비상태 유지(stateless) 애플리케이션이다.


SMTP(Simple Mail Transfer Protocol)

SMTP는 메일을 송신자의 메일 서버로부터 수신자의 메일 서버로 전송하는 데 TCP의 신뢰적인 데이터 전송 서비스를 이용한다. HTTP는 원칙적으로 풀(pull) 프로토콜이다. 누군가 서버에 정보를 올리고 사용자가 편의에 의해서 서버로부터 정보를 가져오기 위해 HTTP를 사용한다. 반면에 SMTP는 원칙적으로 푸시(push) 프로토콜이다.


results matching ""

    No results matching ""