본문 바로가기

TIL

[네트워크] 웹 애플리케이션 작동원리

728x90
HTTP란 : 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약

학습 목표

  • 웹 애플리케이션 네이티브 애플리케이션의의 기본 개념에 대해 이해할 수 있다.

네이티브 애플리케이션이란 특정 기기에 설치해서 사용하는 애플리케이션을 말하며 Apple iOs, AndroidOs, Windows와 같은 특정 실행환경에 종속되어 사용을 해야 한다.

장점

웹 애플리케이션보다 빠르고 , 애플리케이션이 설치된 기기의 시스템/ 기기의 리소스에 접근이 용이하다(gps, 카메라 등) 인터넷 없이 사용이 가능하고 웹 애플리케이션에 비해 안전하다

단점

웹애플리케이션에 비해 개발비가 더 들어간다 (예로 들면 안드로이드와 아이폰 간의 멀티 플랫폼을 개발해야 하기 때문), 빠른 업데이트가 힘들고 앱스토어에 승인받기가 힘들고 비용이 발생한다.

 

웹 애플리케이션은 웹브라우저를 통해 접근이 가능한 애플리케이션을 말하며 정적인 웹사이트의 한계를 벗어나 다양한 동적인 응답을 웹브라우저라는 소프트웨어를 통해 가능하게 한다

장점

브라우저를 통해 실행되기 때문에 설치나 다운로드가 필요 없고, 업데이트 등의 유지관리가 쉽다. 네이티브 애플리케이션에 비해 만들기가 비교적 간단하고 앱스토어의 승인이 필요 없다.

 단점

인터넷이 없으면 사용이 안되고, 네이티브 애플리케이션에 비해 속도가 느리다 또한 접근성이 떨어지고 질적으로나 보안상 위험에 노출되기가 쉽다.

 

  • 네트워크를 만드는 기술을 이해할 수 있다.
    • TCP/IP의 기본에 대해 이해할 수 있다. 

LAN - 좁은 범위에서 연결된 네트워크

WAN -LAN들이 모여서 연결된 네트워크 (큰 범위)

인터네트워킹(internetworking) - 우리가 매일 일상적으로 사용하는 인터넷은 네트워크끼리 연결하는 네트워크라는 의미여서 인터네트워크에서 따온 것

네트워크를 확장하는 두 가지 방법

-한 네트워크를 확장하는 법 (네트워크 자체를 키운다)

-네트워크끼리 연결하는 방법(인터네트워킹) : 네트워크의 일부에서 고장이 나도 영향이 광범위하게 퍼지지 않는다는 점과 , 불필요한 통신이 네트워크 전체로 확산하지 않는다는 점, 개별 네트워크를 각각의 방침에 따라 관리가 가능하다는 장점이 있음

 

프로토콜

인터넷에 연결되어 있는 멀리 떨어진 컴퓨터끼리 소통하는 약속

인터넷 통신 스위트는 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신 규약의 모음이다 이 모음은 다른 컴퓨터나 다른 운영체제, 다른 회선 간의 통신이 가능하게 해 준다

 

IP주소

IP 주소는 TCP/IP구조에서 컴퓨터를 식별하기 위해 사용되는 주소이다. 컴퓨터나 휴대전화, 서버, 인터넷 라우터 등 네트워크 장비에 각각의 IP주소가 할당하게 된다.

IP주소에는 private주소와 public주소가 있고 LAN 네트워크 내부에서 사용되는 것이 Private IP주소이고 Public IP주소는 인터넷에서 사용이 된다.

MAC 주소

IP address만 가지고 네트워크 상에서 송수신이 가능하진 않다. 각 네트워크 기기는 처음부터 제조사에서 할당하는 고유 시리얼인 MAC 주소를 IP주소와 조합해야만 네트워크를 통한 통신이 가능하다.

이더넷에서는 네트워크 상의 송수신 상대를 특정하고자 MAC 주소를 사용하고, TCP/IP에서는 IP address를 사용하기 때문이다.

같은 LAN에 속한 기기끼리 통신할 땐 상대방의 MAC 주소를 파악하는 과정이 있게 된다.

이때 사용하는 것이 ARP(address resolution protocol)이다. MAC 주소를 파악하기 위해 네트워크 전체에 브로드캐스트를 통해 패킷을 보내고 해당 IP를 가지고 있는 컴퓨터가 자신의 MAC주소를 Response 하게 됨으로써 통신할 수 있게 해주는 프로토콜이다.

패킷

