HTTP를 이용한 클라이언트-서버 통신과 API

YoungJoon Suh·2022년 3월 13일

OSI 7 layers
HTTP: 웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜
HTTPS: HTTP에서 보안이 강화된 프로토콜
FTP: 파일 전송 프로토콜
SMTP: 메일을 전송하기 위한 프로토콜
SSH: CLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
RDP: Windows 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
WebSocket: 실시간 통신, Push 등을 지원하는 프로토콜
전송 계층
TCP: HTTP, FTP 통신 등의 근간이 되는 인터넷 프로토콜
UDP: (양방향의 TCP와는 다르게) 단방향으로 작동하는 훨씬 더 단순하고 빠르지만, 신뢰성이 낮은 인터넷 프로토콜
그런데 우리는 서버가 어떻게 구성되어 있는지 알 방법이 없습니다. 우리가 서버 코드를 직접 짠 사람도 아닌데, 어떻게 사용 가능한 자원을 파악할 수 있을까요?
이에 대한 정담이 바로 API (application programming interface)입니다. 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공해 줘야 합니다. 이것을 API라고 합니다. interface: 의사 소통이 가능하도록 만들어진 접점. 마찬가지로 서버는 리소스 전달을 위한 메뉴판, 즉 API 문서를 작성해야 클라이언트가 이를 활용할 수 있습니다. 보통 인터넷에 있는 데이터를 요청할 때에는 HTTP라는 프로토콜을 사용하며, 주소 (URL, URI)를 통해 접근할 수 있습니다.
모든 사용자 조회: /users GET
새 사용자 추가: /users POST
1번 사용자 정보 갱신: /users/1 PUT
1번 사용자 정보 삭제: /users/1 DELETE
1번 사용자 정보 조회: /users/1 GET
HTTP 요청시 메소드를 지정하여 리소스와 관련된 행동(CRUD: create, read, update, delete) 을 지정할 수 있습니다.
사용자 관리 API: URL 디자인은 비교적 단순하나 "메소드"라는 개념이 등장합니다.
요청 적절한 메소드
조회(Read) GET
추가(Create) POST
갱신(Update) PUT 또는 PATCH
삭제(Delete) DELETE
HTTP 메소드는 CRUD 행동에 따라 목적에 맞게 써야 합니다.
URL은 uniform resource locator의 줄임말로, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타냅니다. URL은 scheme, hosts, url-path로 구분할 수 있습니다. 가장 먼저 작성하는 scheme은 통신 방식(프로토콜)을 결정합니다. 일반적인 웹 브라우저에서는 http(s)를 사용합니다. hosts은 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타냅니다. url-path는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일 명을 나타냅니다.
URI는 Uniform Resource Identifier의 줄임말로, 일반적으로 URL의 기본요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함합니다. query는 웹 서버에 보내는 추가적인 질문입니다. 브라우저의 검색창을 클릭하면 나타나는 주소가 URI입니다. URI는 URL을 포함하는 상위 개념입니다. 따라서 URL은 URI이다는 참이고 URI는 URL이다는 거짓입니다.
127.0.0.1: 로컬 pc를 나타냅니다.
port는 서버로 진입할 수 있는 통로입니다.
네트워크에 연결된 특정 pc의 주소를 나타내는 체계를 IP address(Internet protocol address, IP 주소)라고 합니다.
네트워크 상에서 특정 pc를 나타내는 IP 주소와 그 주소에 진입할 수 있는 정해진 통로(PORT)에 대해서 학습합니다. IP는 internet protocol의 줄임말로, 인터넷 상에서 사용하는 주소체계를 의미합니다. 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네덩이의 숫자로 구분됩니다. 이렇게 네 덩이의 숫자로 구분된 IP 주소체계를 IPv4라고 합니다. IPv4는 Internet Protocol version 4의 줄임말로, IP 주소체계의 네 번째 버전을 뜻합니다. IPv4는 각 덩어리마다 0부터 255까지 나타낼 수 있습니다. 이 시스템에 따르면 2^(32)인 약 43억 개의 IP 주소를 표현할 수 있습니다. 그중에서 몇가지는 이미 그 용도가 정해져 있습니다.
localhost, 127.0.0.1: 현재 사용 중인 로컬 pc를 지칭합니다.
0.0.0.0, 255.255.255.255: broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소입니다. 서버에서 접근 가능한 IP주소를 broadcast address로 지정하면, 모든 기기에서 서버에 접속할 수 있습니다.
PORT: 터미널에서 리액트를 실행하면 나타나는 화면에는, 로컬 pc의 IP 주소인 127.0.0.1 뒤에 :3000과 같은 숫자가 표현됩니다. 이 숫자는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)을 의미합니다. 리액트를 실행했을 때에는 로컬 PC의 IP 주소로 접근하여, 3000번의 통로를 통해 실행 중인 리액트를 확인할 수 있습니다. 이미 사용 중인 포트는 중복해서 사용할 수 없습니다. 만약 다른 프로그램에서 3000번 포트를 사용중 이라면, 다른 포트 번호로 (3001) 리액트가 실행됩니다. 포트번호는 65,355 까지 사용할 수 있습니다. 그중에서 0~1024번까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있습니다.
22: SSH, 80: HTTP, 443: HTTPS
이미 정해진 포트번호라도, 필요에 따라 자유롭게 사용할 수 있습니다. 잘 알려진 포트의 경우 URI 등에 명시하지 않지만, 그 외의 잘 알려지지 않은 포트(:3000)같은 임시 포트는 반드시 포함해야 합니다.

profile
저는 서영준 입니다.

0개의 댓글