IT STUDY LOG

[웹서비스 개발 기초] 02. 웹서비스 접근하기 본문

devops bootcamp 4/개발 및 배포

[웹서비스 개발 기초] 02. 웹서비스 접근하기

roheerumi 2023. 3. 15. 18:10

# 학습 목표

  • 브라우저의 작동 원리를 이해할 수 있다.
    • 보이지 않는 곳의 통신을 이해할 수 있다.
    • URL과 URI의 차이를 이해할 수 있다.
    • IP 주소와 포트(Port)에 대해 이해할 수 있다.
    • DNS와 IP 주소의 관계를 설명할 수 있다.

# 학습 내용

1.  URL과 URI

  • 개요
      URL URI
    개념 - Uniform Resource Locator
    - 서버가 제공되는 환경에 존재하는 파일의 위치를 나타냄
    - 특정 자원이 위치한 서버의 도메인 주소와 그 자원의 경로를 표시
    - (예) " https://www.google.com/search?q=hello "는 구글 검색창에서 "hello"라는 검색어를 검색하는 URL
    - 인터넷 상 자원 위치 지정
    - Uniform Resource Identifier
    - 자원을 나타내는 식별자를 의미
    - 이는 URL을 포함하는 더 넓은 범위의 개념
    - URL 외에도 URN(Uniform Resource Name) 등 포함
    - 자원을 식별하는데 사용
    구성 - scheme : 통신 방식(프로토콜 결정)
    - hosts : 웹 서버의 이름이나 도메인, IP를 통해 주소를 나타냄
    - url-path : 웹 서버에서 지정한 루트 디렉토리부터 시작해 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타냄
    - scheme, hosts, url-path
    + query : 웹 서버에 보내는 추가적인 질문
    + bookmark 
  • URI의 구성 요소 상세 예시
    부분 명칭 설명
    file://, http://, https:// scheme 통신 프로토콜
    127.0.0.1(로컬 PC), www.google.com hosts 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버의 도메인 or IP
    :80, :443, :3000 port 웹 서버에 접속하기 위한 통로
    /search, /Users/username/Desktop url-path 웹 서버의 루트 디렉토리부터 웹 페이지, 이미지, 동영상 등의 파일이 위치하기 까지의 경로
    q=JavaScript query 웹 서버에 전달하는 추가 질문

 

