[Section2] 네트워크 - 웹 애플리케이션 작동 원리 / 20230522
🧑🏻💻 TIL(Today I Learned)
✔️ 네트워크, 웹, HTTP
💡 웹 애플리케이션
➡️ 정적인 웹사이트의 한계를 벗어나 다양한 동적인 응답을 웹 브라우저라는 소프트웨어를 통해 가능하게 한 것
✍🏻 장점
- 브라우저를 통해 실행되기 때문에 설치나 다운로드 필요 없음
- 업데이트 등의 유지관리가 쉬움
- 네이티브 애플리케이션에 비해 만들기가 비교적 간편함
- 애플리케이션 스토어 승인이 필요 없음
✍🏻 단점
- 인터넷이 없으면 사용이 안 됨
- 네이티브 애플리케이션에 비해 속도 느림
- 애플리케이션 스토어에서 관리되지 않기 때문에 사용자 접근성이 떨어짐
- 질적으로나 보안상 위험에 노출되기 쉬움
📍 네이티브 애플리케이션(Native-application)
➡️ 핸드폰에 모바일용 애플리케이션을 설치하는 것과 같이 특정 기기에 설치해서 사용하는 애플리케이션
➡️ Apple IOS, Android OS, Windows와 같은 특정 실행환경에 종속됨
(아이폰에 설치되게 만든 애플리케이션은 갤럭시나 윈도우에서 실행 불가)
✍🏻 장점
→ 웹 애플리케이션보다 빠름
→ 애플리케이션이 설치된 기기의 시스템/기기의 리소스에 접근 용이
→ 인터넷 없이 사용 가능
→ 웹 애플리케이션에 비해 안전함
✍🏻 단점
→ 웹 애플리케이션에 비해 개발비가 더 들어감
→ 빠른 업데이트가 힘듦
→ 앱스토어에 승인받기가 힘들고 비용 발생
1. 네트워크에 대한 이해
- LAN(Local Area Netowork)
: 현재 사용하는 컴퓨터가 인터넷 제공업체에서 제공한 인터넷 라우터를 통해 연결되어 있는 것과 같이 좁은 범위에서 연결된 네트워크
LAN을 연결하는 선 → LAN 케이블 - WAN(Wide Area Network)
: 수많은 LAN이 모여 세계의 네트워크를 구성함 - 인터네트워킹(Internetworking)
: 네트워크끼리 연결하는 네트워크라는 의미, 여러 네트워크를 연결하는 것 (한 네트워크 확장, 네트워크와 네트워크 연결)
전 세계적으로 인터네트워킹하는 것이 바로 "인터넷(The Internet)" - 프토토콜(Protocol)
: 어떤 컴퓨터든 일관되게 네트워크를 사용할 수 있게 하는 공통언어(즉 규약, 약속)
🔎 TCP/ IP
➡️ 인터넷 통신 스위트(Internet Protocol Suite) 은 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약의 모음
➡️ 그 모음 중에서 "TCP(Transmission Control Protocol)와 IP(Internet Protocol)" 가장 많이 쓰임
📍 TCP, UDP
➡️ TCP/ IP 4계층 모델을 기준으로 IP 프로토콜의 계층인 인터넷 계층의 상위에서 동작함
➡️ 전송 계층에 속하는 2계층에서 동작하는 IP와 4계층에서 동작하는 애플리케이션을 중개하는 역할
- TCP는 통신 신뢰성을 높이고 실현하는 기능이 구현 → HTTP의 경우 모든 데이터를 제대로 송수신 하기위해 TCP 사용
: TCP 3-way handshake → 양 끝단의 기기의 신뢰성 있는 데이터 통신을 위해 TCP 방식이 연결을 설정하는 방식 - UDP에는 신뢰성을 높이는 기능이 없는 대신 높은 속도와 효율성 제공
: 애플리케이션의 정교한 제어 가능
연결 설정에 무관
✍🏻 PORT
➡️ TCP와 UDP 둘 다 포트번호 사용함
➡️ 포트번호는 대상 IP 기기의 특정 애플리케이션(connection endpoint)을 특정하는 번호
한 서버 인스턴스에서 웹서버와 메일 서버 두 개를 동시에 실행 중이라고 가정했을 때,
IP 주소만으로는 어느 서버로 요청을 보내는지 알 수 없음
➡️ 이런 경우를 위해 포트 번호를 사용해 receiver를 특정해 어느 서버로 보내는 요청인지 특정할 수 있음
➡️ 포트 번호는 0 ~ 65,535까지 사용 가능, 0 ~1023번까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있음
➡️ 자주 사용되는 well-known port
📍 IP(Internet Protocol)
➡️ 인터넷상에서 사용하는 주소체계 의미
➡️ 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분됨 → "IPv4(Internet Protocol version 4)"
인터넷 보급률이 낮았던 초기에는 IPv4로 네트워크에 연결된 PC에 주소를 할당하는 일이 가능했으나 개인 PC의 보급으로 IPv4가 할당할 수 있는 PC가 한계를 넘어서게 되고 때문에 나온 것이 IPv6, 표기법이 달아 2^128개의 IP 주소 표기 가능
- localhost, 127.0.0.1 : 현재 사용 중인 로컬 PC를 지칭
- 0.0.0.0, 255.255.255.255
: broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소
서버에서 접근 가능 IP 주소를 broadcast address로 지정하면, 모든 기기에서 서버에 접근 가능
✍🏻 IP 주소의 구조
- 서브넷 마스크(subnet mask)
: IPv4 주소에서 네트워크부가 어디까지인지 나타내는 것
IP 주소는 네트워크부와 호스트부로 나눌 수 있음
→ 네트워크부 : 어떤 네트워크인지 알 수 있는 정보
→ 호스트부 : 그 네트워크 안의 특정 컴퓨터를 지칭하는 정보
- IP 주소 : 192.168.1.1
- 서브넷 마스크 : 255.255.255.0
- 네트워크 주소 : 192.168.1.0
- 브로드캐스트 주소 : 192.168.1.255
8자리의 2진수 묶음 → 옥텟, IPv4 주소는 4개의 옥텟으로 이루어져 있음
위 서브넷 마스크의 경우는 1에서 3까지의 옥텟을 네트워크부로 사용하는 서브넷 마스크
4옥텟은 호스트부로 사용
하지만 비연결성 문제나 비신뢰성 문제와 같은 한계가 있기 때문에 이것을 극복하기 위해 TCP와 UDP 사용함
📍 패킷(Packet)
➡️ 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록
즉 정보를 보낼 때 특정 형태를 맞춰 보낸다는 것, 네트워크를 통해 전송되는 데이터 조각
- 회선 교환(Circuit Switching)
: 통신 회선을 설정하여 데이터 교환을 하는 회선교환 방식, 주로 음성전화 시스템에 사용
전화는 일대일로 데이터를 교환하고 전화 간 통화 중에는 다른 상대와 전화통화 불가 - 패킷 교환(Packet Swtitching)
: 여러 상대와 통신 가능해야하는 컴퓨터 네트워크에서는 회선 교환 방식이 효율적이지 않기 때문에 생겨난 교환 방식
- 원본 데이터를 패킷(packet)이라고 하는 작은 단위로 나누고 여러 회선을 통해 통신을 주고 받음
- 하나의 패킷은 header와 payload 로 구성
→ header에는 어떤 데이터의 몇 번째 데이터인지의 정보와 보내는 곳이나 최종 목적지에 대한 정보 들어있음 - 주고받을 데이터를 작게 분할하여 전송하더라도 도착한 곳에서 원래대로 복원 가능
🔎 URL(Uniform Resource Locator)
➡️ 웹에 게시된 어떤 자원을 찾기 위한 브라우저에서 사용되는 매커니즘
➡️ 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보 나타냄
➡️ 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치 나타냄
(https://codestates.com:443접속하면 codestates.com 주소가 가리키는 서버의 기본 폴더를 의미)
file://127.0.0.1/Users/[사용자이름]/Desktop/
→ 위와 같이 크롬 브라우저에 입력하면 브라우저로 PC의 폴더와 파일 탐색 가능
- scheme : 통신방식(프로토콜) 결정, 일반 웹 브라우저에서는 http(s) 사용
- hosts : 웹 서버의 이름이나 도메인, IP를 사용하여 주소 나타냄
- url-path : 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명 나타냄
- query : 웹 서버에 보내는 추가적인 질문, 위와 같이 자바스크립으를 추가하여 검색하면 아래와 같이 나타남
브라우저의 검색창을 클릭하면 나타나는 주소가 URI, URI는 URL을 포함하는 상위개념
'URL은 URI다.'는 참이고, 'URI는 URL이다.'는 거짓
🔎 Domain name
➡️ 웹사이트의 주소를 IP 주소로만 작성해서 이용해야 한다면 기억하기도 어렵고 이용하기도 쉽지 않음 그래서 호스트 이름과 도메인 이름으로 바꾸어 기억하기 쉬운 이름을 사용할 수 있음
➡️ IP 주소가 지번 또는 도로명 주소라면 도메인 이름은 해당 주소에 위치한 상호
✍🏻 도메인 종류
- gTLD – generic Top Level Domain
- 전 세계에서 등록 가능한 com, .net, .org, .edu, .gov, .int, .mil 일곱 가지로 시작하여 현재까지 .biz, .name, .info 등이 추가되어있음
- VERISIGN 등의 회사가 registrar이고, 국내 ICANN 인증 registrar는 가비아, 후이즈 등이 있음
- ccTLD – country code Top Level Domain
- .kr, .us, .jp 등 200개 이상이 있음
- 각국 네트워크 정보센터에서 위임받아 관리하며 .kr의 경우 한국인터넷진흥원이 registry, registar는 가비아 후이즈 등이 있음
🔎 DNS(Domain Name System)
➡️ 호스트의 도메인 이름을 IP 주소로 변환하거나 반대의 경우 수행할 수 있도록 개발된 데이터베이스 시스템
➡️ 모든 IP 주소가 도메인 이름을 가지는 건 아니고 일정 기간 도메인 이름을 대여해서 사용하게 됨 그때 도메인 이름과 매칭된 IP 주소를 찾아 변환하여 클라이언트와 서버과 통신할 수 있도록 하는 것
공부하고 알아야 할 게 늘 쏟아지지만 오늘도 유난히 우르르 쏟아진 날...... 열심히 기록하고 정리하자!
'SEB_BE_45 > 공부 정리' 카테고리의 다른 글
[Section2] 데이터베이스 - SQL (0) | 2023.05.24 |
---|---|
[Section2] 네트워크 - HTTP / 20230523 (0) | 2023.05.24 |
[Section2] 06. 자료구조와 알고리즘 3 / 20230517 (0) | 2023.05.18 |
[Section2] 04. 자료구조와 알고리즘 - Graph, Tree 1 / 20230515 (1) | 2023.05.16 |
[Section2] 03. 자료구조와 알고리즘 - Stack과 Queue / 20230512 (0) | 2023.05.15 |