본문 바로가기
IT지식/네트워크

[네트워크] 인터넷

by five-sun 2022. 11. 30.
728x90

출처 : https://velog.io/@geeneve/2021-백엔드-개발자-로드맵

 

2021 백엔드 개발자 로드맵

백엔드 개발자 로드맵

velog.io

TCP/IP란?

TCP/IP는 컴퓨터와 컴퓨터간의 지역네트워크(LAN) 광역네트워크(WAN)에서 원할한 통신을 가능하도록 하기위한 통신규약.

 

IP - 네트워크 상에서 컴퓨터는 고유한 주소가 있다. 컴퓨터의 주소는 인터넷에 접속할때 컴퓨터 각각에 부여받는다. 집 주소나 전화 번호 처럼 말이죠, 이 주소는 총 4바이트로 이루어져있다.

 

TCP - 클라이언트와 서버간에 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜이다. 그리고 TCP는 근거리 통신망(LAN), 원거리 통신망(WAN), 인트라넷, 인터넷 등 컴퓨터에서 실행되는 프로그램 간에 일련의 데이터를 안정적으로 순서대로 에러없이 데이터를 교환할 수 있게한다.

 

네트워크란?

인터넷은 웹의 핵심적인 기술이다. 인터넷의 가장 기본적인 것은, 컴퓨터들이 서로 통신 가능한 거대한 네트워크라는 것입니다.

단순한 네트워크 - 간단하게 두개의 컴퓨터가 통신이 필요할때 저희의 컴퓨터와 다른 사람의 컴퓨터 물리적(케이블 선) 또는 무선(WiFi, Bluetooth)으로 연결이 되어야한다. 이러한 방식으로 여러대의 컴퓨터를 연결을 할수는있다.

 

연결이 많아진다면 관리하기도 힘들뿐더러  가독성도 떨어지게 된다.

그래서 이 문제를 해결하기 위해 라우터라는 게 나왔다. 라우터도 컴퓨터이기 때문에 라우터끼리 연결해서 네트워크를 확장할 수 있다.

 

아주 먼곳에 있는 지역과는 케이블 연결이 불가능하지만 이미 전화 기반 시설은 세계 어느 곳과도 연결이 되어 있으므로 네트워크는 구성이 되어 있던 것이다. 우리의 네트워크를 전화 시설과 연결하기 위해 모뎀이라는 특별한 장비가 필요하다. 모뎀은 우리 네트워크 정보를 전화 시설에서 처리할 수 있는 정보로 바꾸면 그 반대의 경우도 마찬가지이다.

이젠 우리의 네트워크는 전화망에 연결이되어 누가 어디에있든 데이터를 주고 받을 수 있다. 하지만 그 데이터를 주고 받기 위헤서는 네트워크를 인터넷 서비스 제공업체 ISP에 연결해야 한다. ISP는 모두 함께 연결되는 몇몇 특수한 라우터를 관리하고 다른 ISP의 라우터에도 액세스를 할 수 있는 회사이다. 예를들어 한국에서는 LG U+, KT, SKT등이 있다.
따라서 우리의 네트워크의 메시지는 ISP 네트워크의 네트워크를 통해 대상 네트워크로 전달한다. 인터넷은 이러한 전체 네트워크 인프라로 구성된다. 그냥 ISP는 중간에서 데이터를 전달을 해 주는 역할을 한다.

 

HTTP란?

HyperText Transfer Protocol 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고 받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발하고 서로 정보를 교환할 수 있게 되었다.

 

HTTP 동작 - 사용자가 브라우저를 통해서 어떤 서비스를 url을 통하거나 다른 것을 통해서 요청을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답하는 형태로 동작한다.

 

HTML 문서만이 HTTP 통신을 위한 유일한 정보 문서는 아니다. JSON 데이터 및 XML과 같은 형태의 정보도 주고 받을 수 있고 보통은 클라이언트가 어떤 정보를 HTML 형태로 받고 싶은지 JSON 형태로 받고 싶은지 명시하는 경우가 많다.

 