2. IP, Port

  • IP(Internet Protocol)
    • 개념
      • OSI 3계층인 네트워크 계층, TCP/IP 프로토콜의 인터넷 계층에 해당하는 프로토콜
      • 비연결형, 비신뢰적 프로토콜
      • 라우팅을 담당해 최적의 경로를 선정해 목적지를 찾아가는 프로토콜
      • 인터넷의 주소 체계
    • IP프로토콜 구분
      구분 IPv4 IPv6
      주소 길이 8bit * 4필드 (32bit, 4bytes) 16bit * 8필드 (128bit, 16bytes)
      주소 표시 -10진수로 표시
      - Dot(.)으로 구분
      - 16진수로 표시
      - 콜론(:) 으로 구분
      클래스 - A, B, C, D, E 클래스
      - 클래스 구분하여 할당
      - 클래스 구분 없이 순차적으로 할당
      패킷 헤더 - 가변 길이(20bytes + option)
      - 헤더 체크섬 필요
      - 고정 길이(40bytes)
      - 헤더 체크섬 불필요
      보안 - IPSec 별도 설치 - IPSec 기본 탑재
      주소 유형 - 유니캐스트
      - 멀티캐스트
      - 브로드캐스트
      - 유니캐스트
      - 애니캐스트
      - 멀티캐스트
      브로드캐스트 - 브로드캐스트 전송으로 대역폭 낭비 - 브로드캐스트 대신 멀티캐스트 사용
      비고 - - IPv4의 주소 고갈로 새롭게 표준화된 차세대 IP 어드레스
    • IPv4 Adrress
      • 표현 가능한 주소 2^32 = 43억개
      • 관리 및 할당 기관 : NIC
      • IPv4의 클래스 
        클래스 내용
        A - 시작 비트 : 0
        - 네트워크 식별자 : 7bit 사용 / 호스트 식별자 : 24bit 사용
        - 주소 범위 : 0.0.0.0 ~ 127.255.255.255
        - IP 주소 구성 : Network 주소.Host 주소.Host 주소.Host 주소
        - 최대 네트워크 수 : 2^7 - 2개
        - 최대 호스트 수 : 2^24 - 2개 (네트워크 주소, 브로드캐스트 주소 제외)
        B - 시작 비트 : 10
        - 네트워크 식별자: 14bit 사용 / 호스트 식별자 : 16bit 사용
        - 주소 범위 : 128.0.0.0 ~ 191.255.255.255
        - IP 주소 구성 : Network 주소.Network 주소.Host 주소.Host 주소
        - 최대 네트워크 수 : 2^14 - 2개
        - 최대 호스트 수 : 2^16 - 2개 (네트워크 주소, 브로드캐스트 주소 제외)
        C - 시작 비트 : 110
        - 네트워크 식별자 : 21bit 사용 호스트 식별자 : 8bit 사용
        - 주소 범위 : 192.0.0.0 ~ 223.255.255.255
        - IP 주소 구성 : Network 주소.Network 주소.Network 주소.Host 주소
        - 최대 네트워크 수 : 2^21 - 2개
        - 최대 호스트 수 : 2^8 - 2개 (네트워크 주소, 브로드캐스트 주소 제외)
        D 멀티캐스팅용
        E 과학목적용
      • 특수 주소
        구분 내용
        사설 IP 주소 - A Class : 10.0.0.0 ~ 10.255.255.255
        - B Class : 172.16.0.0 ~ 172.32.255.255
        - C Class : 192.168.0.0 ~ 192.168.255.255
        루프백 (로컬 PC) 주소 - 자기 자신을 가리키기 위한 목적으로 쓰기 위해 예약된 IP 주소
        - 127.0.0.0 ~ 127.255.255.255(127.0.0.0/8) 까지(주로 127.0.0.1을 사용)
        - localhost
        broadcast 주소 - Direct Broadcast 
         > 다른 네트워크에 브로드캐스트 메세지 전달
         > 수신 IP 설정 : NW IP + Host IP를 모두 설정
        (예) NW 주소가 192.168.197.0/24일 경우 192.168.197.255
        - Limited(Local) Broadcast
         > 동일 네트워크 내에서 모든 노드로 전달
         > 수신 IP 설정 : 255.255.255.255
        network 주소 - 네트워크 주소를 제외한 모든 host IP bit가 0인 경우
  • Port
    • 개념
      • 상위 어플리케이션/서비스/소켓을 식별하기 위한 식별자로 IANA라는 기구를 통해 관리
    • 포트의 기능
      • 서비스(프로세스) 식별
      • PAT(NAT)를 통해 사설 IP를 부여받은 기기를 식별할 때 사용
    • 포트의 범위
      • 사용 목적에 따른 포트 범위
        well-known port resisterd port dynamic port
        - 0 ~ 1023
        - 잘 알려진 서비스에 예약된 포트
        - FTP(21/tcp), http(80/tcp), telnet(23/tcp) 등
        - URI 꼭 명시하지 않아도 됨
        - 1024 ~ 49151
        - 제조사(vendor)가 IANA에 용도를 등록해 사용하는 포트
        - Oracle(1521/tcp), MySQL(3306/tcp) 등
        - URI에 꼭 명시해야함
         - 49152 ~ 65535
        - 동적으로 사용하는 포트로 일반적으로 클라이언트 포트로 사용
        - URI에 꼭 명시해야함
      • 사용 권한에 따른 포트 범위
        privilleged port unprivileged port
        - 0 ~ 1023
        - 관리자 권한으로 사용 가능한 포트
        -  1024 ~ 65535
        - 일반 사용자 권한으로 사용 가능한 포트
    • 대표적인 프로토콜 및 포트 번호
      프로토콜 포트 번호 내용
      http 80/tcp Hyper-Text Transfer Protocol
      https 443/tcp http over ssl/tls
      ftp 20/21/tcp file transfer protocol
      (20 : 데이터 포트, 21 : 제어포트)
      ftps 990/tcp ftp over ssl/tlsg
      ssh 22/tcp secure shell, 암호화된 원격 터미널 접속 ㅡ로토콜
      sftp 22/tcp SSH File Transfer Protocol, SSH를 이용한 암호화된 파일 송수신 프로토콜
      telnet 23/tcp TELe NETwork, 암호화하지 않은 원격 터미널 접속 프로토콜
      telnets 992/tcp telnet over ssl/tls
      smtp 25/tcp Simple Mail Transfer Protocol, 메일 전송용 프로토콜
      smtps 465/tcp smtp over ssl/tls
      pop3 110/tcp Post Office Protocol Version3, 메일 수신용 프로토콜
      pop3s 995/tcp pop3 over ssl/tls
      imap 143/tcp Internet Message Access Protocol, 메일 수신용 프로토콜
      imap3s 993/tcp imap over ssl/tls
      dns 53/tcp, udp Domain Name System, 도메인명에 대한 호스트 정보를 제공해주는 포 로토콜
      dhcp 67, 68/udp Dynamic Host Configuration Protocol, 서버(67)와 클라이언트(68), 동적으로 호스트 네트워크 설정을 해주는 프로토콜
      tftp 69/udp Trivial FTP, 단순 파일 송수신 프로토콜
      snmp 161/udp Simple Network Management Protocol, 네트워크 관리 프로토콜
