# 웹 애플리케이션에 대한 이해
- 웹 애플리케이션 네이티브 애플리케이션의 기본 개념에 대해 이해할 수 있다.
# 네트워크를 만드는 기술
- 네트워크를 만드는 기술을 이해할 수 있다.
# 웹을 구성하는 기술
- 웹을 구성하는 기술을 이해할 수 있다.
# HTTP
- HTTP mmessages의 구조를 설명할 수 있다,
1. 웹 애플리케이션 vs 네이티브 애플리케이션
웹 애플리케이션 | 네이티브 애플리케이션 | |
설명 | ▪ 웹 브라우저를 통해 접근이 가능 | ▪ 특정 기기에 설치해서 사용 ▪ Apple IOS, Android OS, Windows와 같은 특정 실행환경에 종속 ▪ 설치된 기기를 제외하고는 실행될 수 없음 |
장점 | ▪ 브라우저를 통해 실행되기 때문에 설치나 다운로드가 필요 없음 ▪ 업데이트 등의 유지관리가 쉬움 ▪ 네이티브 애플리케이션에 비해 비교적 만들기 간편 ▪ 애플리케이션 스토어의 승인 불필요 |
▪ 웹 애플리케이션 보다 빠름 ▪ 애플리케이션이 설치된 기기의 시스템 / 기기의 리소스에 접근이 용이 (GPS, 카메라 등) ▪ 인터넷 없이 사용 가능 ▪ 웹 애플리케이션에 비해 안전 (모바일의 경우 앱스토어의 승인을 받아야 함) |
단점 | ▪ 인터넷이 없으면 사용 불가 ▪ 네이티브 애플리케이션에 비해 느림 ▪ 애플리케이션 스토어에서 관리되지 않아 사용자의 접근성이 떨어짐 ▪ 보안상 위험에 노출되기 쉬움 |
▪ 웹 애플리케이션에 비해 개발비가 높음(멀티 플랫폼 개발 등) ▪ 빠른 업데이트가 힘듦 ▪ 앱스토어에 승인 받기가 힘드고. 비용이 발생함 |
1. TCP/IP
- LAN과 WAN
▪ LAN (Local Area Network) : 좁은 범위에서 연결된 네트워크
→ 인터넷 라우터를 통해 연결된 인터넷 (유무선 인터넷 모두 포함)
▪ WAN (Wide Area Network) : LAN들이 모여서 세계의 네트워크를 구성하는 것
- 인터네트워킹 (Internetworking)
▪ 네트워크를 확장하는 방식
▪ 장점
- 프로토콜 (Prorocol)
: 컴퓨터끼리 네트워크를 사용하여 소통하기 위한 공통된 약속
- TCP / IP (Transmission Control Prorocol / Internet Protocol)
: 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약의 모음
TCP/IP 4계층 모델 | 주요 프로토콜 | 역할 | |
4층 | 응용 계층 | HTTP, DNS, FTP 등 | 애플리케이션에 맞춰 통신 |
3층 | 전송 계층 | TCP, UDP 등 | IP와 애플리케이션을 중개 데이터 전달 |
2층 | 인터넷 계층 | IP, ICMP, ARP, RARP | 네트워크 주소를 기반으로 데이터 전송 |
1층 | 네트워크 접근 계층 | Ethernet, Wifi 등 | 컴퓨터를 물리적으로 네트워크에 연결해서 기기간 전송이 가능하게 함 |
- 주소 (Address)
: 네트워크에 연결된 특정 PC의 주소를 나타내는 체계 → IP address (IP주소)
▪ IP 주소 : TCP/IP 구조에서 컴퓨터를 식별하기 위한 주소 (그때그때 할당)
▪ MAC 주소 : 제조사에서 처음부터 할당하는 고유 시리얼 (처음부터 주어짐)
→ 이더넷 에서는 네트워크상의 송수신 상대를 특정할 때 MAC 주소를 사용하고, TCP/IP 에서는 IP address를 사용
→ 같은 LAN상의 기기끼리 통신할 때 상대의 MAC주소를 먼저 파악함
→ 이때 사용하는 것이 ARP (Address Resolution Prorocol)
- 패킷
: 기기끼리의 통신에는 회성 교환(Circuit Switching) 방식과 패킷 교환(Packet Switching) 방식이 있지만 회성 교환 방식은 1 : 1 통신방식이기 때문에 컴퓨터네트워크에서 효율적이지 않음
▪ 패킷교환
: 원본 데이터를 패킷(Packet)이라고 하는 작은 단위로 나누고, 여러 회선을 공용해 통신을 주고 받음
: 하나의 패킷 (헤더와 페이로드로 구성)
: 헤더 (어떤 데이터의 몇번째 데이터인지의 정보 + 보내는 곳의 정보 + 도착지의 정보가 들어있음)
→ 이렇게 데이터를 작게 분할하여 전달해도 도착에서는 원래의 데이터 대로 복원이 가능
2. IP
- IP 주소
: TCP/IP 구조에서 컴퓨터를 식별하기 위한 주소
▪ LAN 네트워크 내부에서 사용 : privet 주소
▪ 인터넷에서 사용 : public IP 주소
→ 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네덩이의 숫자로 구분됨
→ OOO.OOO.OOO.OOO의 구조
- IP 주소 구조
▪ 서브넷 마스크 (Subnet Mask)
: IPv4 주소에서 네트워크부 가 어디까지인지 나타내는 것
: 아래 예시에서는 1~3까지의 옥텟을 네트워크부로 사용하는 서브넷 마스크. 따라서 4옥텟은 호스트부로 사용
ex) 192.168.1.100
→ 192.168.1 (network part) .100 (host part)
- IP 주소의 할당과 관리
: 시작(0)과 끝(255)를 제외한 254개의 주소만이 할당 가능한 IP주소
▪ 호스트부가 0으로만 이루어진 주소 → 네트워크 주소 (해당 네트워크를 의미)
▪ 호스트부가 1으로만 이루어진 주소 → 브로드캐스트 주소 (ARP와 같은 기능을 사용하기 위해 사용)
- IP 프로토콜의 한계
▪ 비 연결성 : 패킷을 받을 대상이 없거나 특정한 이유로 서비스 불능 상태에 빠져도 데이터를 받을 상대의 상태 파악이 불가능하여 패킷을 그대로 전송함
▪ 비 신뢰성 : 중간에 패킷이 사라지거나, 보내는 기기에서 의도한대로 데이터가 도착하지 않을 수 있음
3. TCP, UDP
- TCP/IP 4계층 모델
: TCP와 UDP는 TCP/IP 4계층 모델을 기준으로 IP 프로토콜의 계층인 인터넷 계층의 상위에서 동작
: 전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP와, 4계층에서 동작하는 애플리케이션(http 등)을 중개하는 역할을 함
TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) | |
서비스 타입 | 연결 지향적 프로토콜 | 데이타그램 지향적 프로토콜 |
신뢰성 | 데이터 전송 표적 기기까지의 전송을 보장 | 표적 기기까지의 전송이 보장되지 않음 |
순서 보장 | 전송하는 패킷들의 순서가 보장됨 | 패킨순서의 보장이 안됨 애플리케이션 레이어에서 관리해야 순서가 보장됨 |
속도 | UDP보다 느림 | TCP보다 빠름 단순하며 효율적인 속도를 가짐 |
특징 | 가상의 회선 설정 ▪ 애플리케이션의 정교한 제어 가능 ▪ receiver가 전송받을 준비가 될 때 까지 segment를 반복 전송 ▪ 실시간 전송에 대한 요구가 큰 애플리케이션 들은 높은 latency를 지양하므로 약간의 데이터 손실 감수 (개발자가 보완을 위한 추가기능 구현) |
▪ 연결 설정에 무관 ▪ UDP는 예비과정 없이 바로 전송 시작 ▪ 설정단계에서 발생하는 지연이 없고, 반응속도가 빠름 ▪ 어떠한 파라미터도 기록하지 않기 때문에 TCP보다 더 많은 클라이언트 수용이 가능 ▪ 어떠한 파라미터도 기록하지 않기 때문에 TCP보다 더 많은 클라이언트 수용이 가능 |
- TCP 3 -way handshake
: 양 끝단의 (end to end) 기기의 신뢰성 있는 데이터 통신을 위해, TCP 방식의 연결을 설정하는 방식
▪ 연결 설정 순서
* 비디오 스트리밍 상황에서는 → TCP? UDP?
* DNS 서버가 TCP 방식에서 동작할 때 생길 수 있는 문제점
4. PORT
- PORT 번호
: 해당 IP 기기를 특정하는 번호
→ 이미 사용중인 포트는 중복사용이 불가능
→ 포트번호는 0~65,535까지 있는데, 그 중 0 ~ 1023번까지는 이미 정해져 있음
Port number range | description | |
Well-known port | 0 ~ 1023 | 시스템 사용 번호 (슈퍼 유저 권한 필요) 사용 권장 X |
Registered port | 1024 ~ 49151 | 특정 프로토콜이나 어플리케이션에서 사용하는 번호 (슈퍼유저 권한 필요 X) |
Dynamic port | 49152 ~ 65535 | 어플리케이션에서 혹은 임시 사용 번호 |
- 자주 사용되는 Well-known port
port no | Protocol name | Transport protocol | description |
80 | HTTP | TCP | 웹 서버 접속 |
443 | HTTPS | 웹 서버 접속 (SSL) | |
110 | POP3 | 메일 읽기 | |
25 | SMTP | 메일 서버간 메일 전송 | |
22 | SSH | 컴퓨터 원격 로그인 | |
53 | DNS | UDP | DNS 질의 |
123 | NTP | TCP | 시간 동기화 |
→ 이미 정해진 포트라도 필요에 따라 자유롭게 사용 가능
→ 잘 알려진 포트는 URI에 명시하지 않지만, 잘 알려지지 않은 포트(:8080 과 같은 임시포트)는 반드시 명시해야함
5. URL, DNS
- URL (Uniform Resource Locator)
: 어떤 자원을 찾기 위한 브라우저에서 사용되는 매커니즘
→ HTML이나 이미지 등의 리소스 위치를 특정하기 위한 서식
▪ 브라0우저 주소창의 URL
→ 서버가 제공되는 환경에 존대하는 파일의 위치를 나타냄
- URI
:
→ ▪
- DNS
:
→ ▪
1. Read, Write, Execute 권한
- 처음 보는 개념이라 이해하기가 힘들었다. 한번봐서는 어려워서 읽고 쉬고 읽고 쉬고 세번쯤 반복했더니 그래도 머리에 들어왔다. 물론 완벽히 알진 못하지만 다음에 또 보면 더 잘 알 수 있을 듯 하다.
2. 인자 : 프로그래밍 언어에서 함수 호출 시 함수에 전달되는 값. 인수나 전달인자라고도 부른다.
함수 값? 호출값?
3. CLI 명령어 더 알아보기
# Database & SQL
# SQL
# 과제 / Learn SQL
↓ 이전 글 ↓
↓ 코트스테이츠 부트캠프 관련 글 한번에 보기 ↓
[코드스테이츠] 05_24_TIL : 관계형 데이터베이스 _ SQL (0) | 2023.05.25 |
---|---|
[코드스테이츠] 05_23_TIL : 네트워크 _ HTTP (0) | 2023.05.23 |
[코드스테이츠] 05_19_TIL : 알고리즘/자료구조 _ Algorithm with Math (순열/조합) (0) | 2023.05.19 |
[코드스테이츠] 05_17_TIL : 알고리즘/자료구조 _ Greedy/Algorithm (1) | 2023.05.17 |
[코드스테이츠] 05_16_TIL : 알고리즘/자료구조 _ Tree, Graph Search Algorithm (1) | 2023.05.16 |