❯ 애플리케이션의 종류
- 네이티브 애플리케이션 : 특정 기기에 설치해서 사용할 수 있는 애플리케이션. iOS, 안드로이드 등 특정 실행 환경에 종속되는 애플리케이션을 말한다.
- 웹 애플리케이션 : 웹 브라우저를 통해 접근 가능한 애플리케이션으로 별도의 설치가 필요없다.
❯ 네트워크를 만드는 기술
현재 진행중인 과정은 '백엔드 웹개발'과정이다. 웹 애플리케이션 개발에 필요한 기초적인 CS 지식에 대해 학습하고자 한다.
1) TCP/IP 기본
웹 애플리케이션이 작동하는 기반인 네트워크에 대해 먼저 알아보면, 좁은 범위에서 연결된 네트워크를 LAN(Local Area Network)이라고 하며 수많은 LAN이 모여 WAN(Wide Area Network)를 구성한다.
인터넷 프로토콜 스위트(Internet Protocol Suite)란, 인터넷에서 컴퓨터들이 정보를 주고받는데 쓰이는 프로토콜(규약)의 모음을 말한다. 다른 컴퓨터나 운영체제, 다른 회선간의 통신이 가능하게 해준다. (규약/규격을 따르지 않으면 통신이 원활하지 않을 수 있다!)
인터넷이 처음 시작된 시기에 정의되어 현재까지 표준으로 사용하고 있는 TCP와 IP를 주로 사용한다.
- TCP(Transmission Control Protocol)
- IP(Internet Protocol)
TCP/IP 4계층 모델은 아래와 같다.
2) IP
IP란, 네트워크에 연결된 특정 PC 주소를 나타내는 체계를 말한다. 컴퓨터, 서버, 인터넷 라우터 등 네트워크 각 장비에 IP 주소가 할당된다.
IP 주소에는 private 주소와 public 주소가 있으며 LAN 내부에서 사용되는것이 Private IP이고 인터넷에서 사용되는것이 Public IP이다.
IPv4, IPv6이 주로 사용된다.
MAC 주소
IP 주소만 가지고는 네트워크상에서 송수신이 가능하지 않다. 각각의 네트워크 기기는 제조사에서 할당된 고유 시리얼인 MAC 주소를 IP 주소와 조합해야만 네트워크를 통한 통신이 가능하다.(이더넷에서는 MAC 주소를 사용하고, TCP/IP에서는 IP address를 사용)
같은 LAN에 속한 기기끼리 통신할때는 MAC 주소를 먼저 파악하게되는데, 이 때 ARP(Address Resolution Protocol)을 사용한다.
MAC 주소 파악을 위해 네트워크 전체 브로드캐스트를 통해 패킷을 보내고, 해당 IP 가진 컴퓨터가 자신의 MAC 주소를 응답한다.
IPv4 주소 구조
OOO.OOO.OOO.OOO의 형식으로 되어있으며 크게 네트워크부와 호스트부로 구분할 수 있다.
서브넷 마스크란 IP 주소 중 네트워크부(어떤 네트워크인지 알 수 있는 정보)가 어디까지인지 나타낸다.
네트워크 접속 기기가 많아지면 IP 주소를 별도로 관리해야한다. 이 때 사용되는 소프트웨어로 IPAM이 있다.
3) TCP/UDP
TCP와 UDP는 TCP/IP 4계층 모델 기준으로 3층인 전송 계층에서 동작한다.
2계층인 IP와 4계층의 애플리케이션을 중개하는 역할을 한다.
- TCP(Transmission control protocol): 연결 지향적 프로토콜. 표적 기기까지의 전송을 보장함. 전송하는 패킷 순서가 보장되며 UDP와 비교해 느리다.
- UDP(User datagram protocol): 데이터 지향적 프로토콜. 표적 기기까지의 전송을 보장하지 않음. 패킷 순서 보장이 안되나 TCP와 비교해 빠르며 단순하고 효율적인 속도를 가진다.
데이터 신뢰가 중요한 애플리케이션은 TCP로, 빠른 속도나 실시간 통신이 중요한 애플리케이션은 UDP로 사용할 수 있다.
(HTTP는 TCP를 사용)
TCP 3-way handshake
sender와 receiver가 서로 유효한 요청인지 확인 후 데이터 전송이 시작된다. (신뢰성 있는 데이터 통신이 가능함)
4) PORT
- Port : 대상 IP 기기의 특정 애플리케이션을 특정하는 번호를 말한다.
포트번호는 0~65,535까지 사용가능하며 0~1,023까지는 규약에 따라 이미 정해져있다. - 자주 사용되는 port: 80(HTTP), 443(HTTPS), 110(POP3), 24(SMTP), 22(SSH), 53(DNS), 123(NTP)
5) URL, DNS
- URL(Uniform Resource Locator): 서버가 제공되는 환경에 존재하는 파일의 위치를 나타냄. 웹페이지, 이미지, 동영상 등 파일이 위치한 정보를 나타낸다. scheme, hosts, url-path로 구분된다.
- URI(Uniform Resource Identifier): URL 기본요소에 query, bookmark를 포함한 개념이다. URI는 URL을 포함한 상위개념
도메인 이름
웹사이트 주소를 IP로 사용하기에는 사용성이 떨어진다. 따라서 호스트 이름과 도메인 이름으로 바꾸어 기억하기 쉽도록 사용한다.
- DNS(Domain Name System): 호스트의 도메인 이름을 IP 주소로 변환하거나 반대 경우를 수행할 수 있도록 개발된 데이터베이스 시스템. DNS 관련 자료
❯ 웹을 구성하는 기술
Web Application Architecture
인터넷을 통해 웹 브라우저에서 이용할 수 있는 응용프로그램을 위한 구조를 의미한다.
User가 브라우저를 통해 무언가를 요청하면, 애플리케이션의 다양한 요소가 상호작용하고 그 응답을 사용자에게 전달한다.
웹 애플리케이션의 3단계 계층 구조
웹 애플리케이션의 구현방식은 세가지가 있다.
- Single Page Application : 서버로부터 완전한 새로운 페이지 불러오지 않고 일부만 동적으로 다시 작성하는것. (AJAX 사용)
- Microservice Architecture : 작은 특정 한가지 기능에 집중한 웹 애플리케이션
- Serverless Architecture : 서버나 기타 기반은 제3자 서비스 제공자에게 위탁하는 방식
❯ HTTP(HyperText Transfer Protocol)
Application Layer 프로토콜이다. 웹브라우저상에서 클라이언트와 서버간의 통신을 담당하는 프로토콜을 말한다.
HTTP Message 를 통해 소통이 이루어지며 Request와 Response로 구분된다.
- Request : 클라이언트가 서버에 요청하는것. start line, headers, body로 구분된다.
- Response : 클라이언트 요청에 따른 결과를 의미한다. status line, headers, body로 구분된다.
HTTP의 특징은 무상태성(Stateless)이다. 클라이언트와 서버가 통신을 주고받을 때 HTTP가 클라이언트나 서버의 상태를 확인하지는 않는다.
참고자료
오늘은 부트캠프를 진행하면서 가장 학습 분량이 많았던 날이었다. 하루가 너무 짧게 느껴질정도로 읽고 학습해야할 내용이 많았다.
블로그에 학습한 내용을 다 적지는 못했지만, 오늘 필기노트를 총 7페이지를 채운걸 보면 확실히 내용이 많긴 많았나보다.
게다가 내용도 너무 생소해서 하나씩 찾아가면서 보니까 시간이 더 오래걸렸다.
다른 학습자분들은 어떻게 이걸 다 했을까 싶어서 대단하게 느껴지기도 했다.ㅎㅎ
그나마 내일부터는 주말이라서 배운 내용을 한번 더 복습할 시간이 생겨서 다행이다.
이미지 출처: 코드스테이츠
'부트캠프 개발일기 > Network' 카테고리의 다른 글
30일차: REST API (0) | 2023.03.27 |
---|