[발표주제] public IP와 Private IP의 차이점을 설명하세요.
  • 공인 IP(Public IP)와 사설 IP(Private IP)
    • 개념
      Public IP Private IP
      - ISP(인터넷 서비스 공급자)가 DHCP 프로토콜을 통해 제공하는 주소
      - 외부에 공개되어있는 IP 주소
      - 전 세계에서 유일한 IP 주소를 가짐
      - 동일한 공인 IP 주소를 가지는 디바이스들에 부여되는 IP주소
      - 1개의 공인 IP 주소에 다량의 가상 사설 IP 주소를 할당하는 것
    • NAT
      • 개요
        • Network Address Translation 
        • 사설 IP 주소와 공인  IP 주소간의 주소 변환 표준
      • 사용 목적
        • IP 부족 해결: IPv4의 공인 IP 주소 부족 문제 다소 해소
        • 보안성 향상(은닉성): 라우터는 자신에게 할당된 공인 IP 주소만을 외부로 내보내고, 내부에서는 사설 IP 주소만을 사용하도록 해서 내부 네트워크 주소를 은닉
        • 관리 효율화 : ISP 사업자 변경 시 내부 Network의 변경 부담 없이 Router에서 ISP 업체 IP 주소만 변경
      • 종류
        Static NAT Dynamic NAT NAT-PAT(Port Address Translation)
        - 하나의 공인 IP에 하나의 사설 IP 부여 - 여러 개의 내부 사설 IP와 여러 개의 공인 IP 주소를 동적으로 매핑 - Dynamic NAT의 한 종류
        - 하나의 공인 IP를 다수의 사설 IP가 공유하는 방식
        - 포트 번호를 이용해 주소를 매핑

 

3. 도메인과 DNS

  • Domain name
    • IP 주소를 대신해 사용하는 주소
      • 구글 서버의 도메인 네임 : www.google.com
      • 구글 서버의 IP 주소 : 142.251.222.36 등
################### 윈도우 cmd 질의 ###################
# google.com의 ip 주소 질의
서버:    bns1.hananet.net
Address:  210.220.163.82

권한 없는 응답:
이름:    www.google.com
Addresses:  2404:6800:400a:805::2004
          142.250.207.100

# 로컬 캐시에 저장된 dns 정보 조회
C:\Users\roheerumi>ipconfig /displaydns