기기끼리 통신에는 회선 교환 방식과 패킷 교환 방식이 있다

회선 교환(Circuit Switching)

 

패킷 교환(Packet Switching)

 

회선을 설명하여 데이터 교환을 하는 회선교환 방식은 주로 음성전화 시스템에 사용된다. 전화는 일대일로 데이터를 교환하고, 전화 간 통화 중에는 다른 상대와 전화통화가 불가능하다.

컴퓨터 네트워크는 여러 상대와 통신이 가능하다 따라서 회성 교환 방식은 컴퓨터 네트워크에 효율적이지 않고 효율적으로 해결하고자 패킷 교환 방식이 생겨났음.

 

패킷 교환은 원본 데이터를 패킷이라 하는 작은 단위로 나누고 여러 회선을 공용해 통신을 주고받는다

하나의 패킷은 헤더와 페이로드로 구성되어있고, 헤더에는 어떤 데이터의 몇 번째 데이터인지 정보와 보내는 곳이나 최종 목적지에 대한 정보가 들어있다 데이터를 작게 분할해서 전송하더라도 도착한 곳에서는 원래대로 복원이 가능하다. 

  • IP의 기본개념에 대해 이해할 수 있다.

서브넷 마스크(Subnet mask)

IPv4 주소는 OOO.OOO.OOO.OOO의 형식으로 되어있다. 10진수로 표기되어있지만 마침표는 구분된 4개의 8비트 필드(8자리 2진수 4개)로 되어있습니다.

각 8비트 필드는 IPv4 주소에서 1바이트를 나타낸다 IPv4 주소의 바이트를 나타내는 이러한 형식을 점으로 구분된 십진수 형식이라고도 한다

IP주소는 네트워크부와 호스트부로 나뉜다 네트워크부는 어떤 네트워크인지 알 수 있는 정보이고, 호스트부는 그 네트워크 안의 특정 컴퓨터를 지칭하는 정보이다.

 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 옥텟은 호스트부로 사용하고 있음을 알 수 있다.

MAC주소와달리 IP주소는 처음부터 주어지는것이 아니라 할당되는것이며 위 그림처럼 호스트부를 변경해 가면서 IP할당이 이루어진다

 호스트부는 8자리로 이루어진 2진수이므로 할당할 수 없는 시작(0)과 끝 숫자(255)를 제외한 번호로 할당이 가능하다

호스트부가 0으로만 이루어진 것을 네트워크 주소로 그 네트워크를 의미한다

호스트부가 1로만 이루어진 것은 브로드캐스트 주소로 ARP와 같은 기능을 사용하기 위해 사용한다

따라서 시작(0)과 끝(255)을 제외한 254개의 주소만 할당 가능한 IP주소이다

IP 프로토콜의 한계

-비연결성

-비신뢰성

패킷을 받을 대상이 없거나 특정한 이유로 서비스 불능 상태에 빠져도 데이터를 받을 상대의 상태 파악이 불가능하기 때문에 피켓을 그대로 전송하는 비연결성 문제가 있다

중간에 패킷이 사라지더라도 보내는 기기 측에서 알 수 있는 방법이 없고 또한 서로 다른 노드를 거쳐서 전송되는 특성상 보내는 기기 측에서 의도한 순서대로 데이터가 도착하지 않을 수 있다. 이러한 한계를 극복하기 위해 TCP/UDP가 사용되고 있다.

  • TCP와 UDP 개념과 그 차이를 이해할 수 있다.

TCP와 UDP는 TCP/IP 4계층 모델을 기준으로 IP프로토콜의 계층인 인터넷 계층의 상위에서 동작을 한다 전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP와 4계층에서 동작하는 애플리케이션(http 등)을 중개하는 역할을 한다

TCP와 UDP는 중개하는 역할을 하는 점에서 동일하지만 각각이 다른 아래와 같은 특징이 있다.

즉 TCP는 통신 신뢰성이 높고, 순서가 보장되지만  속도가 UDP에 비해 느리고 UDP는 그 반대이다.

신뢰성을  필요로 하는 애플리케이션은 TCP로,  빠른 속도나 실시간 통신이 중요한 애플리케이션의 경우 UDP로 구분해 서사 용한다

웹 애플리케이션에서 많이 사용하는 HTTP의 경우 모든 데이터를 제대로 송수신 가능해야 하는 특성상 TCP를 사용한다.

TCP 3-way handshake

