랑아
article thumbnail

웹 애플리케이션 작동원리

네트워크를 만드는 기술

PORT

TCP와 UDP 둘 다 포트 번호를 사용한다.
IP 프로토콜만 가지고는 한 IP에서 여러 애플리케이션이 동작할 때 특정 애플리케이션을 특정해 통신할 수가 없다.

포트 번호는 대상 IP 기기의 특정 애플리케이션(connection endpoint)을 특정하는 번호이다.

IP 주소만으로는 어느 서버로 요청을 보내는지 알 수 없기 때문에 포트 번호를 사용하여 receiver를 특정해 어느 서버로 보내는 요청인지 특정할 수 있다.

로컬 환경에서 Spring을 실행하면 Tomcat started on port(s): 8080과 같은 숫자가 표현된다. 이 숫자는 IP 주소를 가리키는 PC에 접속할 수 있는 통로(채널)을 의미한다. 로컬에서 실행했을 때는 로컬 PC의 IP 주소 127.0.0.1로 접근하여, 8080번이 통로를 통해 실행 중인 서버라는 것을 확인할 수 있다. 이미 사용 중인 포트는 중복해서 사용할 수 없다.

포트 번호는 0 ~ 65,535번 까지 사용할 수 있다. 그 중에서 0 ~ 1023번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있다.

  구분     포트 번호 범위     설명  
  Well-known port     0 ~ 1023     시스템 사용 번호 (슈퍼유저 권한 필요O)
사용 권장X  
  Registered port     1024 ~ 49151     특정 프로토콜이나 애플리케이션에서 사용하는 번호(슈퍼유저 권한 필요X)  
  Dynamic port     49152 ~ 65535     애플리케이션에서 혹은 임시 사용 번호  
  • 자주 사용되는 Well-known prot
  포트 번호     프로토콜 이름     전송 계층     설명  
  80     HTTP     TCP     웹서버 접속  
  443     HTTPS     TCP     웹서버 접속(SSL)  
  110     POP3     TCP     메일 읽기  
  25     SMTP     TCP     메일 서버간 메일 전송  
  22     SSH     TCP     컴퓨터 원격 로그인  
  53     DNS     UDP     DNS 질의  
  123     NTP     TCP     시간 동기화  


URL, DNS

URL

URL(Uniform Resource Locator)은 웹에 게시된 어떤 자원을 찾기 위한 브라우저에서 사용되는 메카니즘이다. 인터넷상에서 HTML이나 이미지 등 리소스의 위치를 특정하기 위한 서식으로써 탄생했다.

브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다.
CLI 환경에서 폴더와 파일의 위치를 찾아 이동하듯이, 슬래시를 이용해 서버의 폴더에 진입하거나 파일을 요청할 수 있다. 그러나 기본적인 보안의 일환으로 외부에서 직접 접근이 가능한 경우는 거의 없다.

URL은 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다. URL은 scheme, hosts, url-path로 구분할 수 있다. 가장 먼저 작성하는 scheme은 통신 방식(프로토콜)을 결정한다. 일반적인 웹 브라우저에서는 http(s)를 사용한다. hosts는 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다. url-path는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다.

URI는 Uniform Resource Identifier의 줄임말로, 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함한다. query는 웹 서버에 보내는 추가적인 질문이다.

브라우저의 검색창을 클릭하면 나타나는 주소는 URI이다. URI는 URL을 포함하는 상위 개념이다.

  구분     명칭     설명  
  file://
http://
https://  
  scheme     통신 프로토콜  
  127.0.0.1
www.google.com  
  hosts     웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP  
  :80
:443
:3000  
  port     웹 서버에 접속하기 위한 통로  
  /search
/Users/username/Desktop  
  url-path     웹 서버의 루트 디렉토리로부터 웹 페이지, 이미지, 동영상 등이 위치한 경로  
  q=Java     query     웹 서버에 전달하는 추가 질문  

Domain

