http, 전공자든 비전공자든 한번쯤은 들어봤을 단어일것입니다. 이 http에 대해서 한번 알아봅시다!
HTTP는 Hyper Text Transfer Protocol 의 약자로 하이퍼텍스트를 전송하는 통신규약입니다. 하이퍼텍스트란, 우리가 웹사이트에서 링크를 통해 다른 문서에 접근해서 볼 수 있는 텍스트를 의미합니다. 따라서 이 텍스트(데이터)를 주고받을 수 있게하는 프로토콜 입니다.
이런 식으로 클라이언트가 request를 보내면 서버에서 response를 보내며 소통하는 방식입니다.
HTTP의 특징으로는 TCP/IP 기반으로 비연결성과 무상태성이 있습니다.
HTTP의 동작과정에 대해 알아볼 필요가 있습니다. 앞에 설명했듯이 클라이언트가 Request를 보내면 서버에서 response를 보내는데요 , response를 보낸 이우에 서버와 클라이언트 사이의 연결을 끊게 됩니다. 이를 비 연결성이라고 합니다.
HTTP는 인터넷 상에 불특정 다수와 연결하는것을 대상으로 설계되었습니다
이렇게 많은 클라이언트와 계속 연결을 유지하기 위해선 비용이 많이 들겠죠? 그렇기 때문에 response를 보내면 바로 연결을 끊어버려 비용을 줄이는 방법을 선택 한 것입니다.
무상태성은 비연결성이라는 특성이 존재하기 때문에 나온 것인데요, 연결을 끊어버리기 때문에 서버는 클라이언트의 정보를 알 수 없습니다. 만약 로그인을 해야만 이용할 수 있는 기능을 사용해야 한다면 로그인을 한 후, 기능을 사용해 response를 받고 연결이 끊어지고, 또 로그인하고...의 방법일 것입니다.
이런 웃픈 상황이 나올 수 있죠
이를 해결하기 위해 쿠키와 세션이 존재합니다. 쿠키와 세션은 클라이언트상의 저장소라고 볼 수 있습니다 이 저장소에 사용자 정보를 저장해서 서버에 정보를 같이 보내는방식으로 동작합니다.
클라이언트에서 보낼 수 있는 요청의 종류입니다. 대표적으로
GET(자료 요청), POST(자료 생성 요청), PUT(자료 수정 요청), DELETE(자료 삭제 요청)이 있습니다. 이외에도 다른 request method가 있고 이곳에서 확인할 수 있습니다
서버가 특정 동작을 취하게끔 만들기 위해 클라이언트에서 전송하는 메세지입니다.
위는 위키백과에서 가져온 예시 http message인데요 하나하나 무엇인지 알아봅시다
HTTP Method + 요청 타깃 + HTTP 버전
으로 이루어져있는 상태를 나타내는 상태 줄 입니다User_Agent, Accept
등이 있습니다. 여러 헤더는 이곳에서 볼 수 있습니다서버가 클라이언트에게 보내는 요청에 대한 답변입니다
이것도 위키백과에서 가져온 http message입니다.
HTTP Method + 상태 코드 + 상태 메세지
로 이루어진 사태 줄 입니다.보통 주소창을 볼때 HTTP://...
로 시작되는 주소보다는 HTTPS://...
로 시작하는 주소를 더 많이 볼 수 있을것입니다. HTTP 대신 HTTPS를 사용하는 것 인데요 이것은 기존 HTTP에 보안을 첨가한 것 이라고 할 수 있습니다.
기존 HTTP는 암호화를 하지 않았기 때문에 도청 가능하고 통신상대를 확인하지 않기 때문에 위장이 가능합니다. 이런 단점을 보안하기 위해서 SSL, TLS프로토콜을 이용해서 세션 데이터를 암호화합니다.