본문 바로가기

TIL

[TIL-101] 생활코딩 WEB2-Home server 6~10 / 스파르타코딩클럽 코딩 용어 해설

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 클라이언트 프로그램을 내장하고 있음.
    • 맥 어드레스/미디어 어드레스/피지컬 어드레스 : 통신 부품들은 부품마다 공장에서 기록된 고유 식별자 갖고 있음.
    • 공유기에 연결되면
      1. DHCP 클라이언트가 공유기에 DHCP 서버가 이 네트워크 안에 있는지 찾음.
      2. 자기의 맥 어드레스를 알려줌.
      3. DHCP 서버는 자신의 맥 어드레스와 함께 클라이언트에 IP 임대해줄 수 있다고 응답.
      4. 클라이언트가 그 IP 쓰겠다고 응답.
      5. DHCP 서버는 라우터(도 컴퓨터) 안에 어떤 맥 어드레스의 통신장치가 어떤 IP 빌려갔는지 기록.
      6. 동시에 클라이언트에 IP 임대시간 알려줌.
      7. 클라이언트는 이 정보를 갖고 제어판 설정에 채워넣음.
    • 효용 : 요즘은 기기를 휴대하면서 실시간으로 인터넷 연결을 바꾸는데 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

  • 서버 안의 역할들 다양함. 규모와 필요에 따라 점차 분리됨.
    1. 서버(웹서버+DB)
    2. 웹서버, DB
    3. 라우터(교통순경), 웹서버1/웹서버2/웹서버3, DB
    4. 라우터(교통순경), 웹서버1/웹서버2/웹서버3, 이미지용DB/텍스트용DB
    5. 라우터(교통순경), 웹서버1/웹서버2/웹서버3, 이미지용DB/텍스트용DB, 상태체크용서버
  • 클라우드 서비스 : 이때 필요한 컴퓨터를 인터넷 클라우드 환경에서 빌림. AWS 등.
  • 데이터베이스
    • 목적 : 데이터를 잘 찾기 위한 것. 잘 정렬돼있어야 함.
    • 인덱스 : 정리된 항목. 인덱스를 타지 않으면 처음부터 끝까지 다 뒤지는 것.
    • SQL : 정형화된 것. DB에서 데이터 꺼내는 방법.
    • NoSQL : 비정형화된 것. 몽고DB 등.