웹 브라우저를 통해 특정 사이트에 진입할 때, IP 주소를 대신하여 사용하는 주소이다.
도메인은 아래 두 종류로 나뉜다.

  • gTLD : 일반 최상위 도메인(generic Top Level Domain)
  • ccTLD : 국가 최상위 도메인(country code Top Level Domain)

현재 4억개에 달하는 도메인을 관리하는 곳은 ICANN이라는 비영리 단체이다.
그 밖의 조직으로 registry와 registrar가 있다.

Registry는 도메인 관리 기관이다. 각 도메인 정보의 데이터베이스를 관리하고, registry에 따라 도메인 종류가 달라진다.

Registrar는 중개 등록업체이다. Registry의 데이터베이스에 직접 도메인 정보를 등록 가능하다.

gTLD는 전세계에서 등록이 가능한 .com, .net, .org, .edu, .gov, .int, .mil 일곱 가지로 시작하여 현재까지 .biz, .name, .info 등이 추가되었으며, VERISIGN 등의 회사가 registrar이고, 국내 ICANN 인증 registrar는 가비아, 후이즈 등이 있다.

ccTLD는 .kr, .us, .jp 등 200개 이상이 있다. 각국 네트워크 정보센터에서 위임받아 관리하며, .kr의 경우 한국 인터넷진흥원이 registry로 있고, registrar는 가비아, 후이즈 등이 있다.



DNS

DNS는 Domain Name System의 줄임말로, 호스트의 도메인 이름을 IP 주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템이다.

만약 브라우저의 검색창에 naver.com을 입력하면 이 요청은 DNS에서 IP 주소(125.209.222.142)를 찾고, 이 IP 주소에 해당하는 웹 서버로 요청을 전달하여 클라이언트와 서버가 통신할 수 있도록 한다.

DNS 순서

  1. URL에 주소를 입력하면 'DNS Lookup'이라는 다음 과정이 발생한다.
  2. 브라우저가 리졸버에게 IP 주소를 요청한다.
    • 리졸버 : 요청 받은 도메인의 IP 주소를 찾기 위해 여러 네임 서버에 반복적으로 질의하는 이름 서버
  3. 리졸버가 기존에 찾아본 도메인 정보가 담긴 캐시 파일을 살펴본다.
    • 해당되는 도메인 정보가 있다면 IP 주소를 리턴
    • 해당되는 도메인 정보를 찾을 수 없다면 다음 단계를 진행
  4. DNS 리졸버는 IP 주소를 얻기 위해 네임 서버들에게 재귀적인 쿼리를 진행한다.
    • 루트, 탑 레벨, 권한 있는 도메인 서버에 차례대로 쿼리를 진행하며 IP 주소를 알아냄
    • 리졸버는 쿼리수를 줄일 목적으로 기록되지 않은 도메인 네임 서버들의 주소를 저장하기도 함
  5. 리졸버가 전달 받은 주소의 IP 주소를 기록하고 브라우저에게 전달한다.

DNS는 응답을 보내기 위해 한 개 이상의 존 파일을 가지고 있다.
존 파일은 네임과 클래스, TTL, 레코드 타입, 레코드 데이터로 구성된 레코드들로 구성되어 있다.
레코드는 이름, 레코드 클래스, TTL, 레코드 타입, 레코드 데이터로 구성되어 있다.

  명칭     설명  
  이름     도메인 이름  
  레코드 클래스     네트워크 타입  
  TTL(Time To Live)     클라이언트가 데이터를 저장 가능한 시간  
  레코드 타입     반환될 데이터의 형식  
  레코드 데이터     반환되는 데이터  

'CS > 네트워크' 카테고리의 다른 글

HTTP  (0) 2023.04.16
웹 애플리케이션 작동원리 4  (0) 2023.04.16
웹 애플리케이션 작동원리 3  (0) 2023.04.16
웹 애플리케이션 작동원리 1  (0) 2023.04.16
profile

랑아

@RangA

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!