HTTP (Hyper Text Transfer Protocol) ?
- HTTP란 인터넷에서 데이터를 주고 받을 수 있는 프로토콜 (여기서 데이터는 주로 HTML 문서를 가리킨다.)
- 즉, 클라이언트와 서버 사이에서 이루어지는 요청/응답에 대한 규칙이다.
- 모든 프로그램은 이 규약에 맞춰 개발 함으로써 서로 데이터를 교환할 수 있다.
HTTP의 특징
- HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해서 해석된다.
- 주로 TCP를 사용한다. ⇒ HTTP/3 부터는 UDP를 주로 사용한다.
- HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다. ⇒ 즉, 클라이언트가 요청을 해서 응답을 받으면 연결을 끊어버린다.
(이렇게 하지 않으면 서버는 수많은 클라이언트와 연결을 계속 유지해야 한다. ⇒ 리소스 낭비) ⇒ 이를 위한 해결책으로 쿠키와 세션이 있다.
- HTTP는 연결을 유지하지 않는 프로토콜이므로 요청/응답 방식으로 작동한다.
HTTP 응답 상태 코드
- 100 - 109
- 200 - 206
- 300 - 305
- 400 - 415
- 500 - 505
HTTP Method
클라이언트가 서버로 요청을 할 때, 어떠한 목적을 갖는 행위인지 HTTP 메서드에 명시하는 것
HTTP Method 정리
- GET
- HEAD
- 정확히 GET과 같지만, 서버는 응답으로 엔터티 본문 반환없이 헤더만을 반환.
- 클라이언트는 리소스를 가져올 필요 없이 헤더만을 통해 정보를 얻는다.
- PUT
- 서버가 요청의 본문을 갖고 요청 URI의 이름대로 새 문서를 만들거나, 이미 URI가 존재한다면 요청 본문을 변경할 때 사용
- POST
- 서버에 입력데이터를 전송하며 요청 엔티티 본문에 데이터를 넣어 서버에 전송( 삽입 )
- DELETE
- 서버에서 요청 URI 리소스를 삭제하도록 요청 ( 삭제 )
- TRACE
- 클라이언트와 목적지 서버 사이에 있는 모든 HTTP 애플리케이션의 요청/응답 연쇄를 따라가면서 자신이 보낸 메시지의 이상 유무를 파악
- 서버는 응답 메시지의 본문에 자신이 받은 요청메시지를 넣어 응답하며, 주로 진단을 위해 사용
- OPTIONS
HTTP 동작 과정
-
웹 브라우저에 URL 입력
-
DNS 서버에 의해 IP 주소를 찾음
-
클라이언트가 웹 서버에 TCP 연결을 시도
⇒ 3-way-handshaking
-
브라우저는 서버에 해당 사이트의 사본을 클라이언트에게 보내달라는 HTTP 요청 메시지를 전달
⇒ 서버에게 GET 요청 메시지를 전달하는 것 (request)
요청 메세지 : 메소드 / 요청URL / HTTP 버전
-
요청을 받은 서버는 클라이언트의 요청을 승인하고, 요청에 맞는 데이터(웹 문서)를 전송한다.(response)
⇒ 응답 메세지 : HTTP 버전/ 상태코드 /
-
서버는 웹사이트의 파일을 패킷으로 브라우저에 전송하고 브라우저는 패킷 수신후 다운로드
-
브라우저 에서는 패킷을 모아 완전한 웹 문서를 출력
-
4-way-hand shaking 으로 TCP 연결을 해제
HTTP 동작방식(웹브라우저-웹서버) IP/TCP/HTTP
HTTP vs HTTPS
- HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜 ⇒ 공개키/개인키 기반으로 데이터를 암호화 하였기 때문에 데이터를 전송할 때 임의의 사용자가 원본 데이터를 보는것은 불가능하다.
- HTTPS 는 암호화/복호화 과정이 필요하기 때문에 HTTP 보다 느리다. ⇒ 다만, 오늘날에는 큰 차이를 느끼기 힘들다.
- HTTPS 는 (공개키 사용을 위한) 인증서를 발급하고 유지하기 위해 추가비용이 발생한다.
- HTTP는 80번 포트를, HTTPS 는 443번 포트를 사용한다.
https://mangkyu.tistory.com/98
추가자료)
3way, 4way handshake, tcp
https://bangu4.tistory.com/74
https://blog.daum.net/tlos6733/47
https://victorydntmd.tistory.com/286