본 글에서는 2020 백엔드 개발자 로드맵의 첫번째 단계인 인터넷에 대해 알아보고, 정리 해 두고자 합니다.

https://developer.mozilla.org/ 사이트를 주로 참고하였습니다.

 

2020 백엔드 개발자 로드맵

 

1. 인터넷은 어떻게 작동될까요?

 인터넷이란, 컴퓨터와 컴퓨터를 물리적으로(무선 통신도 포함해서) 연결하는 데에서부터 출발합니다. 두 대의 컴퓨터를 연결하려면 하나의 전선만 있으면 되겠지만, 여러 대의 컴퓨터를 서로 연결하려면 필요한 선이 기하급수적으로 늘어나기 마련입니다. 그렇기 때문에, 우리는 여러 대의 컴퓨터들을 서로 서로 연결하는 대신, 중앙에 라우터 라는 장비를 두고 각각의 컴퓨터를 연결합니다.

 

 

 

 같은 원리로, 라우터와 라우터끼리 연결하여 수십 수백대의 컴퓨터끼리도 연결할 수 있겠습니다. 이는 로컬 네트워크라고 부릅니다. 로컬 네트워크를 아주 멀리 있는 지역의 컴퓨터와 연결하려면 이 네트워크를 ISP(Internet Service Provider)에 연결해야 합니다. ISP는 큰 라우터들을 관리하며 연결할 수 있게 해 주는 회사입니다. 인터넷은 이러한 전체 네트워크들의 인프라로 구성됩니다. 

 

2. HTTP는 무엇일까요?

 HTTP(Hyper Text Transfer Protocol)이란 텍스트 기반으로 인터넷에서 데이터를 주고받을 때에 사용되는 통신 규약(Protocol)입니다. TCP와 UDP 통신 위에서 동작하며, 80번 포트를 사용합니다.

 

 HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜입니다. HTTP는 사용자(클라이언트)가 어떠한 서비스를 서버에 요청하는것(Request)과 서버가 이 요청에 응답하는(Response) 두가지 단계로 이루어집니다. 

 

 

   클라이언트 -> 서버 : 요청(Request)

      서버 -> 클라이언트 : 응답(Response) 

 

 - 요청(Request) 의 종류

HTTP Request에는 다음의 네가지 종류가 있습니다.

GET

데이터의 조회를 요청

POST

데이터의 생성을 요청

PUT

데이터의 수정을 요청

DELETE

데이터의 삭제를 요청

 - 응답(Response)의 종류

HTTP Response는 요청의 결과에 따라 몇가지 상태 코드를 가집니다. 상태 코드의 종류는 크게 분류하자면 다음과 같습니다.

1XX

조건부 응답. 요청을 받았으며 작업을 계속한다.

2XX

성공. 클라이언트의 요청이 성공적이었으며 작업을 완료했다.

3XX

리다이렉션 완료. 클라이언트는 요청을 마치기 위해 추가 작업을 해야 한다.

4XX

요청 오류. 클라이언트의 요청에 오류가 있었다.

5XX

서버 오류. 서버가 유효한 요청을 수행하지 못했다.

 

 - 메시지의 구성 (HTTP/1.1 기준) 

HTTP 요청과 응답은 서로 비슷하게 구성되어 있습니다.

  1. 시작 줄(start-line)에는 실행되어야 할 요청, 또은 요청 수행에 대한 성공 또는 실패가 기록되어 있습니다. 이 줄은 항상 한 줄로 끝납니다.

  2. 옵션으로 HTTP 헤더 세트가 들어갑니다. 여기에는 요청에 대한 설명, 혹은 메시지 본문에 대한 설명이 들어갑니다.

  3. 요청에 대한 모든 메타 정보가 전송되었음을 알리는 빈 줄(blank line)이 삽입됩니다.

  4. 요청과 관련된 내용(HTML 폼 콘텐츠 등)이 옵션으로 들어가거나, 응답과 관련된 문서(document)가 들어갑니다. 본문의 존재 유무 및 크기는 첫 줄과 HTTP 헤더에 명시됩니다.

