👩🏻💻 서버 ( 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 추가 구성요소
- fragment : 일종의 북마크 기능 수행
ex. # 와 특정 HTML요소의 id 전달 ( #section1 ) ➡️ 해당 요소가 있는 곳으로 스크롤 이동
- query : 웹 서버에 전달하는 추가질문
ex. q = Javascript ( 자바스크립트 검색 결과 )
🐤 IP와 PORT
- PORT ( 포트 ) : 특정 PC의 주소에 진입할 수 있는 정해진 통로
: IP 주소가 가리키는 PC에 접속할 수 있는 통로 ( 채널 ) 의미
- 이미 사용중인 포트는 중복해서 사용할 수 없다
- 0~65535 까지 사용할 수 있음
- 0~1024번 까지의 포트번호는 주요 통신을 위한 규약에 따라 정해져있음 !
- 📌 기억해두면 좋은 포트번호
- 22 : SSH (원격 호스트에 접속하기 위해 사용되는 보안 프로토콜 )
- 80 : HTTP
- 443 : HTTPS
- 이미 정해진 포트번호 ➡️ 필요에따라 자유롭게 이용 OK
- 잘 알려진 포트번호 ➡️ 생략 OK