HTTP통신, 앱을 개발하다보면 REST API를 통해 여러정보들이 가져오든가 아니면 WebView를 이용해 웹페이지를 불러올때 사용합니다. 이 용어는 그만큼 유명하고 많이 쓰입니다. 그렇기에 많은 사람들도 HyperText Transfer Protocol의 약자로 최근에 가장많이 사용되는 통신규약이라고 대부분 잘알고 계실것 입니다.
http의 동작, 우리가 한 웹페이지를 들어간다고 생각해봅시다. 해당 웹페이지로 들어가기위해서는 웹페이지의 주소 url이 필요로 하죠 해당웹페이지의 url을 주소창에 입력하면 해당 웹페이지가 보이게 됩니다.
과연 이 연결되는 동작 내부에서 이렇게 쉽게 url이라는 문자열하나만으로 쉽게 웹페이지가 보여줄수있을까요?
이그림으 보면 알수있듯이 크게 4가지 동작으로 나눌수있습니다.
1.connect(연결)
클라이언트는 서버의 DNS 조회해서 얻어온 IP 주소와 포트 번호를 사용하여 TCP/IP 연결을 설정하여 서버와의 통신 채널을 확립합니다. 이때 https 같은경우 핸드셰이크라는 과정을 거쳐 클라이언트와 서버 간의 인증, 키 교환 및 데이터 암호화 설정또한 이루어 집니다.
2.request(요청)
채널이 만들어진 상황입니다. 클라이언트는 HTTP 요청 메시지를 생성하고 서버에 전송합니다
이 요청 메시지에는 요청 라인, 헤더, 본문 등의 정보가 포함될 수 있습니다
3.response(응답)
서버는 클라이언트의 요청을 처리하고, HTTP 응답 메시지를 생성하여 채널을 통해 클라이언트에게 반환합니다.
응답 메시지에는 상태 코드, 헤더, 본문 등의 정보가 포함됩니다.
4.close(연결 종료)
일부 경우에는 TCP 연결을 유지하고 다른 요청을 위해 재사용하거나, 클라이언트 또는 서버에서 연결을 종료할 수 있습니다.
https://ko.wikipedia.org/wiki/HTTP
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview