👉🏻HTTP 개요
🔎 웹 사이트의 형태
🔎 웹 페이지가 기술되는 형태
🤔 URL(Uniform Reosource Locator)란?
- 해당 데이터, 자원이 어디에 위치에 있는지 표기하는 방식 (각 오브젝드가 존재하는 위치)
🤔 하이퍼 링크란?
😃HTTP의 연결과정, 버전, 지속연결 및 비지속 연결
- 웹 프로그램은 데이터 손실이 일어나서는 안됩니다.
→ 때문에 전송 계층에서 TCP 프로토콜을 사용합니다.
🔎 웹 브라우저에서 웹 서버에 접속하려고 할 때 (HTTP 연결 요청 시) 일어나는 작업들
🔎 웹 브라우저에서 웹 서버에 연결 과정 시간 순으로 보기
🔎 HTTP의 버전
🔎 사진으로 보는 HTTP의 버전별 요청, 응답 과정
👽HTTP 메시지 포맷
- HTTP 메시지은 요청 메시지(Request Message)와 응답 메시지(Response Message)로 구분할 수 있습니다.
🔎 HTTP의 메시지의 포맷
🔎 HTTP의 요청 메시지(Request Message)의 형태
🧔🏻 정리 - 웹 클라이언트는 HTTP 요청 메시지(Request Message)를 서버 측에 보냄
- 서버는 HTTP 요청 메시지를 받아 처리한 후, 응답 메시지를 반환해 줍니다.
🔎 HTTP의 응답 메시지(Response Message)의 형태
🤔 HTTP의 응답 코드(Response Code)의 종류
👨🏻🏫 REST란?
- REST란 Representational State Transfer의 약자 입니다.
- 클라이언트와 서버 연결은 비지속 (Stateless)연결로, URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원에 대한 CRUD 동작을 수행함을 의미합니다.
→ 2000년대 Roy Fielding 박사가 논문에서 제안한 개념이며, HTTP 1.1버전에 포함되었습니다.
IF) 🤔 HTTP는 지속연결이라면?
- 서버가 클라이언트의 위치 및 모든 상태의 정보를 알고 있어야 함으로 너무 큰 오버헤드가 발생합니다.
→ 또한 클라이언트 수가 많아질 수록, 서버 측에서 클라이언트의 모든 상태(State)를 저장할 수 없습니다.
→ 대신에 주고 받는 HTTP 메시지 안에 클라이언트에 대한 정보를 모두 담아 처리할 수 있도록 합니다.
→ 이런 구조를 따르는 서비스를 “RESTful”이라고 합니다.
🔎 REST 구조가 가져야하는 요구사항들 (6가지)
1. 클라이언트 - 서버 구조
- 서버는 API제공 , 클라이언트는 사용자 인증이나 컨텍스트등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야할 내용이 명확하고 의존성이 줄어듭니다.
2. 상태 비 저장(Statelessness)
- 상태정보를 따로 저장하고 관리하지 않습니다.
- 세션,쿠키정보를 별도로 저장,관리하지 않기 때문에 API 서버는 들어오는 요청만 처리하기때문에 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않으므로 구현이 단순해집니다.
3. 캐시 가능성(Cacheability)
- HTTP 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용 가능합니다.
→ 따라서 HTTP가 가진 캐싱기능 적용이 가능합니다.
4. 계층화된 시스템(Layered System)
- 다중계층으로 구성할 수 있으며 보안, 로드밸런싱, 암호화 계층을 추가해 유연성을 둘 수 있고, Proxy,GateWay같은 네트워크 기반의 중간매체를 사용할 수 있습니다.
5. Self-descriptiveness 자체표현구조
- REST API만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있습니다.
6. 통일된 인터페이스(Uniform Interface)
- URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 의미합니다.
🤩사용자와 서버 간의 상호작용: 쿠키
🤔 쿠키란?
- 사용자가 방문한 웹 사이트에서 사용자의 브라우저에 전송하는 작은 텍스트 조각
- 해당 웹 사이트에서 사용자의 방문 정보를 기억하여, 다음번에 해당 사이트를 방문했을 때 번거로운 작업을 피하고, 유용하게 사이트를 이용할 수 있습니다.
🔎 쿠키의 동작 방식 살펴보기
👩🏻🏫 설명
🔎 각 웹 브라우저별 쿠기 설정 확인하기
🤖웹 캐싱 (프록시 서버)
🤔 프록시 서버란?
- 클라이언트에서 서버로 접속할 때, 직접적으로 접속하지 않고 중간에 대신 서비스를 하며, 응답 메시지를 전달해주는 서버를 의미합니다.
👍🏻 웹 캐싱의 장점
👨🏻🏫추가 설명 - SSL /TLS( HTTP 보안)
👩🏻🏫 전송 계층 프로토콜
- 전송 계층 프로토콜로 TCP와 UDP가 있습니다.
⚠️ 문제점
- 과거 TCP, UDP가 처음 만들어질때는 암호화, 보안에 대한 개념이 없었습니다.
→ 암호화 되지 않음,아주 중요한 패스워드 또한 인터넷에 그대로 노출되었습니다.
→ 누군가 도청하거나 훔치면 큰 문제가 됩니다.
🙆🏻♂️ 해결방안 - SSL / TLS 등장
- TCP 연결에 암호화를 해서 전달하는 방법인 SSL / TLS가 등장하였습니다.
🔎 SSL/TLS 살펴보기
🔎 SSL/TLS 동작 과정
🧔🏻 정리
- 외부에서 다른 침입자는 해당 키를 알지 못하기 때문에 해당 정보를 해독할 수 없습니다.
📒Reference (참고 자료)
- 컴퓨터 네트워킹 하양식 접근(Computer Networking _ A Top Down Approach, 8th)
- K Mooc - 부산대 컴퓨터 네트워킹 ppt 및 강의 video | K-MOOC
'네트워크' 카테고리의 다른 글
네트워크 - ch2-4. DNS - 인터넷의 디렉터리 서비스 (0) | 2023.03.26 |
---|---|
네트워크 - ch2-3. 인터넷 전자메일 (0) | 2023.03.26 |
네트워크 - ch2-1. 네트워크 애플리케이션의 원리 (0) | 2023.03.26 |
네트워크 - ch1-7. 컴퓨터 네트워킹과 인터넷의 역사 (0) | 2023.03.19 |
네트워크 - ch1-6. 공격받는 네트워크 (0) | 2023.03.19 |