프론트엔드
[Web] 브라우저 프로토콜의 종류, HTTP 프로토콜
seomoon
2022. 2. 10. 17:45
프로토콜의 종류
- HTTP/HTTPS 프로토콜 : 웹 브라우저는 서버에 자원을 요청하고 응답을 받기 위해 HTTP 프로토콜을 사용한다.
- 그 외의 웹 관련 프로토콜 :
- IP 프로토콜 (Internet Protocol) : IP는 각각의 패킷을 IP 주소와 MAC 주소를 통해 상대방에게 전달하는 역할을 한다.
- IP 주소 : 각 노드에 부여된 주소
- MAC 주소 : 각 네트워크 카드에 할당된 고유의 주소
- ARP 프로토콜 : ARP를 이용해 IP 주소를 MAC 주소로 변환하여 목적지를 찾아간다. IP주소는 유동적이기 때문에 고유의 대상이 될 수 없지만(변경될 수 있음), MAC 주소는 고유하기 때문에 ARP 프로토콜을 사용해 IP주소를 MAC주소로 변환하는 것이다.
- TCP/UDP 프로토콜 :
- TCP (Transmission Control Protocol) : 전송 제어 프로토콜. 데이터를 안정적으로, 순서대로, 에러 없이 교환할 수 있도록 전달하도록 통제한다. 클라이언트와 서버 간에 TCP 커넥션이 맺어지면, 메세지가 절대 사라지거나 손상되지 않고, 순서가 뒤바뀌는 일도 없는 안정성 있는 프로토콜이다.
=> HTTP는 자신의 (요청/응답)메세지를 전달하기 위해 TCP 프로토콜을 사용한다. IP 프로토콜과 함께 TCP/IP라는 명칭으로 사용된다. - UDP (User Datagram Protocol) : UDP는 데이터 전달에 대한 안정성을 보장하지 않는 프로토콜이다. UDP는 TCP에 비해 안정성은 낮지만 속도가 빨라 실시간 스트리밍 등의 서비스에서 사용된다. -> 서비스에 따라 사용하는 프로토콜이 다르다.
- TCP (Transmission Control Protocol) : 전송 제어 프로토콜. 데이터를 안정적으로, 순서대로, 에러 없이 교환할 수 있도록 전달하도록 통제한다. 클라이언트와 서버 간에 TCP 커넥션이 맺어지면, 메세지가 절대 사라지거나 손상되지 않고, 순서가 뒤바뀌는 일도 없는 안정성 있는 프로토콜이다.
- IP 프로토콜 (Internet Protocol) : IP는 각각의 패킷을 IP 주소와 MAC 주소를 통해 상대방에게 전달하는 역할을 한다.
HTTP의 특성
1) 비연결성 (Connectionless)
- 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 연결을 유지하지 않고 끊어버린다.
- 장점 : HTTP는 불특정 다수의 통신을 기반으로 설계되었다. 만약 서버에서 다수의 클라이언트와 연결을 계속 유지해야 한다면, 이에 따른 많은 리소스가 발생하게 된다. 따라서 연결을 유지하기 위한 리소스를 줄임으로써 더 많은 연결을 할 수 있다.
- 단점 : 서버는 클라이언트를 기억하지 않으므로, 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결을 시도하고 해제하는 과정을 거쳐야한다. 따라서 연결/해제에 대한 오버헤드가 발생한다는 단점이 있다.
- KeepAlive 속성 : 오버헤드를 줄이기 위해 HTTP의 KeepAlive 속성을 사용할 수 있다. KeepAlive는 지정된 시간 동안 서버와 클라이언트 사이에 패킷 교환이 없을 경우, 패킷을 주기적으로 보내는 것을 말한다. 이 때 패킷에 반응이 없으면 접속을 끊게 된다.
(주기적으로 클라이언트의 상태를 체크해야하므로 서버가 바쁜 환경에서는 많은 메모리를 사용하게 될 수 있어 주의해야 한다. )
2) 무상태 (Stateless)
- 서버가 클라이언트를 식별할 수 없는 것을 말한다.
- 서버가 클라이언트를 기억할 필요가 있을 때는, 쿠키, 세션, 토큰 기반 인증 방식을 사용할 수 있다.
- 쿠키 : 브라우저 단에서 사용자 정보를 저장해 서버가 클라이언트를 식별할 수 있게 한다.
쿠키는 사용자 정보가 브라우저에 저장되기 때문에 보안에 취약하다. - 세션 : 브라우저가 아닌 서버 단에서 사용자 정보를 저장한다. 쿠키보다는 안전하지만, 세션 정보도 중간에 탈취당할 수 있다. 또한 세션을 사용하면 서버에 사용자 정보를 저장하므로, 서버의 메모리를 차지하게 되고, 만약 동시 접속자 수가 많은 서비스일 경우에는 서버 과부하의 원인이 될 수 있다.
- 토큰 (Token) 기반 인증 방식: 쿠키와 세션의 문제점을 보완하기 위해 도입되었다. 토큰 기반 인증 방식의 핵심은, 보호할 데이터를 토큰으로 치환하여, 원본 데이터 대신 토큰을 사용하는 기술이라는 점이다. 그래서 중간에 공격자로부터 토큰이 탈취당하더라도, 데이터에 대한 정보를 알 수 없으므로 보안성이 높은 기술이라고 할 수 있다. 대표적인 토큰 기반 인증 방식으로는 OAuth와 JWT이 있다.
- 쿠키 : 브라우저 단에서 사용자 정보를 저장해 서버가 클라이언트를 식별할 수 있게 한다.
3) HTTP 상태코드 (status)
- 서버가 HTTP 응답 메세지를 보낼 때, 요청에 대한 처리 상태를 숫자로 반환하는 데, 이를 응답 상태코드라고 한다. 응답 상태코드는 HTTP 응답 메세지의 헤더에 추가된다.
- 상태코드 요약 : 200-206(요청 성공), 300-305(리다이렉션), 400-415(클라이언트 에러), 500-505(서버 에러)
4) HTTP Method
- 클라이언트가 서버에 요청을 보낼 때, 요청의 목적을 HTTP 메서드에 명시한다.
- HTTP Method 종류 :
- GET : 서버에 리소스 요청 (조회)
- POST : 서버에 입력데이터를 전송, 요청 엔티티 본문에 데이터를 넣어 서버에 전송 (삽입)
- PUT : 서버가 요청 본문에 따라 요청 URI의 이름대로 새 문서를 만들거나, 이미 URI가 존재한다면 요청 본문을 변경할 때 사용. (수정)
- DELETE : 서버에서 요청 URI 리소스를 삭제하도록 요청 (삭제)
(서버에서 이 요청을 무시할 수도 있다. ) - HEAD : GET과 동일하지만, 서버가 응답으로 엔터티 본문 반환 없이 헤더만 반환함.
5) 헤더
- HTTP 프로토콜 상에서, 클라이언트와 서버는 데이터를 패킷 단위로 잘게 쪼개서 통신한다. 데이터 전송 단위인 패킷에는 요청/응답에 대한 메세지가 담겨 있다. 패킷의 구조는 다음과 같이 구성되어 있다.
-> 시작라인 (Request Line), 헤더 (Header), 본문 (Body) - 그 중에서 헤더는 패킷에 대한 정보를 담고 있다.
헤더에 명시할 수 있는 패킷 관련 정보는
Date(메세지가 언제 만들어졌는지), Via(메세지가 어떤 프락시를 거쳐왔는지), client-IP, Accept(서버가 보내도 되는 미디어의 종류), Cookie, Age(응답이 얼마나 오래 걸렸는지), Server(서버 정보), Content-type(본문의 내용이 어떤 형식인지. 텍스트, 이미지 등) 등이 있다.
- Reference :
(Velog에서 이동 중입니다.. )