HTTP 특징 - HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 되고 TCP/IP를 이용하는 응용 프로토콜이다. HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이며 이러한 단점을 해결하기 위해 Cookie와 Session이 등장하였다. HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.

 

클라이언트의 요청을 서버에서 응답하는 과정에서 클라이언트와 서버 간의 교류가 HTTP라는 규약을 이용하여 발생하게 된다.

 

Request(요청)- 클라이언트가 서버에게 연락하는 것

  • Get : 자료를 요쳥할 때 사용
  • POST : 자료의 생성을 요청할 때 사용
  • PUT : 자료의 수정을 요청할 때 사용
  • DELETE : 자료의 삭제를 요청할 때 사용

 

Request HTTP 메시지 예시 :

첫줄은 시작줄로 메서드 구조 버전으로 구성되었다.

GET/ 사이트 주소/ HTTP 버전

 

두번째 줄부터는 헤더이며 요청에 대한 정보를 담고 있다. 헤더의 종류는 매우 다양하다.

 

본문은 요청을 할 때 함께 보낼 데이터를 담는 부분이다.

 

Response(응답) - 서버가 요청에 대한 답변을 클라이언트에게 보내는 것

Status Code(상태 코드) : 굉장히 많은 종류가 있다. 크게 다섯 부류로 나눌 수 있다.

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

Response HTTP 메시지 예시 :

첫줄은 버전 / 상태코드 / 상태메시지로 구성되어 있다.

 

두번째 줄부터는 헤더로 응답에 대한 정보를 담고 있다.

 

헤더 이후부터는 요청한 데이터를 담아서 보내기 때문에 응답 메시지에 HTML이 담겨 있고 그것을 받아 브라우저가 화면에 렌더링한다.

 

브라우저의 작동 원리?

브라우저의 주요 기능 :

브라우저의 주요 기능은 사용자가 선택한 자원을 서버에 요청하고 브라우저에 표시하는 것이다. 자원은 보통 HTML문서지만 PDF나 이미지 도는 다른 형태일 수도 있다. 자원의 주소는 URI(Uniform Resource Identifier)에 의해 정해진다.

 

브라우저는 HTML과 CSS 명세에 따라 HTML 파일을 해석해서 표시하는데 이 명세는 웹 표준화 기구인 W3C(World Wide Web Consortium)에서 정한다. 과거에는 일부만 이 명세에 따라 구현하고 독자적인 방법으로 확장함으로써 웹 제작자가 심각한 호환성 문제를 겪었지만 최근에는 대부분의 브라우저가 표준 명세를 따른다.

 

브라우저의 사용자 인터페이스는 다음과 같은 요소들이 일반적이다.

  • URI를 입력할 수 있는 주소 표시 줄
  • 이번 버튼과 다음 버튼
  • 북마크
  • 새로고침 버튼과 로드를 중단할 수 있는 정지 버튼
  • 홈 버튼

HTML5 명세는 주소 표시줄, 상태 표시줄, 도구 모음과 같은 일반적인 요소를 제외하고 필수 UI를 정하지 않았다.

 

브라우저의 주요 구성 요소는 다음과 같다.

사용자 인터페이스 : 주소 표시줄, 이번/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 부분.

브라우저 엔진 : 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어

렌더링 엔진 : 요청한 콘텐츠 표시. 요청 HTML을 HTML과 CSS를 파싱하여 화면에 표시

통신 : HTTP 요청과 같은 네트워크 호출에 사용

UI 백엔드 : 콤보 박스와 창 같은 기본적인 장치를 그림.

자바 스크립트 해석기 : 자바 스크립트 코드를 해석하고 실행

자료 저장소 :  자료를 저장하는 계층, 쿠키를 저장하는 것과 같이 모든 종류의 자원을 하드디스크에 저장할 필요가 있다.

 

렌더링 엔진

