HTTP(hypertext transfer protocol)
개요
HTTP는 웹의 중심으로 서로 다른 종단 시스템에서 수행되는 client, server 프로세스가 통신하는 데 사용한다.
client가 server에게 웹 페이지를 어떻게 요청하는지, server가 client로 웹 페이지를 어떻게 전송하는지 정의하는 프로토콜
요청/응답 예시
- HTTP는 TCP를 전송 프로토콜로 사용
- client는 server에 TCP 연결 시작
- 연결 성공시 client와 server 프로세스는 socket 인터페이스를 통해 TCP 연결
- client가 HTTP 요청 메시지를 소켓 인터페이스로 전송하고 소켓 인터페이스로 HTTP 응답 메시지를 받는다.
계층구조의 장점
client가 메시지를 소켓 인터페스로 보내면 메시지는 TCP에서 관리하게 된다.
따라서 HTTP는 데이터 손실 및 복구에 대해서는 하위 프로토콜에서 처리하기 때문에 걱정할 필요가 없다.
연결 방식
인터넷 애플리케이션에서 client 및 server는 상당한 기간 동안 통신한다.
따라서 애플리케이션의 요구가 주기적 또는 간헐적으로 만들어 질 수 있다.
그러므로 TCP 상에서 개발자는 연결 방식을 선택할 필요가 있다.
지속 연결
- http의 디폴트 연결 방식
- TCP 통신 시 각 request/response가 같은 TCP 연결을 통해 보내는 방식
비지속 연결
- TCP 통신 시 각 request/response가 분리된 TCP 연결을 통해 보내는 방식
process communicate
프로세스
- host에서 실행 중인 프로그램을 프로세스라 한다.
- 두 프로세스 간 통신에서 통신을 초기화 하는 프로세스를 client라하고, 세션 실행을 위해 접속을 대기하는 프로세스를 server라 한다.
소켓 통신
프로세스는 소켓을 통해 네트워크에 메시지를 주고 받는다.
- 소켓: 어플리케이션 프로세스와 트랜스포트 프로토콜 간의 인터페이스
주소화
수신 프로세스를 식별하기 위해 IP address와 port 번호를 사용한다.
- IP
- 호스트 식별
- network layer에서 다룬다
- port
- 소켓 식별
- web은 80번 사용
- transport layer에서 다룬다