클라이언트와 서버

현채은·2023년 3월 29일
0
post-thumbnail

👩🏻‍💻 서버 ( Server )

: 네트워크에서 클라이언트가 요청한 데이터를 주는 컴퓨터

🙋🏻‍♀️ 클라이언트 ( Client )

: 서버에 데이터를 요청하고 요청한 데이터를 받는 컴퓨터

❓ 컴퓨터가 서로 데이터를 왜 주고받을까

➡️ 특정한 기능, 서비스를 사용자에게 제공하고 사용하기 위해서 !

▶︎ 클라이언트-서버( 2티어 ) 아키텍처

: 리소스가 존재하는 곳( 서버 )과 리소스를 사용하는 앱 ( 클라이언트 )을 분리시킨 것

  • 클라이언트의 요청이 선행되고, 그 후에 서버에서 응답 제공
  • 서버의 종류 : 웹서버, 파일서버, 메일서버, 데이터베이스서버 등
  • 클라이언트의 종류 : 웹사이트, 스마트폰/태블릿 앱, 데스크탑 앱 등

▶︎ 클라이언트 - 서버 - 데이터베이스 ( 3티어 ) 아키텍처

: 리소스를 저장하는 공간인 데이터베이스가 추가

  • 서버는 클라이언트의 요청을 전달 받아 필요시에 데이터 베이스에서 리소스를 가져와 클라이언트에게 제공한다.
  • 서버 : 리소스를 전달해주는 역할
  • 📚 데이터 베이스 : 리소스를 저장하는 창고

🐤 클라이언트-서버 통신과 API

🤙🏻 프로토콜 ( Protocol )

: 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계

  • 서버와 클라이언트가 통신할 때 지켜야하는 약속

알아두면 좋은 프로토콜

📌 7. 응용계층

  • HTTP : 웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜
  • HTTPS : HTTP에서 보안이 강화된 프로토콜
  • FTP: 파일 전송 프로토콜
  • SMTP: 메일을 전송하기 위한 프로토콜
  • SSH : CLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
  • RDP: Window 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
  • WebSocket : 실시간통신, Push 등을 지원하는 프로토콜

📌 4. 전송계층

  • TCP : HTTP. FTP 통신 등의 근간이 되는 인터넷 프로토콜
  • UDP : ( 양방향인 TCP와는 다르게 ) 단방향으로 작동하는 훨씬 빠르고 단순한 프로토콜
    But ) 신뢰성이 낮음

📑 API ( Application Programming Interface )

: 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공해주는 것
( 마치 메뉴판.. 의사소통이 가능하도록 만들어진 접점 )

  • HTTP API에서 사용하는 메소드
    ( CRUD 각각의 행동과 일치하는 HTTP 메서드의 종류가 존재함)
    • GET : 조회 ( Read ), 특정 리소스의 표시를 요청 ( 데이터를 받기만 )
      ex. 학생 데이터 보여줘
    • POST : 추가 ( Create ), 특정 리소스에 엔티티를 추가
      ex. 전학생이 온 경우 학생 데이터를 추가
    • PUT (PATCH) : 갱신 ( Update )
      ex. 특정학생의 정보 ( 집주소 ) 가 변경된 경우
    • DELETE : 삭제 ( Delete )
      ex. 학생이 다른 학교로 전학을 갔을 때

🐤 URI와 URL

  • URI ( Uniform Resource Identifier )
    : 일반적으로 URL의 기본요소인 scheme, hosts, url-path에 더해 query, fragment를 포함한다.
  • URL ( Uniform Resource Locator )
    : 네크워크 상에서 웹페이지, 이미지, 동영상 등의파일이 위치한 정보를 나타낸다.
    • scheme, hosts, url-path로 구분할 수 있다
    • scheme : 통신방식 ( 프로토콜 ) ex. http(s)://, file://
    • hosts : 웹서버의 이름이나 도메인, IP 를 활용하여 주소를 나타낸다.
      ex. www.naver.com / 127.0.0.1( 로컬PC )
    • url-path : 웹서버의 루트 디엑토리로 부터 웹페이지, 이미지, 동영상 등의 파일 위치까지의 경로
      ex. /search , Users/username/Desktop
  • ⭐️ URL은 URI이다 ? ➡️ True / URI는 URL이다 ? ➡️ False
    • URI는 URL을 포함하는 상위개념
  • 이 외의 URI 추가 구성요소
    • fragment : 일종의 북마크 기능 수행
      ex. # 와 특정 HTML요소의 id 전달 ( #section1 ) ➡️ 해당 요소가 있는 곳으로 스크롤 이동
    • query : 웹 서버에 전달하는 추가질문
      ex. q = Javascript ( 자바스크립트 검색 결과 )

🐤 IP와 PORT

  • IP ( Internet Protocol address ) : 네트워크에 연결된 특정 PC의 주소를 나타내는 체계

    • 인터넷 상에서 사용하는 주소체계
    • like..아파트 동이름
    • 4덩이의 숫자로 구분 됨 ➡️ IPv4
    • IPv4 : Internet Protocol version 4
      • 각 덩어리마다 0~255 까지 나타낼 수 있음 2^(4 x 8) = 2^(32) 인 약 43억개의 IP주소를 표현할 수 있음
      • 그 중 몇가지는 용도가 정해져 있음 !
      • 127.0.0.1 ( localhost) : 현재 사용중인 로컬 PC
      • 0.0.0.0 , 255.255.255.255 : broadcast address ,로컬 네트워크에 접속 된 모든 장치와 소통하는 주소
    • IPv6의 등장 : 표기법을 달리 책정하여 2^(128)개의 IP 주소를 표현
  • IP 주소를 확인하는 법 : nslookup 도메인 주소

  • PORT ( 포트 ) : 특정 PC의 주소에 진입할 수 있는 정해진 통로
    : IP 주소가 가리키는 PC에 접속할 수 있는 통로 ( 채널 ) 의미
    • 이미 사용중인 포트는 중복해서 사용할 수 없다
    • 0~65535 까지 사용할 수 있음
    • 0~1024번 까지의 포트번호는 주요 통신을 위한 규약에 따라 정해져있음 !
    • 📌 기억해두면 좋은 포트번호
      • 22 : SSH (원격 호스트에 접속하기 위해 사용되는 보안 프로토콜 )
      • 80 : HTTP
      • 443 : HTTPS
    • 이미 정해진 포트번호 ➡️ 필요에따라 자유롭게 이용 OK
    • 잘 알려진 포트번호 ➡️ 생략 OK
profile
프론트엔드 개발자

0개의 댓글