TCP 3-way handshake는 양 끝단의 (End to End) 기기의 신뢰성 있는 데이터 통신을 위해, TCP방식이 연결을 설정하는 방식이다. 마치 전화를 거는 것 같이 연결을 설정하는 이 방식은 3단계를 통해 연결 설정을 한다.

  1. SYN : Sender는 receiver와 연결 설정을 위해 segment를 랜덤으로 설정된 SYN(Synchronize Sequence Number)와 함께 보낸다. 이 요청은 receiver에게 sender가 통신을 시작하고싶다고 알리는것
  2. SYN/ACK : receiver는 받은 요청을 바탕으로 SYN/ACK신호 세트를 응답한다. Acknowledgement(ACK) 응답으로 보내는 segment가 유효한 SYN요청을 받았는지를 의미한다.
  3. ACK : 마지막 단계에서 sender는 받은 ACK를 receiver에게 전송을 하면서, 신뢰성 있는 연결이 성립되었다는 사실을 sender와 receiver 양쪽에서 알 수 있고 ,실제 데이터 전송이 시작되게 한다. 

 

UDP를 사용하는 이유

  1. 애플리케이션의 정교한 제어가 가능한다 TCP의경우 receiver가 전송 받을 준비가 될 때까지 세그먼트를 반복적으로 재전송한다. 실시간 전송에 대한 요구가 큰 애플리케이션들은 높은 latency를 지양하므로 약간의 데이터 손실을 감수해야한다. 대신 개발자 스스로가 이를 보완하기위해 애플리케이션에 추가기능을 구현할 수 있다.
  2. 연결설정에 무관하다 : TCP-3way handshake가 없는 UDP는 예비과정 없이 바로 전송을 시작한다. 설정단계에서 발생하는 지연이 없는 만큼, 반응속도가 빠르다, TCP가 신뢰성을 위해 많은 파라미터와 정보전달이 필요함과 비교해 UDP는 연결설정관리를 하지 않기 때문에 어떠한 파라미터도 기록하지 않다 이때문에 서버에서도 TCP와 비교에 더 많은 클라이언트를 수용이 가능하다.

 

 

  • PORT의 개념과 그 차이를 이해할 수 있다.

TCP와 UDP 둘 다 포트번호를 사용한다 IP 프로토콜만 가지고는 한 IP에서 여러 애플리케이션이 동작할 때 특정 애플리케이션을 특정해 통신할 수 없다 포트번호는 대상 IP 기기의 특정 애플리케이션을 특정하는 번호이다.

IP는 목적지 서버를 찾는 거

 port는 같은 IP내에서 프로세스 구분

예를 들면 IP가 아파트이면 port는 몇 동 몇 호, 한 아파트 안에서 사람들이 사는 집을 구분해준다 하나의 서버에 하나의 피씨 

한 서버 인스턴스에서 웹서버와 메일서버 두 개를 동시에 실행 중이면 IP주소만으로는 어느 서버로 요청을 보내는지 알 수 없다 이러한 경우를 위해, 포트 번호를 사용해 receiver를 특정해 어느 서버로 보내는 요청인지 특정할 수 있다.

 

port는 0~65,535까지 할당 가능

0~1023 : 잘 알려진 포트로 사용하지 않는 것이 좋음

FTP - 20, 21 // TELNET -23 

 

  • URL, DNS의 기본에 대해 이해할 수 있다.

URL(Uniform Resource Locator) 은 웹에 게시된 어떤 자원을 찾기 위한 브라우저에서 사용되는 메커니즘이다. 인터넷상에서 HTML이나 이미지 등 리소스의 위치를 특정하기 위해 서식으로 설정됐다

브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다. CLI환경에서 폴더와 파일의 위치를 찾아 이동하듯이 슬래시(/)를 이용해서 서버의 폴더에 진입하거나 파일을 요청할 수 있다 

URL은 scheme, host, url-path로 구분한다 가장 먼저 작성하는 scheme은 통신방식 (프로토콜)을 결정한다 일반적인 웹 브라우저에서는 http(s)를 사용한다 hosts는 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다 url-path는 웹서버에서 지정한 루트 디렉터리로부터 시작하여 웹페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다.

URI는 URL의 기본 요소 + query, bookmark를 포함한다 query는  웹서버에 보내는 추가적인 질문이다 위로 예를 들면? q는 질문할 창이라 생각하고 =roro 검색 결과를 도출한다.

브라우저의 검색창을 클릭하면 나타나는 주소가 URI이다 URI는 URL을 포함한 상위 개념이다

