여름의 서재
[네트워크] HTTP & HTTPS 본문
💡 HTTP 란?
: 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다.
💡 HTTP의 특징
- 메세지 교환 형태의 프로토콜: 클라이언트가 보고 싶은 걸 서버에 요청하면 응답이 온다.
- 비연결성(Connectionless): 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트의 요청을 서버가 응답하면 맺었던 연결을 끊는다. 불특정 다수의 통신을 줄여 더 많은 연결이 가능하지만, 동일한 요청을 새로 요청해야 한다.
- 무상태(Stateless): 이전 상태를 유지 하지 않는다. 상태를 기억하기 위해서 쿠키, 세션, 토큰이 도입 된다.
💡 HTTP Request (요청)
: 클라이언트가 서버에게 연락하는 것을 요청이라고 하며 요청을 보낼때는 요청에 대한 정보를 담아 서버로 보낸다.
📌 URL
:서버에 자원을 요청하기 위해 입력하는 영문 주소
📌 HTTP 요청 메서드
- GET : 존재하는 자원에 대한 요청
- POST : 새로운 자원을 생성
- PUT : 존재하는 자원에 대한 변경
- DELETE : 존재하는 자원에 대한 삭제
📌 HTTP 요청 메시지
- Method : HTTP 메서드는 보통 클라이언트가 수행하고자 하는 동작을 정의한 GET, POST, OPTIONS, HEAD를 지칭한다. 클라이언트는 리소스를 가져오거나GET 사용 HTML 폼의 데이터를 전송POST 사용한다.
다른 경우에는 다른 동작이 요구될 수도 있다. - Path : 가져오려는 리소스의 경로는 프로토콜 http://, 도메인 여기서는 developer.mozilla.org, 또는 TCP 포트 여기서는 80인 요소들을 제거한 리소스의 URL이다.
- Version of the Protocol : HTTP 프로토콜의 버전.
- Headers : 서버에 대한 추가 정보를 전달하는 선택적 헤더들.
- etc : POST와 같은 몇 가지 메서드를 위한, 전송된 리소스를 포함하는 응답의 본문과 유사한 본문.
* HTTP Message: HTTP에서 클라이언트와 서버가 리소스를 교환하는 형식.
💡 HTTP Responce(응답)
: 서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 응답이라고 한다.
📌 Status Code (상태 코드)
- 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
- 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
- 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
- 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
- 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.
📌 HTTP 응답 메시지
- Version of the Protocol : HTTP 프로토콜의 버전.
- Status Code : 요청의 성공 여부와, 그 이유를 나타내는 상태 코드.
- Status Message : 아무런 영향력이 없는, 상태 코드의 짧은 설명을 나타내는 상태 메시지.
- Headers : 요청 헤더와 비슷한, HTTP 헤더들.
- etc : 선택 사항으로, 가져온 리소스가 포함되는 본문.
🤔 HTTP의 단점
: HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이였기 때문에 도청이 가능하고, 통신 상태를 확인하지 않기 때문에 위장이 가능하다.
💡 HTTPS 란?
: HTTP 에 암호화와 인증, 그리고 완전성 보호를 더한 프로토콜. HTTP 하부에 SSL과 같은 보안계층을 제공. HTTPS 의 SSL 에서는 대칭키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다. 클라이언트와 서버가 주고 받는 실제 정보는 대칭키 방식으로 암호화하고, 대칭키 방식으로 암호화된 실제 정보를 복호화할 때 사용할 대칭키는 공개키 방식으로 암호화해서 클라이언트와 서버가 주고 받는다.
- 실제 데이터 : 대칭키
- 대칭키의 키 : 공개키
-> 이렇게 두 가지 방식을 혼합하는 이유: 그것은 공개키 방식이 많은 컴퓨터 파워를 사용하기 때문이다. 만약 공개키를 그대로 사용하면 많은 접속이 몰리는 서버는 매우 큰 비용을 지불해야 할 것이다.
반대로 대칭키는 암호를 푸는 열쇠인 대칭키를 상대에게 전송해야 하는데, 암호화가 되지 않은 인터넷을 통해서 키를 전송하는 것은 위험하다. 그래서 속도는 느리지만 데이터를 안전하게 주고 받을 수 있는 공개키 방식으로 대칭키를 암호화하고, 실제 데이터를 주고 받을 때는 대칭키를 이용해서 데이터를 주고 받는 것이다.
📌 SSL 란?
: SSL(Secure Sockets Layer)은 암호화 기반 인터넷 보안 프로토콜
출처: https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
'CS > 네트워크' 카테고리의 다른 글
[네트워크] TCP & UDP (0) | 2022.02.05 |
---|---|
[네트워크] HTTP & HTTPS / GET & POST / TCP & UDP (0) | 2022.01.15 |
[네트워크] RESTful API (0) | 2022.01.12 |
[네트워크] OSI 7계층 & TCP/IP (0) | 2021.12.22 |