제이제이
article thumbnail
Published 2023. 3. 26. 19:37
네트워크 - ch2-2. 웹과 HTTP 네트워크

 

👉🏻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 (참고 자료)


  1. 컴퓨터 네트워킹 하양식 접근(Computer Networking _ A Top Down Approach, 8th)
  2. K Mooc - 부산대 컴퓨터 네트워킹 ppt 및 강의  video | K-MOOC
 

video | K-MOOC

Dynamic Host Config, Protocol 시청

www.kmooc.kr

 

profile

제이제이

@아사비치즈스틱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!