HTTP는 웹 상에서 데이터를 주고받기 위한 프로토콜 중 하나이다. HTTP는 클라이언트와 서버 간의 통신을 담당하여 웹 페이지의 요청과 응답을 처리한다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Ff14be1ac-8ef4-493e-b5b6-5348be8d03b3%252FUntitled.png%3Ftable%3Dblock%26id%3D8bd18457-0de3-4a81-a281-99c3d2d06f69%26cache%3Dv2&w=3840&q=75)
클라이언트가 웹 서버에게 자료를 요청한다. 이때 클라이언트는 브라우저(크롬, 익스플로어) 등을 이용해 URL 을 입력한다.
예를 들어 http://www.abcd.com/USER/login.html 을 입력하게 되면 웹서버에 login.html 파일을 요청한 것이다.
이 과정을 HTTP 요청 메서드라고 한다.
요청을 할때 요청 데이터가 전송되는데 다음과 같다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fadece795-e5ab-425b-8219-aedfb602aadb%252FUntitled.png%3Ftable%3Dblock%26id%3D94fb378c-1c9b-47d6-81cb-322b2b4dd476%26cache%3Dv2&w=3840&q=75)
Request Header
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252F2da061af-ab24-43c9-9b58-a0b44f0638d7%252FUntitled.png%3Ftable%3Dblock%26id%3Da6ef47e0-de90-4e90-ae33-d91e0db8d3df%26cache%3Dv2&w=3840&q=75)
요청 데이터는 헤더와 바디를 가지고 있다. 헤더는 명령을 수행할 메서드가 있다. 그림에서는 POST 메서드를 가지고 있다. 그리고 출발지의 IP 주소와 URL 을 가지고 있다. 요청인 경우는 바디값은 없다.
Response HTTP
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fc029b085-4be7-4840-9488-799afee9a372%252FUntitled.png%3Ftable%3Dblock%26id%3D0476ecd9-46de-453c-8aa0-a9d5d7be08ed%26cache%3Dv2&w=3840&q=75)
요청 HTTP 의 헤더에는 각 호스트의 IP 가 표기되고 MIME 이 표시된다.
MIME 은 바디 데이터의 확장자를 의미한다. 사진에는 html 확장자로 표기되어 있다.
그리고 바이트 단위로 조각난 데이터를 다시 인코딩해야할 때도 필요한게 charset이다.
charset(Charactor set) 로 컴퓨터 시스템에서 문자를 저장하기 사용되는 특정한 문자열의 집합이다. 보통 UTF-8 을 사용하고, 그림에서는 iso-8859-1 를 사용한다.
바디에는 요청한 데이터의 내용이 포함된다.
HTTP 통신은 요청이 오면 응답을 하고 통신이 종료되기 때문에 반이중 통신이다. Stateless 라고도 하며 클라이언트의 상태를 관리하지 않기 때문에 확장성과 유연성이 높아질 수 있다. 반대로 클라이언트와 서버의 연결을 유지하는 것은 Stateful 이라고 한다.
Share article