본문 바로가기
CS/네트워크

[백엔드] 네트워크 1

by Hoozy 2023. 3. 5.

백엔드 로드맵 : https://roadmap.sh/backend

로드맵을 따라 처음인 네트워크부터 배우겠습니다.

카테고리 : 네트워크

인터넷
  • 여러 통신망을 하나로 연결하는 거대한 컴퓨터 통신망
  • 클라이언트와 서버가 연결되어 구성된 망을 컴퓨터 네트워크 라고 하며, TCP/IP 프로토콜을 통해 제공됨.
  • 즉, 수많은 컴퓨터 네트워크들로 구성된 집합체이다.
  • 인터넷은 서로 동시에 참여할 수 있는 쌍방향 통신을 제공한다.
TCP/IP 프로토콜
  • IP(인터넷 프로토콜) : 네트워크 상에서 컴퓨터의 고유한 주소. 총 4바이트로 0.0.0.0 형태이며 각 숫자는 256까지 가능하다.
  • TCP(전송 제어 프로토콜) : 클라이언트와 서버간에 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜.
    • 근거리통신망(LAN), 원거리 통신망(WAN), 인트라넷, 인터넷 등 컴퓨터에서 실행되는 프로그램 간에 데이터를 안정적이고, 에러없이 데이터를 교환 가능하게 합니다.
DNS 주소
  • 도메인 : WWW.NAVER.COM과 같은 도메인 이름을 통해 온라인에 접근한다.
  • 이때 DNS는 브라우저가 도메인 이름을 IP주소로 변환하여 서버에서 인터넷 자원을 받을 수 있게 하는 시스템이다.
DNS의 작동 원리
  • DNS는 세가지 요소로 구성된다
    • 도메인 네임 스페이스 : 네임 서버에서 도메인 주소를 관리하는 방법 또는 관리 단위.
    • 네입 서버 : 도메인 주소를 관리하기 위해 사용하는 DNS 전용 서버. DNS 서버라고도 한다.
    • 리졸버 : DNS 상의 클라이언트. 네임 서버에게 도메인 주소에 대한 IP주소를 물어보는(반대여도 마찬가지) 장비 또는 프로그램.
      • 사용자의 PC가 될 수도, 네임 서버가 될 수도.
  • 작동 원리 www.naver.com -> www : 3차 도메인 , naver : 2차 도메인, com : 1차 도메인
    1. 사용자는 크롬 브라우저에 "www.naver.com" 검색
    2. 클라이언트(리졸버)가 www.naver.com에 대해 DNS 조회.
      3, 캐시 네임 서버(ISP에서 운영하는 캐시 네임 서버)에 www.naver.com에 대한 값이 있다면 바로 IP 주소 가지고 웹 페이지 표시.
      없다면 루트 네임 서버에 www.naver.com에 대한 응답 요청
    3. 루트 네임 서버는 com 네임 서버의 IP 주소를 캐시 네임 서버에 전달
    4. 캐시 네임 서버는 com 네임 서버에 www.naver.com에 대한 응담 요청
    5. com 네임 서버는 naver 네임 서버의 IP 주소를 캐시 네임 서버에 전달
    6. 캐시 네임 서버는 naver 네임 서버에 www.naver.com에 대한 응답 요청
    7. naver 네임 서버는 www.naver.com의 IP 주소를 캐시 네임 서버에 전달
    8. 캐시 네임 서버는 www.naver.com의 IP 주소를 클라이언트(리졸버)에 전달
    9. 클라이언트는 이 IP 주소를 가지고 www.naver.com에 접속
HTTP 프로토콜
  • 데이터를 주고 받기 위한 프로토콜이며, 서버와 클라이언트 모델을 따른다.
  • 상태 정보를 저장하지 않는 Stateless의 특징과 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless 특징을 가진다.
    • 장점
      • 통신간의 연결 상태 처리나 상태 정보를 관리할 필요가 없어 서버 디자인이 간단.
      • 각각의 HTTP 요청에 독립적으로 응답만 보내주면 OK
    • 단점
      • 이전 통신의 정보를 모르기 때문에 매번 인증 해야한다
      • 해결하기 위해 쿠키, 세션을 사용해서 데이터를 처리한다.
