일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 오프라인 설치
- 쿠버네티스 패턴
- 웹 애플리케이션 요청 흐름
- redis 외부설정
- 예외 전가
- Port already in use: 9999
- 도커
- kafkaCLI
- 의존성 패키지 설치
- 웹 애플리케이션 아키텍처
- 자료구조
- ubuntu redis
- apt-rdepends
- 의존성 설치
- 선언적 배포
- docker
- Oracle.DatabaseError
- 포함 관계
- 폐쇄망
- image 압축
- 객체
- redis 명령어
- 예측 범위 내의 요구사항
- REST 성숙도 모델
- redis 설정
- 특정 행
- abstract 제어자
- Exception Handing
- 특정 행 출력
- SQL 내장 함수
- Today
- Total
리꾸므
[네트워크] 웹 애플리케이션 본문
네이티브 애플리케이션
특정 기기에 설치해서 사용하는 애플리케이션을 말한다. Apple IOS, Android OS, Windows 와 같은 특정 실행환경에 종속된다.
- 장점
- 웹 애플리케이션보다 빠르다.
- 애플리케이션이 설치된 기기의 시스템/기기의 리소스에 접근이 용이하다(GPS 기능이나 카메라)
- 인터넷 없이 사용 가능하다.
- 웹애플리케이션에 비해 안전하다.
- 단점
- 웹애플리케이션에 비해 개발비가 더 들어간다.
- 빠른 업데이트가 힘들다.
- 앱스토어에 승인 받기가 힘들고 비용이 발생한다.
웹 애플리케이션
웹 브라우저를 통해 접근이 가능한 애플리케이션, 정적 웹사이트의 한게를 벗어나 다양한 동적 응답을 웹브라우저라는 소프트웨어를 통해 가능하게 한 애플리케이션이다.
- 장점
- 브라우저를 통해 실행되기때문에 설치나 다운로드가 필요 없다.
- 업데이트 등의 유지관리가 쉽다.
- 네이티브 애플리케이션에 비해 만들기가 비교적 간편하다.
- 애플리케이션 스토어 승인이 필요없다.
- 단점
- 인터넷이 없으면 사용이 안된다.
- 네이티브 애플리케이션에 비해 속도가 느리다.
- 애플리케이션 스토어에 관리되지 않기 떄문에 접근성이 떨어진다.
- 질적으로나 보안상 위험에 노출되기가 쉽다.
LAN과 WAN
인터넷 연결은 보통 인터넷 제공업체에서 제공한 인터넷 라우터로 연결되어 있다. 유선이든 무선이든 라우터에 연결이 되어 있지 않으면 인터넷을 사용할 수 없다. 이런 좁은 범위에서 연결된 네트워크를 LAN(Local Area Network)라고 부른다. 이런 수많은 LAN들이 모여 세계의 네트워크를 구성하는 WAN(Wide Area Network)가 구성된다.
인터네트워킹(internetworking)
여러 네트워크를 연결하는 것을 인터네트워킹이라고 한다.
- 네트워크의 일부에서 고장이 나도 영향이 광범위하게 퍼지지 않는다.
- 불필요한 통신이 네트워크 전체로 확산하지 않는다.
- 개별 네트워크를 각각의 방침에 따라 관리가 가능하다.
- 전 세계적으로 인터네트워킹하는 것이 우리가 사용하는 인터넷이다.
프로토콜(protocol)
컴퓨터 사이에서 데이터의 교환방식을 정의하는 규칙체계이다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호합의를 요구한다. 이런 형식을 정의하는 규칙의 집합을 프로토콜이라고 한다.
TCP/IP
인터넷 통신 스위트는 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규악의 모음이다. 이 모음은 다른 컴퓨터나, 다른 운영체제, 다른 회선간의 통신이 가능하게 해준다.
TCP/IP 4계층 모델 | 주요 프로토콜 | 역할 | |
4층 | 응용 계층 | HTTP,DNS,FTP... | 애플리케이션에 맞춰 통신한다. |
3층 | 전송 계층 | TCP,UDP... | IP와 애플리케이션을 중개하여 데이터를 확실하게 전달한다. |
2층 | 인터넷 계층 | IP,ICMP,ARP,RARP | 네트워크 주소를 기반으로 데이터를 전송한다. |
1층 | 네트워크 접근 계층 | Ethernet,wifi... | 컴퓨터를 물리적으로 네트워크에 연결해서 기기 간 전송이 가능하게 한다. |
- 주소(address) : 네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 IP address라고 한다.
- IP주소 : TCP/IP구조에서 컴퓨터를 식별하기위해 사용되는 주소이다. (192.xxx.xxx.xxx)
- IP주소에는 private 주소, public 주소가 있다.
- private IP : LAN 네트워크 내부에서 사용
- public IP : 인터넷에서 사용 된다.
- MAC 주소 : IP address만 가지고는 네트워크상에서 송수신이 가능하지 않다. 각 네트워크 기기는 제조사에서 할당한 고유 시리얼인 MAC주소를 IP주소와 함께 조합해야만 네트워크를 통한 통신이 가능해진다.
- 이더넷에서 네트워크상의 송수신 상대를 특정하기위해 MAC 주소를 사용하고 TCP/IP에서는 IP address를 사용하기 때문이다.
- 같은 LAN에 속한 기기끼리 통신시 우선 상대방의 MAC 주소 파악 과정이 있고 이때 사용하는 것이 ARP(address resolution protocol)이다.
- ARP : MAC 주소를 파악하기 위해 네트워크 전체에 브로드 캐스트를 통해 패킷을 보내고, 해당 IP를 가지고 있는 컴퓨터가 자신의 MAC주소를 Response하게 됨으로써 통신할 수 있게 해주는 프로토콜이다.
- 패킷 : 원본 데이터를 패킷(packet)이라는 작은 단위로 나누고, 여러 회선을 공용해 통신을 주고 받는 방식이다.
- 컴퓨터 네트워크는 여러 상대와 통신이 가능해야하기때문에 회선 교환방식은 컴퓨터 네트워크에서 효율적이지 못한다. 이를 극복하기 위해 패킷교환 방식이 생겼다.
- 하나의 패킷은 헤더와 페이로드로 구성되어 있고, 헤더에는 어떤 데이터의 몇번째 데이터인지의 정보와 보내는 곳이나 최종목적지에 대한 정보 등이 들어있다.
- 주고받을 데이터를 작게 분할하여 전송하여도, 도착한 곳에서 원래대로 복원이 가능하다.
IP 주소 구조
서브넷 마스크(subnet mask)
IPv4 주소에서 네트워크부가 어디까지인지 나타내는 것이 서브넷 마스크이다.
IP 주소: 192.168.1.1
서브넷 마스크: 255.255.255.0
네트워크 주소: 192.168.1.0
브로드캐스트 주소: 192.168.1.255
//8자리의 2진수 묶음을 옥텟이라고 부른다. IPv4주소는 4개의 옥텟으로 이루어저 있다.
//각각 1옥텟, 2옥텟, 3옥텟, 4옥텟이라고 부른다.
//위 서브넷 마스크의 경우 1~3까지 옥텟은 네트워크부로 사용되는 서브넷 마스크이다.
//따라서 4옥텟은 호스트부로 사용하고 있음을 알 수 있다.
IP주소의 할당과 관리
192.168.1.1 -> 컴퓨터1 할당
192.168.1.2 -> 컴퓨터2 할당
192.168.1.3 -> 컴퓨터3 할당
- MAC주소와 달리 IP주소는 처음부터 주어지는 것이 아닌 할당이 되는 것이다.
- 위 예시처럼 호스트부를 변경해가며 IP할당이 이루어진다.
- 위 같은 예라면 호스트부는 8자리로 이루어진 2진수이므로 할당할 수 없는 시작(0)과 끝 숫자(255)를 제외한 번호로 할당이 가능하다.
- 호스트부가 0으로만 이루어진 것은 네트워크 주소로 그 네트워크를 의미한다.
- 호스트부가 1로만 이루어진 것은 브로드캐스트 주소로 ARP와 같은 기능을 사용하기 위해 사용한다.
IP프로토콜의 한계성
- 비연결성
- 패킷을 받을 대상이 없거나 특정 이유로 서비스 불능 상태에 빠져도 데이터를 받을 상대의 상태 파악이 불가능하기 때문에 패킷을 그대로 전송하는 비연결성 문제가 있다.
- 비신뢰성
- 중간에 패킷이 사라지더라도 보내는 기기 측에서는 알 수 있는 방법이 없다.
- 서로 다른 노드를 거쳐서 전송되는 특성상 보내는 기기측에서 의도한 순서대로 데이터가 도착하지 않을 수 있다.
- 위 한계들을 극복하기위해 TCP와 UDP가 사용되고 있다.
- IP 주소 정보
TCP, UDP
TCP와 UDP는 TCP/IP 4계층 모델을 기준으로 IP프로토콜의 게층인 인터넷 계층의 상위에서 동작을 한다. 2계층에서 동작하는 IP와 4계층에서 동작하는 애플리케이션을 중개하는 역할을 한다. TCP와 UDP는 중개하는 역할을 하는 점에서ㅏ 동일하나 다른 특징을 가지고 있다.
Transmission control protocol(TCP) | User datagram protocol(UDP) | |
서비스 타입 | 연결 지향적 프로토콜 | 데이타그램 지향적 프로토콜 |
신뢰성 | 데이터 전송 표적 기기까지의 전송을 보장한다. | 표적 기기까지의 전송이 보장되지 않는다. |
순서 보장 | 전송하는 패킷들이 순서가 보장된다. | 패킷순서 보장이 안된다. 패킷 순서를 보장하고 싶다면, 애플리케이션 레이어에서 관리되어야 한다. |
속도 | UDP와 비교해 느리다. | TCP와 비교해 빠르고, 단순하며 더 효율적인 속도를 가지고 있다. |
- TCP는 통신 신뢰성을 높이는 기능이 구현되어 있다.
- UDP에는 신뢰성을 높이는 기능이 없는 대신 높은 속도와 효율성을 제공한다.
- HTTP의 경우 모든 데이터를 제대로 송수신이 가능해야하는 특성상 TCP를 사용한다.
TCP 3-way handshake
양 끝단의(end to end) 기기의 신뢰성 있는 데이터 통신을 위해 TCP 연결을 설정하는 방식이다.
- SYN : 처음으로, sender는 receiver와 연결 설정을 위해, segment를 랜덤으로 설정된 SYN(Synchronsize Sequence Number)와 함께 보낸다. 이 요청은 receiver에게 sender가 통신을 시작하고 싶다고 알린다.
- SYN/ASK : receiver는 받은 요청을 바탕으로 SYN/ACK 신호 세트를 응답한다. Acknowledgement(ACK)응답으로 보내는 segment가 유효한 SYN 요청을 받았는지를 의미한다.
- ACK : sender는 받은 ACK를 receiver에게 전송하면서, 신뢰성 있는 연결이 설정되었다는 사실을 sender와 receiver 양쪽에서 알 수 있고, 실제 데이터 전송이 시작되게 된다.
UDP
사용 이유
- 애플리케이션의 정교한 제어가 가능하다 : TCP의 경우 receiver가 전송받을 준비가 될때까지 세그먼트를 반복적으로 재전송한다. 실시간 전송에 대한 요구가 큰 애플리케이션들은 높은 latency를 지양하므로 약간의 데이터 손실을 감수한다. 대신 개발자 스스로가 이를 보완하기 위해 애플리케이션에 추가 기능을 구현할 수 있다.
- 연결설정에 무관하다 : TCP 3-way handshake가 없는 UDP는 예비과정 없이 바로 전송을 시작한다. 설정단계에서 발생하는 지연이 없는만큼, 반응속도가 빠르다. 또한 TCP가 신뢰성을 위해 많은 파라미터와 정보전달이 필요함과 비교해 UDP는 연결설정 관리를 하지 않기 때문에 어떠한 파라미터도 기록하지 않는다. 이때문에 서버에서도 TCP와 비교해 더많은 클라이언트 수용이 가능하다.
PORT
IP프로토콜만 가지고는 한 IP에서 여러 애플리케이션이 동작할 때 특정 애플리케이션을 특정해 통신할 수 없다. 포트번호는 대상 IP 기기의 특정 애플리케이션을 특정하는 번호이다.
connect to web page -ip:xxx.xxx.xxx.xxx, port:443-> single instance server1-web server(port no:443)
sending email - ip:xxx.xxx.xxx.xxx, port:25-> single instance server1-mail server(port no:25)
//
한 서버 인스턴스에서 웹서버와 메일서버 두개를 동시 실행중일 때
IP주소만으로는 어느 서버로 요청을 보내는지 알 수 없다.
포트 번호를 사용해 receiver를 특정해 어느 서버로 보내는 요청인지 특정할 수 있다.
- 포트 번호는 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 | TCP | 웹서버 접속(SSL) |
110 | POP3 | TCP | 메일 읽기 |
25 | SMTP | TCP | 메일서버간 메일 전송 |
22 | SSH | TCP | 컴퓨터 원격 로그인 |
53 | DNS | UDP | DNS 질의 |
123 | NTP | TCP | 시간 동기화 |
'발걸음 > 일지' 카테고리의 다른 글
[네트워크] WEB (0) | 2022.11.29 |
---|---|
[네트워크] 웹 애플리케이션(feat. URL, DNS) (0) | 2022.11.29 |
[잡답] 알고리즘 (0) | 2022.11.28 |
[알고리즘] 구현 (0) | 2022.11.28 |
[알고리즘] Greedy (0) | 2022.11.25 |