HTTP (Hyper-Text Transfer Protocol) 프로토콜
HTML 문서를 TCP/IP 규격 위에서 송수신하기 위한 프로토콜 (애플리케이션 계층)
- HTTP 프로토콜 :
섹션이 연결되고 끊어지기 전까지 데이터 교환이 가능하지만, 브라우저 요청(HTTP request)마다 연결을 맺고 끊는 비연결성을 가지고 있다.
요청 명령 중 GET, POST 를 가장 많이 사용하고, PUT, DELETE 를 더해 생성, 조회, 수정, 삭제의 CRUD 개념으로 구현할 수 있다.
![](https://velog.velcdn.com/images/tjfdbfls/post/ac74be01-9992-4d18-87ed-942a82b7a93a/image.png)
- TCP (데이터 전송 컨트롤 프로토콜, 전송 계층)
- IP (인터넷 프로토콜, 인터넷 계층)
네트워크에서 통신이 일어나는 과정
전송 프로토콜
TCP (Transmission Control Protocol)
신뢰성 바탕의 3 Way Handshake 를 한다.
- 3 Way Handshake TCP/IP 프로토콜을 이용해서 통신하는 응용프로그램은 데이터를 주고받기 전에 먼저 연결을 진행하는데, 3-Way Handshake는 이 연결 과정을 의미한다.
- ACK(Acknowledgement) : 응답을 할 때 사용
- SYN(Synchronize Sequence Number) : 연결을 요청할 때 사용
![](https://velog.velcdn.com/images/tjfdbfls/post/d0a80caa-9c6f-4288-8b75-06ce40136ed5/image.png)
UDP (User Datagram Protocol)
신뢰성을 신경쓰지 않고 데이터를 보내지만 전송 속도가 빠르다.
HTTP/1.1
특징
- Persistent Connection : 지정한 시간 동안 커넥션을 닫지 않는 방식
- Pipelining : 응답을 기다리지 않고 여러 요청을 연속적으로 보내 그 순서에 맞춰 응답을 받는 방식으로 지연 시간을 줄이는 방법
문제점
- Head of Line Blocking
- Header 구조의 중복
HTTP/2
기존 HTTP/1.x 버전의 성능 향상에 초점을 두고 확장한 프로토콜
특징
- HTTP 메시지 전송 방식의 변화
→ 바이너리 프레이밍 계층 사용
→ 파싱, 전송 속도를 높이고, 오류 발생 가능성을 낮춤
- Request & Response Multiplexing
→ frame, stream 의 존재
→ Head of Line Blocking 문제 해결
- Stream Prioritization
→ 리소스간 우선 순위 설정 가능
- Server Push
→ 클라이언트가 요청하지 않은 부분까지 보냄
- Header Compression
→ static dynamic table로 헤더의 크기를 줄여 페이지 로드 시간 감소
HTTP에 대해서는 더 자세히 다룰 예정이다.