전화 통화를 할 때 규약이 필요하듯이(EX. 서로 알아들을 수 있는 말을 사용해야 함, 한 사람이 말할 때 다른 사람은 들어야 함 등) 웹 브라우저와 웹 서버 간에도 서로 통신하기 위해선 규약이 필요하다. 이때 필요한 규약을 HTTP라고 한다.
WWW(World Wide Web)이 인터넷의 전부는 아니다. 이는 인터넷 기반의 대표 서비스 중 하나다.
이름 | 프로토콜 | 포트 | 기능 |
---|---|---|---|
WWW | HTTP | 80 | 웹 서비스 |
SMTP/POP3/IMAP | 25/110/114 | 이메일 서비스 | |
FTP | FTP | 21 | 파일 전송 서비스 |
DNS | TCP/UDP | 53 | 네임 서비스 |
NEWS | NNTP | 119 | 인터넷 뉴스 서비스 |
TCP/IP 기반의 네트워크가 전세계적으로 확대되어 하나로 연결된 네트워크들의 네트워크(네트워크의 결합체).
▷ 팀 버너스리(Tim Berners-Lee)와 그의 팀이 CERN(유럽 입자 물리학 연구소)에서 HTML뿐만 아니라 웹 브라우저 및 웹 브라우저 관련 기술과 HTTP를 발명했다.
▷ 문서화된 최초의 HTTP 버전은 HTTP v0.9(1991년)이다.
▷ HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜(protocol)이다(아마도 가장 성공적인 인터넷 프로토콜). HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계가 되어 있다.
▷ HTTP는 계속 발전해 HTTP/2까지 버전이 등장한 상태다. 우리 교육에서 현재 가장 많이 사용되는 건 http v1.1
▷ HTTP는 서버/클라이언트 모델을 따른다(클라이언트가 서버에 요청을 보내면 서버는 클라이언트에게 응답을 보냄).
▷ HTTP는 무상태(Stateless) 프로토콜이라고도 한다. 서버는 클라이언트에게 받은 요청을 응답하고 나면 클라이언트와 연결을 끊어 바로 다음 것을 요청해도 이전 상황을 알 수 없다.
└ 작동방식의 장점 : 불특정 다수를 대상으로 하는 서비스에 적합하다. 클라이언트와 서버가 계속 연결된 형태가 아니어서 클라이언트와 서버 간 최대 연결 수보다 훨씬 많은 요청과 응답 처리가 가능하다.
└ 작동방식의 단점 : 연결을 끊어버려 클라이언트의 이전 상황을 알 수 없다 = 무상태(Stateless). 이러한 특징 때문에 정보 유지를 위하여 Cookie와 같은 기술이 등장했다.
▷ 인터넷 상 자원의 위치, 특정 웹 서버의 특정 파일에 접근하기 위한 경로 혹은 주소.
▷ 물리적 서버-컴퓨터를 찾기 위해 필요한 것 : IP/도메인 주소(=집, 하나의 컴퓨터에 IP는 하나)
▷ 소프트웨어 서버를 찾기 위해 필요한 것 : 포트 값(=방, 하나의 서버는 하나의 방을 차지)
▷ 하나의 물리적 컴퓨터에는 여러 개의 소프트웨어 서버가 동작할 수 있다. 단, 서버는 포트 값이 다르게 동작해야 한다(이런 포트 값은 0보다 큰 숫자 값이다).
굉장히 중요한 그림... 머리에 넣어두자!
① 클라이언트가 원하는 서버에 접속(connect)
② 클라이언트가 서버에 요청(request)
▷ 요청 데이터에는 정해진 규칙이 있다(요청 데이터 포맷). 이는 요청헤더 / 빈 줄 / 요청바디 세 부분으로 나뉜다.
▷ 요청 헤더의 두 번째 줄부터는 여러 줄의 헤더 정보가 나온다.
▷ 각각의 줄은 헤더 명과 헤더 값이 콜론으로 구분되어진다. 각 줄은 *라인피드와 캐리지 리턴으로 구분된다.
▷ 요청헤더의 첫 번째에 등장하는 GET = 요청 메서드
▷ GET : 정보를 요청하기 위해서 사용. (SELECT) / 최초의 웹 서버는 GET 방식만 지원했음.
▷ POST : 정보를 밀어넣기 위해서 사용. (INSERT)
▷ PUT : 정보를 업데이트 하기 위해서 사용. (UPDATE)
▷ DELETE : 정보를 삭제하기 위해서 사용. (DELETE)
▷ HEAD : (HTTP)헤더 정보만 요청함. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지 확인하기 위해서 사용.
▷ POTIONS : 웹서버가 지원하는 메서드의 종류를 요청함.
▷ TRACE : 클라이언트의 요청을 그대로 반환함. EX) echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용.
요청 헤더의 마지막 부분 : HTTP 프로토콜의 버전. 웹 브라우저가 사용하는 프로토콜의 버전을 명시한다.
예시의 요청 바디에 아무 것도 없는 이유 : GET 방식은 요청할 때 가지고 가야하는 자원 같은 것들을 URI에 붙여서 가져가 요청 바디가 없다. 바디 요소는 요청 메서드가 POST나 PUT일 때 들어온다.
③ 요청에 따른 응답 결과를 클라이언트에게 응답(response)
▷ 응답 데이터 포맷도 헤더부분 / 빈 줄 부분 / 응답 바디 부분으로 이루어진다.
▷ 첫 줄에는 반드시 응답 HTTP 프로토콜의 버전, 그 다음은 응답 코드, 그리고 응답 메시지 등이 나온다.
▷ 나머지 헤더 부분에는 날짜, 웹 서버 이름과 버전, 콘텐츠 타입, 캐시 제어 방식, 콘텐츠 길이 등의 값이 나온다.
▷ 빈 줄 다음에 나오는 것이 실제 응답 리소스 데이터가 나오는 부분이다.
④ 응답이 끝나면 서버-클라이언트 연결은 끊긴 상태로 유지(close)
1. HTTP에 S가 붙은 HTTPS는 어떤 용도로 사용되는가? HTTP와 무엇이 다른가?
▷ HTTPS는 SSL(Secure Socket Layer)또는 TLS(Transport Layer Security) 인증서를 사용하는 HTTP로, 서버와 주고받는 데이터가 암호화되어 HTTP보다 안전한 보안용 프로토콜이다. HTTPS의 인증서는 사용자가 사이트에 제공하는 정보를 암호화하여 누군가 정보를 가로채더라도 해독이 불가하게 만든다. HTTP는 단순 텍스트를 주고 받기 때문에 네트워크에서 전송 신호를 가로챌 수 있는 경우 원하지 않는 데이터 유출이 발생 할 수도 있다는 점에서 HTTPS와 차이점이 있다. | HTTP 와 HTTPS의 차이
라인피드와 캐리지 리턴 : Line Feed(/n=LF=새로운 라인), Carriage Return(/r=CR=맨 앞으로 이동하라).
타자기에서 비롯된 용어(종이를 오른쪽 끝으로 움직이는 캐리지 리턴, 종이를 한 줄 간격만큼 위로 올려주는 라인 피드). | 개발 용어 : 캐리지 리턴(CR), 라인 피드 (LF) 알아보기