API & 프로토콜

Debug-Life ·2023년 3월 16일
0

api , protocol, packet 전부 규칙이다.
소프트웨어끼리 통신하는 방법, 프로그램끼리 소통하는 규칙,
rest api는 개발자들끼리 소통하기 위해 만든 규칙 규약들.

1. API

API의 정의를 살펴보면 이렇게 되어있다.

API란 "Application Programming Interface"의 약자로, 서로 다른 두 개의 소프트웨어 프로그램이 상호작용할 수 있도록 만들어진 인터페이스를 의미합니다. 간단하게 말해, 어떤 소프트웨어 프로그램에서 제공하는 기능을 다른 프로그램에서도 활용할 수 있도록 제공하는 방법을 말합니다.

보통 웹 개발에서 API는 백엔드 서버가 제공하는 데이터나 기능에 프론트엔드 개발자가 접근할 수 있는 방법을 제공한다. 이를 통해 프론트엔드 개발자는 백엔드에서 제공하는 데이터나 기능을 활용하여 웹 애플리케이션을 만들 수 있는것임.

API는 여러가지 형태로 제공될 수 있으며, 일반적으로 REST API, SOAP API, GraphQL API 등이 있습니다. REST API는 HTTP 프로토콜을 이용하여 데이터를 주고받는 방식으로, 가장 많이 사용된다. 실제로 내가 TC프로젝트를 진행할때 백엔드와 프론트엔드 사이에서 데이터를 전송하고 요청해서 저장할때 썼던 통신 방법이 REST API이다.


1-1. API 예제

✍ Github API를 사용하여 특정 사용자의 레포지토리 목록을 가져오기.

fetch('https://api.github.com/users/{username}/repos')
  .then(response => response.json())
  .then(data => console.log(data));





2. Protocol

프로토콜도 정의부터 보자.

프로토콜은 네트워크 상에서 데이터를 주고받는 규약입니다. 즉, 컴퓨터와 서버간의 통신에서 데이터 전송 방법, 데이터 형식, 에러 처리 방법 등을 정해놓은 약속이라고 할 수 있습니다. 네트워크를 통해 데이터를 주고받는 모든 기기들은 같은 프로토콜을 사용하여 서로 통신합니다. 대표적으로 HTTP, FTP, TCP/IP, SMTP 등이 있습니다.


2-1. Protocol 예제

✍ WebSocket 프로토콜을 사용하여 실시간으로 데이터를 전송

const socket = new WebSocket('wss://echo.websocket.org/');

socket.addEventListener('open', function (event) {
  socket.send('Hello Server!');
});

socket.addEventListener('message', function (event) {
  console.log('Message from server: ', event.data);
});



2-2. HTTP Protocol

HTTP(Hypertext Transfer Protocol)는 인터넷에서 데이터를 주고받기 위한 프로토콜 중 하나다. 클라이언트와 서버 간에 요청(request)과 응답(response)을 주고받을 때 사용된다.

HTTP는 기본적으로 TCP/IP 프로토콜 위에서 동작합니다. 클라이언트는 HTTP 요청 메시지를 서버에 보내고, 서버는 클라이언트의 요청에 대한 응답을 보내는 것입니다. HTTP 요청 메시지에는 요청하는 리소스의 정보와 함께 요청 메서드(GET, POST, PUT, DELETE 등)와 헤더 등이 포함되며, 응답 메시지에는 요청에 대한 결과와 함께 상태 코드와 헤더 등이 포함됩니다.

HTTP는 웹 브라우저와 웹 서버 사이에서 주고받는 데이터의 표준화된 형식으로서, 웹 기반 애플리케이션 개발에 필수적인 기술입니다. 이를 이용해 클라이언트와 서버 간의 통신을 처리하고, 웹 페이지를 불러오고, 데이터를 전송하며, 웹 서비스를 개발하는 등 다양한 용도로 활용됩니다.

✍ HTTP Protocol 예제

fetch('https://api.example.com/data.json')
  .then(response => response.json())
  .then(data => console.log(data));

fetch API를 사용하여 서버에서 JSON 데이터가져오기 예제.



2-3. TCP/IP 프로토콜

TCP/IP 프로토콜은 인터넷에서 컴퓨터 간에 데이터를 전송하기 위한 규약이며, 인터넷 프로토콜 스위트(Internet Protocol Suite)의 핵심 프로토콜 중 하나입니다. 이것은 인터넷에서 데이터를 주고받는 데 있어서 가장 많이 사용되는 프로토콜입니다. TCP는 데이터를 안정적으로, 순서대로, 에러 없이 전달하기 위한 프로토콜이고, IP는 패킷을 전달하기 위한 프로토콜입니다. 이 두 가지 프로토콜이 합쳐져 TCP/IP 프로토콜이 됩니다. HTTP 프로토콜은 TCP/IP 프로토콜 위에서 동작하는 프로토콜 중 하나이며, 웹 브라우저와 웹 서버 간에 데이터를 주고받기 위해 사용됩니다.


✍ TCP/IP 프로토콜 예제

const net = require('net');

const client = new net.Socket();

client.connect(80, 'example.com', function() {
  console.log('Connected');
  client.write('Hello, server!');
});

client.on('data', function(data) {
  console.log('Received: ' + data);
  client.destroy(); 
});

client.on('close', function() {
  console.log('Connection closed');
});

TCP 소켓을 사용하여 서버에 연결하는 예제.




3. 결론


  • API : 애플리케이션 간에 데이터를 주고받기 위한 인터페이스를 제공
  • Protocol : 데이터를 주고받기 위한 통신 규약

기본적으로 웹기반으로 만들어진 리액트로 만든 애플리케이션은 인터넷을 통해 데이터를 주고받기 위해 TCP/IP 프로토콜 위에서 동작하고 그 위에서 HTTP 프로토콜을 사용하여 데이터를 주고받는다.


3-1. 공통점

API와 프로토콜 모두 서로 다른 시스템 간에 소통하기 위한 규칙, 규약이다. API는 애플리케이션 간에 데이터를 주고받기 위한 인터페이스를 제공하고, 프로토콜은 데이터를 주고받기 위한 통신 규약을 정의한다. 따라서 API와 프로토콜은 서로 다른 개념이지만, 모두 시스템 간의 상호작용을 가능케 하는 핵심적인 개념이라고 이해해야한다.


3-2. 차이점

API는 "Application Programming Interface"의 약어로, 애플리케이션들이 서로 상호작용을 하기 위한 규약이라고 했고, 일반적으로 프로그래밍 언어에서 제공되는 라이브러리나 함수와 같은 인터페이스를 말한다. 즉, 어떤 서비스나 기능을 제공하는 소프트웨어의 기능을 외부에서 호출할 수 있는 규격이다.

반면, 프로토콜은 컴퓨터 네트워크에서 통신을 위한 규약이다. 예를 들어, HTTP는 웹 브라우저와 서버 간의 통신을 위한 프로토콜이다. 프로토콜은 데이터를 어떤 형식으로 주고받아야 하는지, 어떤 포트를 사용해야 하는지 등을 정의한다.

따라서 API와 프로토콜은 비슷한 개념이 아니고, 각각 다른 목적으로 사용된다. 또 한 번 반복하지만

  • API는 서로 다른 애플리케이션에서 상호작용하기 위한 인터페이스를 정의하는 것이고,
  • 프로토콜은 컴퓨터 네트워크에서 데이터를 주고받기 위한 규약을 정의하는 것이다.




profile
인생도 디버깅이 될까요? 그럼요 제가 하고 있는걸요

0개의 댓글