HTTPS 프로토콜
  • HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, 제 3자에 의해 조회될 수 있습니다.
  • HTTP에 SSL을 추가한 프로토콜이 HTTPS 입니다.
    • SSL(Secure Socket Layer) : 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약
  • HTTP는 원래 TCP와 통신하지만, HTTPS에서는 HTTP가 SSL과 통신 후 SSL이 TCP와 통신해서 암호화, 증명서 등 보호가 가능하다.
  • 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간이지만, 인터넷과 같은 의미로 많이 사용됩니다.
  • 웹은 텍스트, 그림, 소리, 영상 등과 같은 멀티미디어 정보를 하이퍼텍스트 방식으로 연결하여 제공합니다.
    • 하이퍼텍스트 : 문서 내부에 또 다른 문서로 연결되는 참조를 집어 넣음으로써 웹 상에 존재하는 문서끼리 참조할 수 있는 기술.
      • 이때 참조를 하이퍼 링크 라고 부릅니다.
웹 브라우저
  • HTML(하이퍼 텍스트 마크업 언어) 를 사용하여 작성된 하이퍼텍스트 문서를 웹 페이지라고 하며,
    • 웹 페이지 중에서 서로 관련된 내용으로 작성된 웹 페이지들의 집합을 웹 사이트 라고 한다.
    • 웹은 수많은 웹페이지들이 하이퍼 링크를 통해 서로 연결되어 구성됩니다.
  • 웹 브라우저 : 웹 페이지를 검색하기 위해 사용하는 프로그램.
인터넷 연결 원리
  • 가깝거나 소규모의 컴퓨터끼리의 연결은 케이블, 와이파이, 블루투스와 같은 것으로 연결이 가능하다.
  • 하지만, 대규모가 되면 컴퓨터끼리 연결도 힘들어서 컴퓨터 사이에 중재자 역할인 라우터를 활용한다.
    • 라우터 : 특수한 소형 컴퓨터로 여러 컴퓨터에 연결되어서 테이터를 받아 잘 전달해주는 역할만 하는 간단한 컴퓨터.
  • 여기까진 가까운 컴퓨터끼리는 연결이 되지만, 멀어지면 모뎀을 써야한다.
    • 모뎀 : 우리의 네트워크와 연결되어, 외부에 전화 시설과 연결해주는 기계.
    • (전화 시설에 사용되는 데이터와 컴퓨터에 사용되는 데이터 교환해주는 기계)
  • 이제 모뎀이 외부 ISP로 데이터를 전송, ISP가 연결을 원하는 지역의 ISP로 전송, 이 ISP가 모뎀, 라우터를 거쳐서 원하는 컴퓨터로 전송한다.
    • ISP : 인터넷 서비스 제공 업체로 몇몇 특수한 라우터를 관리하고 다른 ISP에 액세스 할 수 있는 회사. SKT, KT, LG 등이 있다.
포트 포워딩
  • 공유기의 포트를 통해 이 공유기와 연결된 기기들의 특정 포트에 진입할 수 있게 하는 기능.
  • 만약, 공유기와 핸드폰이 연결되어 있다. 이때 외부에서 공유기 IP + 포트번호를 입력하면 공유기의 어느 기기 의 포트로 들어가야 하는지 모른다. 따라서 포트 포워딩은 공유기에 연결된 기기(컴퓨터나 핸드폰)의 포트를 특정 포트(번호)를 통해 전달(포워딩) 해주는 것이다.
웹 동작 원리
  1. 사용자가 브라우저에 URL(www.naver.com) 입력
  2. DNS 가 서버 IP 찾아옴.
  3. IP 주소로 웹 서버에 TCP 3 HANDSHAKE 로 연결 수립
  4. 클라이언트는 웹 서버로 HTTP 요청 메시지 보냄
  5. 웹 서버는 HTTP 응답 메시지를 보냄
  6. 도착한 HTTP 응답 메세지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력.

네트워크 1 끝.

다음 게시글 네트워크 2

https://hoozy.tistory.com/entry/%EB%B0%B1%EC%97%94%EB%93%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-2

 

[백엔드] 네트워크 2

이전 게시글 네트워크 1 https://hoozy.tistory.com/entry/%EB%B0%B1%EC%97%94%EB%93%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-1 카테고리 : 네트워크 쿠키와 세션 쿠키 : HTTP의 일종으로 사용자의 컴퓨터에 저장하는 작은 기

hoozy.tistory.com

참고 자료


https://dev-coco.tistory.com/161
https://development-crow.tistory.com/3
https://hyunie-y.tistory.com/23
https://susoterran.github.io/other/dns_process/

'CS > 네트워크' 카테고리의 다른 글

[백엔드] 네트워크 2  (0) 2023.03.05

댓글