도메인 네임 시스템(Domain Name System) : IP가 변경될 수 있는데 중간에 전화번호부 같은 서버를 제공해줌 그래서 도메인 명을 등록하고 IP주소를 바꿀 수 있음. DNS 서버에 도메인을 사서 등록할 수 있음, 예를 들어 도메인명은 네이버이고 ip가 200.200.200.2일 경우 도메인을 입력할 경우 DNS 서버에서 ip주소인 200.200.200.2를 반환시켜줌

도메인의 두 종류

gTLD - generic Top Level Domain 

전 세계에서 등록이 가능한. com ,. net,. org ,. gov,. edu,. int,. mil 일곱 가지로 시작하여 여러 개가 더 추가됐다

ccTLD - country code Top Level Domain

. kr,. us,. jp 등 200개 이상이 있고 각국 네트워크 정보센터에서 위임받아 관리하며. kr의 경우 한국인터넷진흥원이 registry로 그리고 registrar는 가비아, 후이즈 등이 있다.

도메인 주소는 오른쪽부터 왼쪽으로 최상위 도메인과 여러 개의 도메인으로 구성되어있다.

최상위 도메인은. com , kr , net 등 도메인의 가장 오른쪽에 위치하는 도메인을 말하며 kr, us와 같은 국가 코드를 사용하는 도메인은 co, ac와 같은 2단계 도메인과 함께 사용되기도 한다

서브도메인은 일반적으로 www, m와 같은 제일 왼쪽에 위치한 도메인들이 해당된다, 호스트 이름으로 불리기도 하는 서브도메인은 웹사이트의 특정 부분을 나눠서 보여줘야 하는 경우 사용한다. m > 모바일 , www> 기본 , store > 스토어 등 도메인에 따라 사이트의 구성이 달라진다

도메인을 관리하는 도메인 서버(존)

대표적으로 모든 도메인을 관리하는 루트 네임 서버, TLD를 관리하는 네임 서버, 권한 있는 네임서버로 구성된다.

이때 도메인 이름 서버는 하나의 서버로 구성되지 않고 안정성을 위해 최소한 두 개 이상의 서버가 하나의 도메인 네임을 담당한다 여러 개의 서버를 구성하면 하나의 서버로 운영될 경우 생길 수 있는 과부하 및 서비스 거부 공격에 대해 효율적으로 대응할 수 있다

루트 도메인 네임 서버는 각 최상위 도메인 네임 서버들의 주소를 알고 있으며 최상위 도메인 네임 서버는 권한 있는 네임 서버의 주소를 알고 있다. 권한 있는 네임 서버는 `example.com` 등의 도메인 IP 주소 및 도메인 정보를 관리하는 권한을 가진 서버이다.

  • URI와 URL의 차이점과 웹 브라우저 요청 흐름을 이해 할 수있다.

통합 자원 식별자 ( Uniform Resource Identifier , URI )는 인터넷에 있는 자원을 나타내는 유일한 주소이다. 

URI는 로케이터(locator),이름(name)또는 둘다 추가로 분류될 수 있다.

 

사람을 식별할 때 주민번호로 식별하는것처럼 생각하면됨

URL - Locator : 리소스가 있는 위치를 지정

URN - Name : 리소스에 이름을 부여

위치는 변할 수 있지만 이름은 변하지 않는다.

URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음

URL은 URI안에 포함되어있는 상태이다

 

 

블로깅 주제:TCP, UDP


  • 위 에서 학습한 내용을 토대로: 비디오 스트리밍 상황에 주로 사용하는 방식은 TCP 방식일까요 아니면 UDP가 되어야 할까요?
  • 미 국방부는 어떠한 점에 착안하여 TCP/IP 가 극심한 전시중 에도 신뢰성을 잃지 않는다고 판단 하였을까요?
  • DNS 서버가 TCP방식에서 동작한다면 어떠한 문제가 발생할 수 있을까요?

블로깅 주제 : PORT

  • 같은 웹 브라우저를 동시에 두개 켜 놓고 같은 사이트에 접속을 해도 문제 없이 통신이 가능합니다. 이러한 경우. 어떠한 방식으로 원활히 통신이 가능할 수 있을까요?
 

 

 

 

728x90

'TIL' 카테고리의 다른 글

[네트워크][HTTP]  (0) 2022.10.03
[네트워크][WEB]  (1) 2022.10.01
[자료구조]재귀(Recursion)  (0) 2022.09.20
[Spring]JUnit5  (0) 2022.09.19
좋은 객체 지향 설계의 5가지 원칙(SOLID)  (0) 2022.09.17