Windows IP 구성
    ogs.google.com
    ----------------------------------------
    데이터 이름 . . . . . : ogs.google.com
    데이터 유형 . . . . . : 5
    TTL(Time To Live) . : 160
    데이터 길이 . . . . . : 8
    섹션 . . . . . . . : 응답
    CNAME 레코드  . . . . : www3.l.google.com


    데이터 이름 . . . . . : www3.l.google.com
    데이터 유형 . . . . . : 1
    TTL(Time To Live) . : 160
    데이터 길이 . . . . . : 4
    섹션 . . . . . . . : 응답
    (호스트) 레코드 . . . : 142.251.42.174
    

    ssl.google-analytics.com
    ----------------------------------------
    데이터 이름 . . . . . : ssl.google-analytics.com
    데이터 유형 . . . . . : 1
    TTL(Time To Live) . : 90
    데이터 길이 . . . . . : 4
    섹션 . . . . . . . : 응답
    (호스트) 레코드 . . . : 142.251.42.168
  • DNS
    • 개요
      • Domain Name System 
      • IP 주소와 도메인 네임을 변환해주는 시스템
    • DNS 서버의 분류
      Recursive(Cache) 네임서버(DNS서버) Authoritative 네임서버(DNS서버)
      - 관리/위임받은 도메인 없이 모든 도메인 질의에 대해 응답해주는 DNS 서버
      - 서버 캐시에 저장된 정보 or 반복적 질의를 통해 그 결과를 사용자 호스트에 응답해줌
      - ISP 업체에서 제공하는 DNS서버 (ex) KT 도메인 서버
      - 관리하는, 위임받은 도메인을 가지고 있는ㄴ DNS 서버
      - 자신이 관리하는 도메인에 대해서만 응답
      - Zone : 네임 서버가 관리하는 도메인 영역
      - Zone File : 관리 도메인에 대한 정보를 담고 있는 파일
      - 주로 각 회사/사이트별로 자신의 도메인을 관리하는 DNS 서버 해당 (ex) 구글 등
    • DNS 질의의 종류
      재귀적 질의 반복적 질의
      - 사용자 호스트가 Recursive 네임서버로 질의할 때 사용되는 방식
      - 동작 방식
       1) Recursive 네임서버로 대상 도메인의 리소스 레코드 정보를 조회해 응답해달라는 질의
       2-1) Recursive 네임서버는 자신의 캐시 데이터 조회해 데이터가 있으면 사용자 호스트로 반환
       2-2) 만일 데이터가 없을 시 최상위 Root 네임서버로부터 질의 대상 도메인 네임서버까지 반복적 질의를 수행한 후 사용자 호스트에 반환
      -  Recursive 네임서버가 도메인을 관리하는 각 네임서버(Authoritative 네임 서버)로 질의할 때 사용하는 방식
      - 최상위 Root 네임서버로부터 계층 구조에 따라 질의 대상 도메인 네임서버까지 반복적 질의를 수행하는 것
