6. Port Forwarding
- 필요성
- 컴퓨터에 웹서버 설치하면 다른 사람들한테 지역 네트워크 안의 사설 IP를 알려줘서는 접속하게 할 수 없음.
- 그래서 공유기의 공인 IP로 접속했을 때 해당 컴퓨터에 접속되게 해야함.
- 포트 이용하자
- 라우터로 들어온 포트 번호에 따라 내부 네트워크의 특정 컴퓨터의 포트로 요청할 수 있음.
- 공유기의 공인 IP에 8081 포트로 접속 들어오면, 내부 네트워크의 192.198.0.4 컴퓨터에 80 포트로 보내기로 설정함. 라우터가 안내자 역할 하는 것.
- 포트 포워드 설정 : 내부 IP주소와 외부 포트(예. 8081), 내부 포트(예. 80) 입력
7. Dynamic & Static IP 주소
- 유동 IP(Dynamic IP Address) : 부족한 IP 효율적으로 사용하기 위한 방법.
- 주어진 IP가 바뀜. ISP(internet service provider, 통신사)와 계약하면 IP 부여받음. 근데 인터넷 안 쓰는 동안 ISP가 내 IP 회수해서 다른 가입자한테 줌. 내가 다시 컴퓨터 켜서 인터넷 접속하면 ISP가 새로운 IP를 부여해줌.
- 수많은 유저들이 동시에 인터넷 쓰는 게 아니기 때문에 안 쓰는 사람 것 회수해서 쓰기 시작하는 사람에게 빌려주면서 돌려막기. 거대한 가입자들에게 IP 제공하는 방법.
- 문제 : 내가 서버 운영하려고 IP 주소 알려줘놨는데 바뀌어버림. 그럼 다른 사람한테 접속될 수 있음.
- 정적 IP : 컴퓨터의 IP 고정시키는 것.
- 통신사에 돈 몇 만원 더 주고 독점적으로 IP 사용.
8. DHCP(이론)
- IP 수동 지정
- 같은 범위 안에서 IP 중복되면 안 됨.
- 제어판 > 네트워크 및 인터넷 > 네트워크 그리고 공유센터 > 연결 > 속성 > TCP/IPv4 > 속성 : 여기서 IP 주소 입력하면 됨.
- 서브넷 마스크, DNS(도메인) 등 모르는 거 나옴.
- dynamic host configuration protocol : IP 자동 설정
- 컴퓨터에 인터넷 연결하면 자동으로 동적인 IP 주소와 DNS, 서브넷, 게이트웨이 등의 정보가 세팅됨.
- 이를 위해 DHCP 서버 필요함. 보통 공유기는 DHCP 서버 프로그램을, 컴퓨터(인터넷 사용하는 기계들)는 DHCP 클라이언트 프로그램을 내장하고 있음.
- 맥 어드레스/미디어 어드레스/피지컬 어드레스 : 통신 부품들은 부품마다 공장에서 기록된 고유 식별자 갖고 있음.
- 공유기에 연결되면
- DHCP 클라이언트가 공유기에 DHCP 서버가 이 네트워크 안에 있는지 찾음.
- 자기의 맥 어드레스를 알려줌.
- DHCP 서버는 자신의 맥 어드레스와 함께 클라이언트에 IP 임대해줄 수 있다고 응답.
- 클라이언트가 그 IP 쓰겠다고 응답.
- DHCP 서버는 라우터(도 컴퓨터) 안에 어떤 맥 어드레스의 통신장치가 어떤 IP 빌려갔는지 기록.
- 동시에 클라이언트에 IP 임대시간 알려줌.
- 클라이언트는 이 정보를 갖고 제어판 설정에 채워넣음.
- 효용 : 요즘은 기기를 휴대하면서 실시간으로 인터넷 연결을 바꾸는데 DHCP를 통해 자동으로 IP를 설정할 수 없었다면 모바일 혁명 어려웠을 것.
9. DHCP(실습)
- DHCP 설정 제어 : 공유기 접속 > 네트워크 관리 > 내부 네트워크 설정
- 공유기의 DHCP 서버 동작을 중지시킬 수도 있음.
- 동적 IP 주소가 주어질 범위 설정.
- IP 대여 시간 : 네트워크 안에 컴퓨터 몇 대 없으면 대여 시간 길게 하고, 많으면 짧게 해서 빨리 돌려막기.
- 특정 기기에 IP 지정할 수 있음. 그럼 고정(정적) IP 됨.
- 공인 IP도 통신사와 계약할 때 유동 IP. 그럼 기기들에 IP 부여하는 DHCP 서버가 이 네트워크 밖에 있다는 뜻. 통신사도 거대한 DHCP 체계 있어서 우리에게 자동으로 IP 할당.
10. 마무리
- NAS(network attached storage) : 네트워크 통해 사용하는 저장장치
- 드랍박스, 구글드라이브, 웹하드 등을 직접 운영하는 것.
- 내 컴퓨터를 웹서버로 운영하는 것과 본질적으로는 같지만, 데이터의 저장, 백업을 쉽게 해주는 편의 기능 있는 솔루션 이용하는 것. 여러 제품 있음.
- Domain
- IP가 아니라 도메인을 통해 접속하게 함으로써 유연하게 서버 운영 가능.
- freenom.com 에서 1년간 무료로 도메인 사용 가능.
- Dynamic DNS : 고정 IP 갖는 것 같은 효과를 도메인에서 달성.
- https
- 80 포트 이용한 http : 중간에 누군가 감청할 위험 높음.
- secure가 붙은 https : 안전하게 서버와 클라이언트가 정보 주고 받을 수 있음.
- 요즘은 무료화되고 있기 때문에 이용해보쟈. Let's encript 등에서 무료로 인증서 발급해줌.
- 사용자 정보를 저장하는 서비스라면!!
- 서버 운영은 서비스 이용하자.
- 가정에서 직접 서버 운영하는 건 비추. 서버 운영 가능한 컴퓨터와 네트워크 환경 제공하는 사업자 있음.
- 웹 호스팅 : 웹서버 제공하는 업체.
- 서버 호스팅 : 보다 높은 자유도 가질 수 있도록 서버 제공.
- 클라우드 컴퓨팅 : 보다 큰 규모로 편의 제공.
4. 서버-클라이언트 통신
- API : application programming interface
- "아이디를 갖고 오면 주문내역을 알려주는 등" 서버에서 미리 만들어둔 기능이자, 클라이언트 개발자와의 약속.
- API 명세서 : 요청할 url, 요청할 때 보낼 데이터 형태, 보낼 응답의 형태 등을 문서로 써둔 것.
- 생김새 : http://서버위치/API주소?가져가기로한데이터
- 오픈 API : 누구나 요청할 수 있게 열어둔 API. 보통 공공데이터 등.
- 정리
- 클라이언트 : 브라우저, 휴대폰, IOT 가전 등
- 서버 : 요청을 받고 데이터 주는 쪽. 웹이냐 앱이냐 따라 별도로 존재하는 것 아님.
- API : 요청을 받는 출입문, 창구.
- 웹서버 : 요청 잘 듣기 위해 대기하는 것.
5. 개발 언어 및 프레임워크
- 프레임워크 : 미리 만들어놓은 블록세트. 처음부터 다 새로 만들기는 힘드니까.
- 자바-스프링, 파이썬-장고, 노드JS-익스프레스 등
- 다른 것도 많지만 유명한 걸로 쓰는 게 좋음. 에러 나면 검색하기도 쉽고.
- 프론트엔드 언어
- 기본 : HTML, CSS, JS
- 프레임워크 : 앵귤러, 뷰, 리액트(대세) 등.
- 서버 언어 : JS 제외하고 전부
- 자바 : 형식이 많아서 처음에 대충 짜놓으면 안 되고 어려움. 대신 안정적. 큰 회사에서 주로 씀.
- 파이썬 : 입문 쉽고 자유로움. 데이터분석.
- 노드JS : JS를 백에서 쓰는 거.
- 기타 언어
- C언어 : 임베디드 칩(IOT). 서버 만드는 데 잘 안 쓰는데 게임회사에서 씀. 컴퓨터에 가까운 언어라 더 정교.
- 고 : 쉬운데 적당히 형식 있음.
- 타입스크립트 : 자바스크립트에 타입 얹음.
- SQL : 데이터 분석.
- 앱 언어
- 코틀린 : 안드로이드
- 스위프트 : 아이폰 앱
- 플러터, 리액트 네이티브
6. 아키텍쳐/DB
- 서버 안의 역할들 다양함. 규모와 필요에 따라 점차 분리됨.
- 서버(웹서버+DB)
- 웹서버, DB
- 라우터(교통순경), 웹서버1/웹서버2/웹서버3, DB
- 라우터(교통순경), 웹서버1/웹서버2/웹서버3, 이미지용DB/텍스트용DB
- 라우터(교통순경), 웹서버1/웹서버2/웹서버3, 이미지용DB/텍스트용DB, 상태체크용서버
- 클라우드 서비스 : 이때 필요한 컴퓨터를 인터넷 클라우드 환경에서 빌림. AWS 등.
- 데이터베이스
- 목적 : 데이터를 잘 찾기 위한 것. 잘 정렬돼있어야 함.
- 인덱스 : 정리된 항목. 인덱스를 타지 않으면 처음부터 끝까지 다 뒤지는 것.
- SQL : 정형화된 것. DB에서 데이터 꺼내는 방법.
- NoSQL : 비정형화된 것. 몽고DB 등.
'TIL' 카테고리의 다른 글
[TIL-103] 위코드 2일차: HTML&CSS replit 14~24 (0) | 2022.01.25 |
---|---|
[TIL-102] 위코드 1일차: HTML&CSS replit 1~13 (0) | 2022.01.24 |
[TIL-100] 생활코딩 WEB2-Home server 5 / 스파르타코딩클럽 코딩 용어 해설 (0) | 2022.01.17 |
[TIL-99] 생활코딩 WEB2-Home server 1~4 (0) | 2022.01.17 |
[TIL-98,102] 노마드코더 유튜브 클론코딩 #7.16~#7.18 (0) | 2022.01.16 |