백엔드

백엔드 기초 공부_1 네트워크 기초 지식 (feat. 아는 만큼 보이는 백엔드 개발)

dawon2 2024. 7. 2. 21:19

백엔드 기초 지식은 이리저리 많이 듣기도 하고 어느정도는 안다고 생각했다..ㅎㅎ

근데 프로젝트에서 막상 API 명세서를 작성해보려 하니 아무것도 못하겠어서 책으로 공부를 좀 해보려고 한다.

 

chapter2 .cs 기초 지식

 

2.1 네트워크

 

  • 네트워크(network) : 컴퓨터들이 통신망을 통해 서로 그물처럼 연결되어 있는 것
  • 인터넷(Internet) : 네트워트가 전 세계적으로 연결된 통신망

 

  • 2.1.1 IP 주소
    • IP 주소(Internet Protocol adress) : 네트워크에 연결된 각 컴퓨터를 구분하는 유일한 주소
    • 4byte로 이뤄진 고유한 값, 1byte씩 10진수로 나타냄
    • ex) 구글 웹사이트의 IP 주소 : 172.217.174.100
  • 2.1.2 도메인 네임
    • 도메인 네임(domain name) : 사용자가 쉽게 기억할 수 있도록 IP주소를 문자열로 변환한 것
  • 2.1.3 DNS
    • DNS(Domain Name System) : 도메인과 IP주소의 매핑 정보를 가지고 있는 시스템
    • 동작 방식
      1. 사용자가 도메인 입력
      2. 웹브라우저가 입력받은 도메인에 해당하는 IP 주소를 DNS서버(네임 서버라고도 함)에 문의
      3. DNS 서버는 도메인에 해당하는 IP 주소를 찾아 반환
      4. 웹브라우저가 IP 주소의 컴퓨터에 접속
    • DNS 서버의 계층 구조
      • 도메인을 계층화하고 각 계층마다 DNS 서버를 따로 둬 운영함
      • 각 계층은 '.(닷,dot)'을 기준으로 구분함
      • www.google.com(.)의 계층 구조
          • 마지막 생략된 닷(.)이 루트 도메인
          • com은 최상위 레벨 도메인
          • google은 2레벨 도메인
          • www는 3레벨 도메인, 서브 도메인(sub-domain)이라고도 부름
          •  
         
      • www.google.com이 보낸 요청에 대한 DNS 서버의 IP 주소 조회 과정
        1. DNS 서버가 루트 DNS 서버에게 www.google.com의 IP 주소 조회 요청을 보냄
        2. 루트 DNS 서버가 DNS 서에에게 'com' DNS 서버의 IP 주소를 반환해줌
        3. 받은 'com' DNS 서버의 IP 주소로 DNS 서버가 www.goolge.com의 IP 주소 조회 요청을 보냄
        4. 'com' DNS 서버가 DNS 서버에게 'google.com' DNS 서버의 IP 주소를 반환해줌
        5. 받은 'google.com' DNS 서버의 IP 주소로 DNS 서버가 www.goolge.com의 IP 주소 조회 요청을 보냄
        6. 'google.com' DNS 서버가 DNS 서버에게 초종 IP 주소를 반환해줌 ex)142.250.207.100
      •  관련 공부 : DNS 질의 프로세스, DNS 캐시, DNS 보안 등
  • 2.1.4 포트와 포트 번호
    • IP 주소로 특정 컴퓨터에 요청을 보낼때 해당 컴퓨터에서 여러 프로그램이 실행되고 있으면 포트(port)를 통해 해당 프로그램을 찾을 수 있음
    • 세 프로그램을 구동하고 있은 서버를 본다면
      • 서버의 IP 주소 192.168.1.1
      • HTTP 프로토콜 기반의 웹 서비스 프로그램 (포트번호 80)
      • SSH 프로토콜 가반의 외부 접속 프로그램 (포트번호 22)
      • FTP 프로토콜 기반의 파일 전송 프로그램 (포트번호20,21)을 구동 중
      • 웹 서비스 프로그램에 접속하려면 192.168.1.1 주소의 80번 포트에 접속하면 됨
    • 포트 번호는 0~65535번이며 0번과 65535번은 사용하지 않음
    • 1~1023번은 '잘 알려진 포트' 번호로 잘 알려진 프로그램의 용도에 따라 이미 할당 되어 있음
  • 2.1.5 프로토콜
    • 프로토콜 (protocol) : 컴퓨터 네트워트에서 컴퓨터 간에 통신할 수 있도록 정해놓은 규칙과 절차
    • 백엔드 개발 관련 주요 프로토콜
      • TCP와 IP
        • TCP (Transmission Control Protocol) ,IP (Internet Protocol) : 인터넷으로 연결된 컴퓨터들이 서로 정보를 주고 받는 데 사용하는 프로토콜임, 합쳐서 TCP/IP 라고 부름
        • 데이터를 패킷(packet)이라는 작은 단위로 나누어 전송함
        • IP는 목적지 주소로 패킷을 빠르게 전달만 하는 역할, 순서가 뒤섞이거나 중간 유실 가능성 有
        • TCP는 목적지에 도착한 패킷을 순서에 맞게 정렬, 통신 중 유실된 패킷이 있는 경우 송신 측에 재전달 요청을 함
        • 인터넷 통신 시 TCP와 IP 프로토콜을 사용해 데이터를 빠르게 전달하면서 신뢰성을 보장함

         
      • HTTP
        • HTTP (HyperText Transfer Protocol) : 인터넷에서 클라이언트와 서버 간에 데이터를 주고받기 위해 사용하는 프로토콜, 요청-응답 프로토콜이라고도 함
        • HTTP로 처리한 데이터는 TCP와 IP를 거쳐 인터넷 통신망으로 전송
        • ex) www.google.com 접속
          • 사용자가 'www.google.com'을 을 입력하면 웹 브라우저(클라이언트)가 구글 서버에 '구글 웹 사이트를 사용자에게 보여주기 위한 데이터를 전송해줘' 라는 HTTP 요청을 보냄
          • 구글 서버는 웹 사이트를 띄우는 데 필요한 데이터(HTML, CSS, 이미지 파일 등)를 HTTP 응답으로 보냄
          • 웹 브라우저가 각 요소를 적절히 조합해 구글 웹 사이트를 사용자 화면에 출력함
        • 요청과 응답은 메세지 형태로 주고 받음 : HTTP 메세지(HTTP message)
          • request message 요청 메세지 : 클라이언트가 서버로 요청을 보낼 때 사용
          • response message 응답 메세지 : 서버가 클라이언트에 응답할 때 사용
          • 각 메세지는 시작 행(start line), 헤더(header), 빈 행(empty line), 본문(body)으로 구성됨
            • start line : 요청 혹은 응답과 관련된 주요 정보가 들어있음 무엇을 요청했고, 요청에 대한 응답이 성공적으로 이뤄졌는지 여부 등의 정보가 들어있으므로 제일 중요함
            • header : 요청 혹은 응답과 관련된 부가 정보가 들어있음
            • empty line : 헤더의 끝을 표시하기 위해 빈 행을 넣어 구분함
            • body : 통신을 통해 실제로 주고받는 데이터가 들어있음, request의 body에는 요청 시 전달할 데이터가, response의 body에는 응답으로 보내는 데이터가 담김, 생략 가능
          • request message의 start line : HTTP 메서드(HTTP method), 요청 URI(Uniform Resource Identifier), HTTP 버전 정보가 들어감
            • HTTP 메서드 : 클라이언트가 서버로 보내는 요청의 종류를 나타냄
              • ex) GET, POST, PUT, PATCH, DELETE
            • 요청 URI : 웹상의 고유한 자원을 식별하는 통합 자원 식별자, 클라이언트로부터 요청을 받아 처리할 서버의 자원을 가리킴
            • HTTP 버전 : 해당 메세지에서 사용하는 HTTP버전 
          • response message의 start line : HTTP 버전 정보, 상태 코드, 상태 메세지
            • 상태 코드 : HTTP 요청이 성공적으로 완료됐는지 여부
              • 1XX : 정보를 제공하는 응답
              • 2XX : 요청을 성공적으로 처리했다는 응답
              • 3XX : 리다이렉션(redirection) 응답(새 URI로 재요청하라는 의미)
              • 4XX : 클라이언트 에러 응답
              • 5XX : 서버 에러 응답
            • 상태 메세지 : 상태 코드 뒤에 붙는 간략한 문구, 상태 코드에 대한 해설 제공
           
      • HTTPS
        • HTTPS(HyperText Transfer Protocol over Secure Socket Layer) : 보안 요소가 강화된 HTTP 프로토콜
        • HTTP는 데이터를 전송하는 중간에 탈취 위험이 큼
        • HTTPS는 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 암호화 프로토콜을 사용해 데이테를 암호화 함
        • HTTPS는 SSL인증서를 사용해 서버의 신원을 확인하므로 클라이언트는 접속하는 웹 사이트의 신뢰성을 판단할 수 있음
  • 2.1.6 네트워크 정리
    • 웹 브라우저와 DNS의 동작 방식을 이해하면 클라이언트와 서버의 통신 시간을 단축해 웹 페이지의 로딩 시간을 줄이고, 사용자에게 더 빠른 인터넥 경험을 제공할 수 있음
    • 추가 공부를 위한 키워드
      • 내부 IP, 외부 IP
      • 유동 IP, 고정 IP
      • DNS, hosts 파일
      • 레지스트리(registry), 레지스트라(registrar)
      • well-known port, registered port, dynamic port
      • 포트 포워딩(port forwarding)
      • OSI 7계층, TCP/IP 4계층

'백엔드' 카테고리의 다른 글

API 문서화 swagger (feat. 아는 만큼 보이는 백엔드 개발)  (0) 2024.08.01
쿠키와 세션  (0) 2024.06.06
My SQL 명령문  (1) 2024.04.26