IT STUDY LOG
[웹서비스 개발 기초] 02. 웹서비스 접근하기 본문
# 학습 목표
- 브라우저의 작동 원리를 이해할 수 있다.
- 보이지 않는 곳의 통신을 이해할 수 있다.
- 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을 사용)
- localhostbroadcast 주소 - Direct Broadcast
> 다른 네트워크에 브로드캐스트 메세지 전달
> 수신 IP 설정 : NW IP + Host IP를 모두 설정
(예) NW 주소가 192.168.197.0/24일 경우 192.168.197.255
- Limited(Local) Broadcast
> 동일 네트워크 내에서 모든 노드로 전달
> 수신 IP 설정 : 255.255.255.255network 주소 - 네트워크 주소를 제외한 모든 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 등
- IP 주소를 대신해 사용하는 주소
################### 윈도우 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)동안 자신의 캐시에 저장해 대상 사이트에 접속
- 사용자 호스트가 Recursive 네임 서버에 접속하고자하는 도메인/URL (http://google.com) IP 주소를 질의 (DNS 질의)
- DNS Lookup 명령어
- DNS 질의의 종류
- 순방향 룩업: 도메인명을 통해 IP 주소를 알아내는 질의
- 역방향 룩업: IP 주소를 통해 도메인명을 알아내는 질의
- 질의 유형
질의 유형 설명 A(Address) - 도메인에 대한 IPv4 주소 질의(<-> PTR 질의 유형)
- AAAA의 경우 IPv6ANY - 도메인에 대한 모든 레코드 질의
- 일반적으로 요청 대비 응답이 커서 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) - 존 버전을 비교해 상위 버전일 경우 존 전송 요청
- DNS 질의의 종류
[발표 주제] 터미널에서 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
- 사용법 : nslookup [도메인] [네임서버]
- dig 명령어
- 사용법 : dig [@네임서버] 도메인 [쿼리유형] [쿼리옵션]
명령어 인수 항목 설명 @네임서버 사용할 네임 서버 지정, 생략 시 해당 시스템에 설정된 기본 네임 서버 사용 질의유형 질의 유형을 생략할 경우 기본적으로 A 유형 질의 수행 질의옵션 네임서버 점검을 위한 옵션들
+norecurse : authoritative 네임서버에 반복적 질의를 수행해 정상 응답 여부 점검
+tcp : 53/tcp 허용 여부를 점검
+trace : 계층적 위임 상태 점검, 최상위 루트 도메인부터 최종 질의대상 도메인까지 계층 구조에 따른 질의 수행
- 사용법 : dig [@네임서버] 도메인 [쿼리유형] [쿼리옵션]
- nslookup 명령어
- 관련 명령어
출처 : 에듀온 유상통 컴퓨터일반(유수 저), 탑스팟 정보보안기사 실기 (정일영, 강재순, 조현준 공저), 챗GPT
'devops bootcamp 4 > 개발 및 배포' 카테고리의 다른 글
[Git과 버전 관리 시스템] 02. Git (0) | 2023.03.20 |
---|---|
[Git과 버전 관리 시스템] 01. 개발자 도구 Git 설치 (0) | 2023.03.20 |
[웹서비스 개발 기초] 04. HTTP 요청 실습 (Postman) (0) | 2023.03.17 |
[웹서비스 개발 기초] 03. HTTP 기초 (0) | 2023.03.16 |
[웹서비스 개발 기초] 01. 클라이언트-서버 아키텍처 (0) | 2023.03.15 |
Comments