TIL 21.05.21

Jaemin Jung·2021년 5월 21일
0

Today I Learned

목록 보기
24/62
post-thumbnail

오늘한일

네트워크의 기초적인 개념들을 학습했다.
평소에 별 생각없이 익숙하게 사용하던 인터넷 네트워크 환경이 내부적으로는
굉장히 복잡한 구조로 되어있다는것을 깨닫게된 날이다.

Achievement Goals

(이해한대로 작성하였기에 틀릴수도 있습니다. 계속 공부하며 수정해 나가겠습니다.)

  • 클라이언트-서버 콘셉트를 이해할 수 있다.
  • 클라이언트-서버 아키텍처를 이해할 수 있다.
  • HTTP를 이용한 클라이언트-서버 통신을 이해할 수 있다.
  • API의 개념을 이해할 수 있다.
  • 브라우저의 작동 원리를 이해할 수 있다.
  • 보이지 않는 곳의 통신을 이해할 수 있다.
  • URL과 URI의 차이를 이해할 수 있다.

클라이언트-서버 아키텍처

인터넷이 없다면 흔히 사용하는 쇼핑몰 앱이나, sns등은 정상적으로 동작하지 않을것이다.
그 이유는 필요한 정보를 실시간으로 인터넷 서버를 통해서 받아와 출력해야하기 때문이다.

이렇게 프로그램이 활용할 수 있는 데이터나 루틴들을 리소스(Resource)라고 한다.

인터넷 연결 없이 작동 가능한 앱이 있다면, 앱 내부에 리소스가 있는것이고,
리소스가 존재하는 곳과, 리소스를 사용하는 앱을 분리시킨 것을
2티어 아키텍처 또는, 클라이언트-서버 아키텍처라고 부른다.

여기서 리소스를 사용하는 앱이 바로 "클라이언트", 리소스를 제공(serve)하는 곳은 "서버"라고 부른다.

카페에서 커피를 주문하는 손님과 커피를 제공해주는 직원의 관계라고 이해하면 쉽다.
손님이 커피를 주문하면 직원이 커피를 제공해주는것처럼

클라이언트와 서버 간의 통신은 요청과 응답으로 구성된다.

프로토콜

프로토콜은 통신규약 즉 약속이다.
클라이언트가 서버에 리소스를 요청할때에 서버에게 "저는 어떠한 데이터를 원합니다."라고 성공적으로 전달하기위한 수단이다.

웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 서로 대화를나눈다.

API

API는 Application Programming Interface의 약자로,
일종의 메뉴판이라고 볼수있다.
서버는 리소스 전달을 위한 메뉴판, 즉 API를 구축해놓아야 클라이언트가 이를 활용할 수 있다.

예를들어서 식당에 들어간 손님(클라이언트)가 주문을 하려는데 메뉴판이 없다면,
어떠한 메뉴를 주문가능한지를 모를것이다.

URL & URI

URL은 Uniform Resource Locator의 줄임말로 웹페이지, 이미지, 동영상 등의파일이 위치한 정보를 나타낸다.
scheme: 통신방식 (프로토콜),
hosts: 주소 (웹 서버의 이름이나 도메인 IP를 사용한다.),
url-path: 경로 (/에서 시작해서 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명)

URI는 Uniform Resource Identifier의 줄임말로,
URL의 기본요소에 query, bookmark를 더한다.

URI는 URL를 포함하는 상위개념이다.

scheme     hosts        url-path  query
  ↓          ↓             ↓       ↓  
http://www.google.com:80/search?q=JavaScript

IP & PORT

일상생활에서 어떤 장소로 찾아가기 위해서는 주소를 알아야 한다.
네트워크상에서는 마찬가지로 어떤 PC로 접속하기 위해 IP주소가 필요하다.

IP는 Internet Protocol의 줄임말로 인터넷상에서 사용되는 주소체계를 의미한다.

인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분된다.
이를 IPv4라고 한다.
IPv4는 각 덩어리마다 0부터 255까지 나타낼 수 있다.
최근에는 IPv4 프로토콜의 주소가 32비트라는 제한된 주소 공간 및
국가별로 할당된 주소가 거의 소진되고 있다는 한계점으로 인해
이에 대한 대안으로서 IPv6 프로토콜이 제안되었으며, 국제 표준이 RFC 를 통해서 확정되었고, 실제로 IPv6 주소는 휴대폰 및 컴퓨터에 할당되어 적용되고 있다.

  • 기억해야할 IP주소
    • localhost, 127.0.0.1 : 현재 사용 중인 로컬 PC를 지칭
    • 0.0.0.0, 255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소

PORT는 IP주소가 가리키는 PC에 접속할 수 있는 통로(채널)을 의미한다.
포트 번호는 0~ 65,535 까지 사용할 수 있고, 그 중에서 0 ~ 1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있습니다.

  • 기억해야할 PORT번호
    • 22 : SSH
    • 80 : HTTP
    • 443: HTTPS

Domain

IP주소는 숫자로만 구성되어있기에, 명시적이지 않고, 접속할 주소를 하나하나 다 외울수도 없는 노릇이다.
우리가 자주 접속하는 네이버의 IP주소는 125.209.222.141 외 3가지가 있다.
(터미널에서 nslookup 명령어로 확인 가능하다.)
그렇다면 메모장에 네이버 : 125.209.222.141 작성해놓고 매번 찾아봐야할까?

이러한 IP주소의 단점을 보완하기위해 Domain이 태어났다.
우리는 네이버에 접속할때 IP주소를 입력하지않고 naver.com을 입력해 접근 했을것이다.
여기서 naver.com이 Domain이다.

Domain은 IP주소의 명시적인 이름을 말한다.
하지만 모든 IP주소가 Domain 이름을 가지는 것은 아니다.
localhost(127.0.0.1)를 제외한 모든 도메인 이름은 일정 기간동안 대여하여 사용한다.

DNS

웹브라우저 주소창에 naver.com을 입력하면 해당 Domain과 매칭된 IP주소를 확인하는 작업이 반드시 필요하다.
네트워크에서는 DNS라는 서버가 별도로 있다.
DNS는 Domain Name System의 줄임말로, 호스트의 도메인 이름을 IP 주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템이다.

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

현재상태

  • 섹션2를 진행할 기초는 다 배웠지만, 겉핥기식으로 알고있을듯하다.
  • 주말에 최종 복습이 필요할것같다.
profile
내가 보려고 쓰는 블로그

0개의 댓글