- 포트포워딩 이론
- AWS 이론
- 키워드 정리
# 프로토콜
: 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
: 클라이언트가 서버에게 요청하는 방식이 정해져 있어야함. 컴퓨터와 컴퓨터가 이해하는 방식이 정해져 있어야함. 이러한 통신규약을 프로토콜이라한다.
* 종류
http : 서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜 / http는 패킷(packet)으로 구성되어 있음 ! **packet ( header+body )
https : http + 보안 프로토콜
mysql
ssh : 네트워크상에 다른 컴퓨터에 로그인하거나, 원격 시스템에서 사용하는 프로토콜
ftp : 파일 전송 프로토콜
sftp
# IP & Port
1) IP : ex) 223.130.200.104, 위도 경도
도메인 : ex) www.naver.com, 도로명 주소
: 스타벅스가 가고 싶어 지도 검색을 했다. 지도 검색을 하면 스타벅스의 도로명 주소가 나올 것 이다. 도로명 주소는 위도와 경도로도 표현이 가능하다. 도로명 주소는 위도 경도를 보기 쉽고, 기억하기 쉽게 표현한 것 이다.
2) Port : IP 주소에서의 문, 나가고 들어오는 것 모두 포트에서 관리해야 함 -> 문을 열고 닫는 것은 서버관리자가 해줘야함
: 문을 열고 스타벅스를 들어가야하는데,,, 문이 닫혀있으면 들어갈 수가 없다. 스타벅스에는 직원용 문도 있고, 손님용 문도 있다. 물론 우리는 직원용 문을 열고 스타벅스에 들어갈 수 없다. 나갈 수도 없다.
* 프로토콜에는 모두 포트 번호가 관례적으로 정해져 있음 -> 임의로 변경 가능!
http : 80
https : 443
ssh : 22
ftp : 21
sftp : 22
mysql : 3306
( * ssh와 sftp의 포트 번호는 왜 같을까? sftp는 ssh에 있는 부가적인 기능으로 ssh의 파일 전송 버전이기 때문이다. )
+) www.naver.com:80을 주소창에 검색해보았다.
네이버가 나온담ㅇㅅㅇ ~~ 우리가 80번을 매번 명시하지 않는 이유는 80번 포트는 많이 쓰는 번호이기 때문에 default로 설정되어 있기 때문
클라이언트가 Request(요청)를 보내기 위해서는
- 어떤 프로토콜로 통신할 것인가
- 어떤 IP주소로 보내야하는가
- 어떤 포트로 보내야하는가
를 알아야 한다!
1. Port Forwarding 포트포워딩
: 외부 IP를 통해 접속한 클라이언트가 특정 포트를 통해 요청을 하면 내부 IP로 보내서 처리를 하는 것
공유기에는 휴대폰, 노트북, TV등이 연결되어 있다. 내 노트북에 구축된 서버를 다른 사람의 핸드폰으로 접속할 수 없다. 이것을 가능하게 하는 방법이 '포트포워딩'이다. 공유기에게 길을 만들고, 이정표를 달아주는 것 !
외부 IP - 공유기가 가지고 있는 네트워크 주소 // 네이버에 '내 IP 주소 확인'을 검색하면 바로 확인이 가능합니당
핸드폰, 노트북, TV 는 동일한 외부 IP를 가지고 있음
내부 IP - 공유기에 연결된 클라이언트들이 서로를 식별하기 위해 가지는 IP를 의미한다.
ex) 공유기에서 와이파이를 사용하는 클라이언트를 식별할 수 있어야 하기 때문에, 공유기에서 내부적으로 한번 더 할당한 IP
외부 IP : 80 ----> 내부 IP : 80
외부 IP 80번으로 들어가면 내부 IP 80번 포트로 접속하게 해!라는 이정표를 만드는 것 (길이 생겼고, 기록을 해두었으니 접속이 가능하다.)
2. 키워드 정리
1) 네트워크 계층
- OSI 7 계층 : OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것 계층을 나눈 이유는 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문이다. 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고,7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다.
- TCP/IP
- TCP : 전체 데이터가 잘 전송될 수 있도록 데이터의 흐름을 조절하고 성공적으로 상대편 컴퓨터에 도착할 수 있도록 보장해주는 역할
- IP : 데이터를 한 장소에서 다른 장소로 정확하게 옮겨주는 역할
https://dany-it.tistory.com/50
- 프로토콜이란 : 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다.
- 프로토콜 예시들
- HTTP
- HTTPS
- SSL
- FTP
- SFTP
- MYSQL
- SSH
2) IP
- Packet : 통신망을 통해 전송하기 쉽도록 자른 데이터의 전송 단위, 모든 통신구간은 패킷이 필요하다!
- IPv4 : 32비트의 주소공간을 제공한다.
- IPv6 : IPv4의 주소 부족 문제를 해결하기 위해 개발되었다. 총 128비트로 구성되어 있으며, 각 부분을 16진수로 표현하고 콜론(:)으로 구분한다.
- Domain : 숫자로 이루어진 인터넷 상의 컴퓨터 주소를 알기 쉬운 영문으로 표현한 것
3) Port
- 서버에서 포트란?
TCP나 UDP 에서 어플리케이션이 상호구분을 위해서 사용하는 번호이다. IP 내에서 프로세스 구분을 하기 위해서 사용한다. 16비트로 된 숫자이며 IP주소뒤에 :xxxx로 나타낸다.
ex) 내 컴퓨터의 주소가 123.456.789.000라고 치면, 자료를 받을경우 & 채팅을 하는 경우 포트번호를 나누지 않으면 혼란이 생긴다. 자료는 :1000 채팅은 :1001로 이렇게 구분을 해주는것
👉IP주소는 컴퓨터주소, 포트는 안에서 각 프로세스가 위치한 방번호
- 프로토콜별 포트 번호 정리
https://shaeod.tistory.com/389
- 포트리스닝
- 인바운드 / 아웃바운드
https://prinha.tistory.com/entry/%EB%B0%A9%ED%99%94%EB%B2%BD
- 데몬(Daemon)
4) Port forwarding
- 공유기
- WAN
- LAN
- 외부 IP (공인 IP)
- 내부 IP (사설 IP)
- 외부 포트
- 내부 포트
- 게이트웨어
- 방화벽
5) AWS의 개념 및 다양한 서비스들
6) AWS EC2란
1) DNS (Domain Name Server)
: 사람이 읽을 수 있는 도메인 이름(www.naver.com)을 IP주소(223.130.200.104)로 변환해주는 시스템
2) Proxy
# proxy란?
프록시 서버란 클라이언트가 자신을 거쳐 다른 네트워크에 접속할 수 있도록 중간에서 대리해주는 서버를 말한다.
서버와 클라이언트 사이에서 대리로 통신을 수행해주는 것을 프록시라고 하고 그 기능을 하는 서버를 프록시 서버라 한다.
⭐프록시 서버는 서버와 클라이언트 사이에서 요청과 응답을 처리
1. 클라이언트에서 프록시 서버로 데이터 전송
2. 프록시 서버에서 다시 웹 서버로 웹 요청
3. 웹 서버에서 프록시 서버로 웹 응답
4. 프록시 서버에서 클라이언트로 데이터 전송
⭐ 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용해 저장
# proxy를 사용하는 이유
- 캐시 데이터 : 프록시 서버 중 일부는 프록시 서버에 요청된 내용을 캐시를 사용해 저장해둔다. 그러면 캐시에 저장되어 있는 내용에 대한 재요청은 서버에 따로 접속할 필요가 없이 저장된 내용을 그대로 돌려주면 되기 때문에 전송 시간을 절약할 수 있고 외부 트래픽을 줄임으로써 네트워크 병목 현상도 방지할 수 있다.
- 보안 목적 : 프록시 서버가 중간에 경유되게 하면 IP를 숨기는 것이 가능하기 때문이다. 프록시 서버를 방화벽으로 사용하기도 한다(= 프록시 방화벽).
- 접속 우회 : 한국에서 접속이 제한되는 사이트를 우회해 접속할 수 있다. 이러한 사이트 들은 IP를 검사해 한국에서 접속함을 알게되는 것인데, 프록시 서버를 사용하면 접속을 다른나라로 우회할 수 있게 된다.
# Forward proxy
일반적으로 프록시라고 말하면 포워드 프록시를 말한다.
클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거쳐서 요청한다. 이 경우 서버에서 받는 IP는 클라이언트의 IP가 아닌 프록시 서브의 IP이기 때문에 서버는 클라이언트가 누군지 알 수 없다. 즉, 서버에게 클라이언트가 누구인지 감춰주는 역할을 한다.
이러한 특징 때문에 기업 사내망에서 주로 사용된다.
* Forward Proxy의 특징/역할
- 캐싱 : 첫 번째 요청 이후부터는 동일한 요청이 들어올 경우, 프록시 서버에 캐싱된 내용을 전달해줌으로써 성능을 향상시킬 수 있다.이를 위해 포워드 프록시는 정적 데이터를 저장해두고 동일한 요청의 경우 웹서버 까지 가지 않고 포워드 프록시에서 처리할 수 있는 캐싱 역할을 수행한다.
** 웹 서비스에서 요청이 발생할 때마다 1) 요청 → 2) 요청 전송 → 3) 요청 접수 → 4) 응답 생성 → 5) 응답 전송 → 6) 응답 수신 과 같은 과정을 반복해서 거친다. 요청이 한 번 뿐일 때는 괜찮지만, 중복되는 요청을 매번 처리하기에는 심한 자원낭비가 생기고, 웹 서버의 부하가 증가할 것이다.
- IP 우회 : 위에 언급했듯이 클라이언트 측에서 프록시 서버를 거쳐 웹 서비스를 이용할 경우, 서버 측에서는 요청을 받을 때 클라이언트의 IP가 아닌 프록시 서버의 IP를 전달받게 된다. 즉, 서버 측에 클라이언트의 정보를 숨길 수 있게 되는 것이다.
- 제한 : 보안이 중요한 사내망에서 정해진 사이트에만 연결 할 수 있도록 설정하는 등 웹 사용 환경을 제한할 수 있다.
# Reverse proxy
리버스 프록시는 포워드 프록시와 반대 개념이다. 애플리케이션 서버의 앞에 위치하여 클라이언트가 서버를 요청할 때 리버스 프록시를 호출하고, 리버스 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 한다.
이 경우, 클라이언트는 애플리케이션 서버를 직접 호출하는 것이 아니라 프록시 서버를 통해 호출하기 때문에 리버스 프록시는 애플리케이션 서버를 감추는 역할을 하게 된다.
* 리버스 프록시의 예시 - NginX, Apache Web Server
* 리버스 프록시의 특징/역할
- 로드밸런싱 : 리버스 프록시 뒤에 여러 개의 WAS를 둠으로써, 사용자 요청을 분산할 수 있다. End-point 마다 호출 서버를 설정할 수 있어 역할에 따라 서버의 트래픽을 분산할 수도 있다.
- 보안 : 보안 상의 이유로 서버에 직접 접근하는 것을 막기 위해 DMZ같은 네트워크에 리버스 프록시를 구성하여 접근하도록 한다.
'Server > UMC 2기 Server' 카테고리의 다른 글
[UMC] Server 3주차 *실습* Ubuntu Nginx에서 도메인, 서브 도메인, 리다이렉션 적용 / HTTPS Let's Encrypt 설정 (0) | 2022.03.30 |
---|---|
[UMC] Server 3주차 서브도메인 / 리다이렉션 / HTTPS (0) | 2022.03.28 |
[UMC] Server 2주차 *실습* 포트포워딩 실습 / AWS 실습 (0) | 2022.03.24 |
APM 소스 설치 - Ubuntu 20.04 + Apache 2.4.46 (0) | 2022.03.17 |
[UMC] Server 1주차 virtualBox에 Ubuntu 설치하기/리눅스에 APM소스 설치하기 (0) | 2022.03.16 |