결국은 "컴퓨터 A에서 컴퓨터 B로 데이터를 옮기는 것."
- 데이터를 옮기는 방식에 따라 각각의 프로토콜(약속)이 있는 것.
- 이메일로 옮기면 SMTP
- 파일로 옮기면 FTP
- 웹으로 옮기면 HTTP
- 컴퓨터 자체를 원격으로 연결하면 SSH
컴퓨터가 서로 데이터를 주고 받는 과정을 "큰 그림으로, 간단하게" 그려보니, 아래와 같이 "7개의 계층구조"로 표현할 수 있더라!
- 애플리케이션 계층: 사용자 프로그램이 돌고 있는 계층. → 목적에 맞는 통신 방법 제공 (HTTP, DNS, SMTP, FTP)
- 표현 계층: 데이터의 암호화, 복호화 담당
- 세션 계층: 현재 통신의 연결 상태(즉, 세션)를 담당
- 전송 계층: 애플리케이션 (종단) 간 통신 담당. (TCP, UDP)
- 네트워크 계층: 호스트 (즉, 컴퓨터) 간 통신 담당. (IP)
- 데이터 연결 계층: 직접 연결 된 (로컬 수준) 노드 간 통신 담당. MAC주소 기반. (ARP: IP주소 → MAC 주소)
- 물리 계층: 물리 장치(랜선, 허브 등) 이용해 데이터를 bit 단위로 전송.
아래와 같이 Host A에서 Host B로 데이터를 전송하는 과정을 보고 계층 모델을 이해하자.
네트워크의 동작을 계층 구조로 보여주는 모델링에는 또 다른 예로 TCP/TP 모델이 있다.
(TCP/IP 프로토콜과는 다르다. 헷갈리지 말 것)
HTTP Request
- 웹 사이트를 로드하는데 필요한 정보를 요청
- HTTP 버전, URL, HTTP 메서드, HTTP 요청 헤더, HTTP 본문(optional)
HTTP Response
- 웹 클라이언트의 HTTP 요청에 대한 서버의 응답.
- HTTP 상태 코드, HTTP 응답 헤더, HTTP 본문 (대부분 html 데이터 적재)
웹 서버와 외부 프로그램 간 통신을 위한 표준 방법
사용자의 요청 → 서버에서 실행되는 프로그램 (CGI Program) → 동적인 웹 페이지를 생성 / 데이터를 처리
CGI는 초기 웹 개발에서 매우 중요한 역할 → 현대 웹 개발에서는 더 효율적이고 강력한 기술들로 대체되고 있음
Proxy 서버의 기능 요약
- 클라이언트가 요청한 내용을 캐싱해 시간 절약
- 클라이언트 ↔ 서버 간 익명성 보장 (proxy 서버를 거치며 주소가 바뀌므로.)
클라이언트와 외부 서버 사이에 위치하면 Forward, 외부 클라이언트와 내부 서버 사이에 위치하면 Reverse.
특징 | Forward Proxy | Reverse Proxy |
---|---|---|
위치 | 클라이언트와 서버 사이, 클라이언트 쪽 | 클라이언트와 서버 사이, 서버 쪽 |
목적 | 클라이언트 요청을 대신 수행 | 서버를 대신 해 클라이언트 요청을 받아 처리 |
주요 용도 | IP 숨기기, 콘텐츠 필터링, 캐싱 | 로드 밸런싱, 보안 강화, SSL 종료, 캐싱 |
대표적 사용 사례 | 인터넷 접근 제한, 사용자 보호 | 로드 밸런싱, 서버 보호, 성능 개선 |
OSI 모델이란?
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/
OSI계층, TCP/IP 모델 쉽게 알아보기
https://medium.com/harrythegreat/osi계층-tcp-ip-모델-쉽게-알아보기-f308b1115359
CGI(Common Gateway Interface) 이해하기 : 웹 페이지를 동적으로 만드는 기술
https://velog.io/@reasonoflife39/CGICommon-Gateway-Interface-이해하기-웹-페이지를-동적으로-만드는-기술
What is Proxy Server and How Does it Work?
https://alitunacanonar.medium.com/what-is-proxy-server-and-how-does-it-work-2d9224cc459e
Proxy Server
https://study-ihl.tistory.com/170