[발표 주제] 검색창에 http://google.com 을 검색하면, DNS에서 어떤 일이 일어나나요? 이에 대한 설명을 작성하세요.
  • DNS의 동작 방식
    • 사용자 호스트가 Recursive 네임 서버에 접속하고자하는 도메인/URL (http://google.com) IP 주소를 질의 (DNS 질의)
      윈도우 Linux/Unix
      1. 로컬 DNS 캐시 조회
      2. hosts.ics 검색
      3. hosts 파일 검색
      4. 시스템에 설정되어있는 네임서버로 DNS 질의 요청
      1. /etc/hosts 파일 참조
      2. /etc/resolv.conf에 지정된 시스템 기본 네임서버로 질의
      *참고 : /etc/host.conf 파일에 DNS 질의 순서를 지정할 수 있음
    • 질의를 받은 Recursive 네임 서버는 자신의 캐시에 데이터가 있을 경우 바로 응답하고 없으면 root 네임 서버부터 최종 질의 대상 도메인의 네임서버까지 반복적 질의를 수행하여 원하는 정보를 얻음
    • 도메인에 대한 IP 주소를 획득한 네임서버는 질의한 사용자 호스트에 응답 (DNS 응답)
    • 사용자 호스트는 네임 서버로부터 받은 IP 주소를 일정 시간(TTL)동안 자신의 캐시에 저장해 대상 사이트에 접속 
  • DNS Lookup 명령어
    • DNS 질의의 종류
      • 순방향 룩업: 도메인명을 통해 IP 주소를 알아내는 질의
      • 역방향 룩업: IP 주소를 통해 도메인명을 알아내는 질의
      • 질의 유형
        질의 유형 설명
        A(Address) - 도메인에 대한 IPv4 주소 질의(<-> PTR 질의 유형)
        - AAAA의 경우 IPv6
        ANY - 도메인에 대한 모든 레코드 질의
        - 일반적으로 요청 대비 응답이 커서 DRDoS 공격에 악용
        MX(Mail Exchanger) - 도메인의 메일 서버 질의
        NS(Name Server) - 도메인의 네임 서버 질의
        SOA(Start Of Authority) - 존의 기본 속성 정보(존 파일 버전, 존 전송 주기) 등 질의
        TXT(text) - 도메인에 대한 텍스트 정보 질의
        - TXT 레코드에는 대표적으로 SPF(발송자 메일 서버 인증) 레코드 정보가 포함
        - 일반적으로 요청 대비 응답이 커서 DRDoS 공격에 악용
        PTR(Pointer) - IP에 대한 도메인 정보 질의(<-> A 질의 유형)
        - Reverse Zone 파일에 설정된 PTR 레코드 질의
        AXFR(Authoritative Zone Transfer) - 존 버전에 상관 없이 무조건 존 전송 요청
        IXFR(Incremental Zone Transfer)  - 존 버전을 비교해 상위 버전일 경우 존 전송 요청
[발표 주제] 터미널에서 nslookup 명령을 실행 했을 때 나오는 결과값에 대한 설명을 작성하세요.
    • 관련 명령어
      • nslookup 명령어
          • 사용법 : nslookup [도메인] [네임서버]
            명령어 인수 항목 설명
            도메인 DNS 질의를 요청할 도메인
            네임서버 네임서버를 지정하여 DNS 질의
          • 터미널 질의 결과
        ################### DNS 질의 ###################
        roheerumi@devops:~$ nslookup www.google.com
        # [DNS 질의를 요청한 네임 서버 정보]
        Server:		127.0.0.53 
        Address:	127.0.0.53#53
        
        # [DNS 질의에 대한 응답]
        Non-authoritative answer:
        Name:	www.google.com
        Address: 142.251.222.36
        Name:	www.google.com
        Address: 2404:6800:400a:813::2004
        
        ################### DNS 관련 설정 파일 ###################
        # [/etc/host.conf : 어떤 순서로 DNS 질의할지 설정하는 파일]
        root@devops:/etc# cat host.conf 
        # The "order" line is only used by old versions of the C library.
        order hosts,bind # order절에 명시된 순서대로 DNS 질의 수행(hosts: hosts 파일/bind : 네임서버)
        multi on # multi는 /etc/hosts 파일에 여러 개의 IP 주소를 가질 수 있도록 하는 설정
        
        # [/etc/hosts : IP 주소와 도메인/호스트명 매핑 정보를 담고 있는 파일]
        root@devops:/etc# cat hosts
        127.0.0.1	localhost
        127.0.1.1	devops-virtualbox
        
        # The following lines are desirable for IPv6 capable hosts
        ::1     ip6-localhost ip6-loopback
        fe00::0 ip6-localnet
        ff00::0 ip6-mcastprefix
        ff02::1 ip6-allnodes
        ff02::2 ip6-allrouters
        
        # [/etc/resolv.conf : 시스템 기본 네임 서버를 설정하는 파일]
        root@devops:/etc# cat resolv.conf 
        # This file is managed by man:systemd-resolved(8). Do not edit.
        #
        # This is a dynamic resolv.conf file for connecting local clients to the
        # internal DNS stub resolver of systemd-resolved. This file lists all
        # configured search domains.
        #
        # Run "resolvectl status" to see details about the uplink DNS servers
        # currently in use.
        #
        # Third party programs must not access this file directly, but only through the
        # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
        # replace this symlink by a static file or a different symlink.
        #
        # See man:systemd-resolved.service(8) for details about the supported modes of
        # operation for /etc/resolv.conf.
        
        nameserver 127.0.0.53 # DNS 질의 시 요청한 IP 주소와 동일함
        options edns0 trust-ad
      • dig 명령어
        • 사용법 : dig [@네임서버] 도메인 [쿼리유형] [쿼리옵션]
          명령어 인수 항목 설명
          @네임서버 사용할 네임 서버 지정, 생략 시 해당 시스템에 설정된 기본 네임 서버 사용
          질의유형 질의 유형을 생략할 경우 기본적으로 A 유형 질의 수행
          질의옵션 네임서버 점검을 위한 옵션들
          +norecurse : authoritative 네임서버에 반복적 질의를 수행해 정상 응답 여부 점검
          +tcp : 53/tcp 허용 여부를 점검
          +trace : 계층적 위임 상태 점검, 최상위 루트 도메인부터 최종 질의대상 도메인까지 계층 구조에 따른 질의 수행
출처 : 에듀온 유상통 컴퓨터일반(유수 저), 탑스팟 정보보안기사 실기 (정일영, 강재순, 조현준 공저), 챗GPT
Comments