- HTTP/1.1과 HTTP/2

 HTTP/1.1 버전의 성능 상의 몇가지 결함 때문에, HTTP/2 버전이 나오게 되었습니다. HTTP/2 버전에서는 프레임 이라는 개념을 도입하여 HTTP 메시지를 나누어 전송합니다. 또한 여러개의 프레임을 묶어 스트림을 구성합니다. HTTP/2에서는 데이터와 헤더 프레임을 분리하여 헤더를 압축할 수 있으며, 스트림 여러개를 하나로 묶을 수도 있습니다.(멀티플렉싱) 

 

 

3. 브라우저와 동작 원리

 브라우저(웹 브라우저)는 인터넷에서 쌍방향으로 통신하며, HTML 문서나 파일을 출력하여 화면에 보여주는 그래픽 사용자 인터페이스(GUI) 기반의 응용 소프트웨어를 말합니다. 주요 웹 브라우저로는 ms의 인터넷 익스플로러, 엣지, 구글 크롬, 모질라 파이어폭스, 오페라, 사파리 등이 있습니다.

 

 브라우저의 주요 기능은 사용자가 선택한 자원을 서버에 요청하고, 서버가 응답한 HTML파일을 해석해서 화면에 표시하는 것입니다. 이 과정은 다음과 같습니다.

 

  1. 사용자가 HTTP를 사용하여 서버에 데이터(HTML 파일) 요청

  2. 서버가 응답함(HTML 파일이 전송됨)

  3. 브라우저에서 HTML 파일을 해석

  4. 브라우저의 렌더링 엔진이 HTML 파일을 화면에 그림 

 

4. DNS와 작동 원리, 도메인 이름이란?

 인터넷에 연결된 모든 장비들은 개인 IP 주소를 가지고 있습니다. 라우터들은 IP 주소를 통해 각각의 장비를 구분할 수 있고, 네트워크에 연결된 다른 장비를 찾아갈 수 있습니다. IP 주소는 32비트의 IPv4(173.194.121.32 와 같은), 128비트의 IPv6(2027:0da8:8b73:0000:0000:8a2e:0370:1337 와 같은) 등으로 표현됩니다. 

 하지만 이러한 IP 주소는 바뀔 수도 있고, 사람이 기억하기엔 너무 어렵습니다. 그렇기때문에 우리는 IP주소 대신, 사람이 읽고 기억하기 쉬운 주소인 도메인 이름(domain name)를 사용하게 되었습니다. 이렇게 IP 주소와 연결된 도메인 주소를 서로 변환시키는 것을 도메인 네임 시스템(Domain Name System, DNS)이라고 부릅니다.

 

 DNS 서버는 각각의 IP 주소와 도메인 주소를 기억하고 있는 DNS 데이터베이스를 갱신하고 관리합니다. 우리가 매번 특정 IP에 접근할때(DNS 리퀘스트를 요청할 때), DNS에서는 다음과 같은 단계를 거칩니다.

 

  1. 브라우저의 주소창에 도메인 이름을 입력 (ex. www.google.com)

  2. 해당 컴퓨터의 local DNS cache에 해당 도메인 이름의 IP 정보가 있는지 확인. 있다면 바로 해당 IP로 접속.

  3. 해당 도메인 이름의 IP를 모른다면, DNS 서버에 관련 정보를 요청함.

  4. 전달받은 IP로 접속하고, 컴퓨터의 local DNS cache에 해당 도메인과 IP 정보를 저장함.

 

5. 호스팅은 무엇일까요?

 웹 호스팅은 기업이나 사용자가 웹 사이트나 웹 페이지를 인터넷에 게시할 수 있도록 해주는 서비스입니다. 이러한 서비스를 통해 인터넷에 게시하고자 하는 데이터를 웹 호스팅 업체의 서버에 등록하면, 사용자는 등록한 IP와 도메인 이름을 통해 해당 데이터에 언제든 접근할 수 있습니다. 호스팅 서비스를 사용하려면 도메인 이름을 가지고 있어야 하고, 만일 도메인 이름이 없다면 호스팅 서비스 업체에서 제공해주기도 합니다.

 

 

 

 


참고자료

1. https://developer.mozilla.org/ko/docs/Learn/Common_questions/How_does_the_Internet_work

2. https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_domain_name

3. https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

4. https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

5. https://d2.naver.com/helloworld/59361

6. https://www.website.com/beginnerguide/webhosting/6/1/what-is-web-hosting?.ws

 

'스터디' 카테고리의 다른 글

테스트 주도 개발, JUnit  (0) 2020.08.05
Spring Framework 소개  (0) 2020.06.25

+ Recent posts