동작 과정 : 통신으로부터 요청한 문서의 내용을 얻는 것으로 시작해 문서의 내용은 보통 8KB 단위로 전송된다.

DOM 트리 구축을 위한 HTML 파싱 -> 렌더 트리 구축 -> 렌더 트리 배치 -> 렌더 트리 그리기

사파리와 크롬의 렌더링 엔지 '웹킷'의 동작 예

DNS란?

도메인 네임 시스템(Domain Name System, DNS)는 호스트 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 개발되었다.

 

DNS의 작동원리는 다음과 같다.

해당 이미지의 내용을 요약하면 다음과 같다.

웹 브라우저에 naver.com을 입력하면 Local DNS 에 먼저 해당 Domain에 대한 IP주소를 질의하고 없으면 다른 DNS name 서버 정보를 받는다.

Root DNS서버를 받아서 다시 질의, Root DNS 서버로 부터 com 도메인을 관리하는 TLD(Top-Level Domain) 이름 서버 정보를 전달 받고 TLD에서 naver.com을 관리하는 DNS 정보를 전달해준다.

해당 도메인을 관리하는 서버에 호스트네임에 대한 IP 주소를 질의하고 Local DNS 서버에게 정보를 응답해준다.

Local DNS는 naver.com에 대한 IP주소를 캐싱하고 IP 주소 정보를 전달한다.

 

DNS는 이런 과정을 통해 동작하게 된다.

 

Domain name 과 Hostname 의 차이는 무엇일까?

도메인네임이란, 넓은 의미로는 네트워크 상에서 컴퓨터를 식별하는 호스트명을, 좁은 의미에서는 도메인 레지스트리에서 등록된 이름을 의미한다.

우리가 네트워크상에서 원하는 호스트를 가리키는 이름정도라고 생각하면 쉽다.

호스트네임이란, 네트워크에 연결된 장치들에게 부여되는 각각의 고유한 이름이다. mail.naver.com / comic.naver.com 등, 여기서 mail과 comic은 naver.com이라는 도메인 네임에서 각각의 서비스를 구분하기 위한 호스트 네임이다.

네트워크를 구성하고 네트워크 안에서 IP주소가 아닌 별칭을 사용하기 위해서 호스트네임과 IP를 관리해주는 테이블이 필요하다. 라우터를 통해 대상지에 대한 IP와 호스트네임을 관리한다. 그렇기 때문에 내부 네트워크를 이용하는 경우 별도의 호스트네임을 등록해두고 IP 주소가 아닌 호스트네임을 통해 ssh 접속을 하거나 ping 테스트를 진행할 수 있다.

 

호스팅이란?

호스팅이란 말의 뜻은 어떤 서비스를 빌려서 사용한다는 말이다. 웹 호스팅이란, 말 그대로 외부의 서버를 빌려서 기능을 사용한다는 말이다.

 

웹 호스팅, 홈페이지(웹사이트)를 올려 놓을 인터넷상의 공간을 임대해주는 서비스다.

 

서버 호스팅, 웹 호스팅의 경우 서버 중 '일부'만 빌리는 서비스라면 서버 호스팅은 서버 하나를 통째로 구매할 수 있으며 서버 운영에 필요한 인프라와 기술력까지 제공받을 수 있는 서비스이다. 서버 관리에 대한 직접권한을 갖고 서버를 단독으로 상용하기 때문에 보안상으로도 유리하지만 주로 회사의 인터라넷, 대형 쇼핑몰 등 고정적으로 대용량 트래픽과 DB가 많이 사용되는 곳에 사용된다.

 

클라우드 호스팅, 웹 호스팅의 장점과 서버 호스팅의 장점을 모두 가지고 있는 호스팅이다. 최근 많은 주목을 받고 있다. 아마존의 EC2와 구글의 클라우드 플랫폼 등 다양한 서비스가 존재한다. 누구나 서버를 생성하고 관리할 수 있으며 트래픽의 변동에도 유연하게 대처할 수 있다는 장점이 있다. 

 

 

728x90