728x90

HTTP 메소드는 클라이언트가 서버에게 수행하길 원하는 동작을 지정하는 데 사용된다. 주로 웹에서 자원(resource)에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행할 때 사용된다.

 

GET 메소드는 지정된 리소스를 검색하여 요청에 응답한다. 웹 페이지나 이미지와 같은 자원을 조회할 때 사용된다. 데이터를 조회하는 데 사용되므로, 서버의 데이터나 상태를 변경하지 않는다(idempotent). URL에 쿼리 문자열(query string)을 포함시켜 데이터를 서버로 전송할 수 있다.

 

POST 메소드는 요청된 자원을 서버에 제출하여 생성하거나 업데이트한다. 폼(form) 데이터나 파일 업로드를 서버로 전송할 때 사용된다. 데이터를 서버로 전송할 때 사용되며, 서버의 상태나 데이터를 변경할 수 있다. 데이터는 HTTP 메시지의 바디(body)에 포함되어 전송된다.

 

PUT 메소드는 명시된 리소스를 요청 payload로 전송된 데이터로 생성하거나 업데이트한다. 지정된 리소스의 상태를 업데이트하거나, 지정된 URI에 리소스를 생성할 때 사용된다. 서버의 리소스를 지정된 데이터로 대체한다. 리소스가 없으면 새로 생성할 수 있다(idempotent).

 

DELETE 메소드는 지정된 리소스를 삭제한다. 서버의 특정 리소스를 삭제할 때 사용된다. 서버의 리소스를 삭제하는 데 사용되며, 삭제 성공 여부는 서버의 구현에 따라 다를 수 있다(idempotent).

 

이 외에도 HTTP/1.1 스펙에는 HEAD, OPTIONS, TRACE, CONNECT, PATCH 등의 다른 메서드도 정의되어 있다. PATCH는 리소스의 부분적인 수정을 위해 사용되며, 나머지 메서드들은 특별한 경우에 사용되는 보조적인 메서드들이다.

 

REST API (Representational State Transfer API)는 분산 시스템 설계를 위한 아키텍처 스타일 중 하나로, 웹 기술을 사용하여 애플리케이션 컴포넌트 간에 정보를 교환한다. REST는 HTTP 프로토콜의 기본 원칙을 활용하여 구현되며, 각 리소스(데이터 항목)에 고유한 URI를 할당하고, 표준 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행한다.

 

REST API는 상태를 유지하지 않는(stateless) 통신을 지향하기 때문에, 각 요청은 독립적이며 요청 간에 클라이언트의 상태 정보가 서버에 저장되지 않는다. 이는 서버 설계를 단순화시키고, 확장성을 높이는 데 도움이 된다. REST API는 웹 서비스, 모바일 애플리케이션 백엔드, 클라우드 기반 서비스와 같은 다양한 분야에서 널리 사용된다.

 

DNS (Domain Name System)는 인터넷 상에서 도메인 이름(예: www.example.com)을 컴퓨터가 이해할 수 있는 IP 주소(예: 192.0.2.1)로 변환하는 분산형 데이터베이스 시스템이다. 사용자가 웹 브라우저에 도메인 이름을 입력하면, DNS 서버는 해당 도메인 이름에 해당하는 IP 주소를 조회하여 사용자의 요청을 올바른 서버로 안내한다. 이 과정은 사용자가 복잡한 IP 주소를 기억하지 않고도 웹 사이트에 쉽게 접근할 수 있게 해준다. DNS 시스템은 루트, TLD(Top-Level Domain), 그리고 권한 있는 네임 서버 등 여러 계층으로 구성되어 있다.

 

dns 서버 요청에 응답받음

 

HTTP 상태코드(Status Codes)는 서버가 클라이언트의 요청을 어떻게 처리했는지 나타낸다.

  • 1xx (정보적): 요청을 받았으며 프로세스를 계속 진행한다.
  • 2xx (성공): 요청이 성공적으로 수행됐다를 알린다. (예: 200 OK)
  • 3xx (리다이렉션): 추가 작업이 요청을 완료하기 위해 필요하다.
  • 4xx (클라이언트 오류): 클라이언트의 잘못된 요청. (예: 404 Not Found)
  • 5xx (서버 오류): 서버가 요청을 수행할 수 없음. (예: 500 Internal Server Error)
728x90

'네트워크' 카테고리의 다른 글

UDP, TCP/IP, OSI 7 Layer, Ethernet  (0) 2024.03.23
CDN(Content Delivery Network)  (2) 2024.03.22
728x90

UDP(User Datagram Protocol)는 연결이 없는 프로토콜로, 데이터 전송이 빠르지만 신뢰성은 낮다. 실시간 비디오 스트리밍, 온라인 게임 같은 상황에서 적합하다. TCP와 달리 1:1 or 1:n or n:m 통신이 가능하다.

 

UDP는 소켓 대신 IP를 기반으로 데이터를 전송하고, 데이터그램 단위로 전송되며, 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다. 흐름제어가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다. CheckSum 필드를 통해 최소한의 오류만 검출한다.

 

TCP/IP(Transmission Control Protocol/Internet Protocol)는 연결 지향적이며 데이터 전송이 신뢰성 있고 순서대로 이루어진다. 예를 들어, 웹 페이지 로딩, 이메일 전송 같은 작업에 사용된다. UDP와 달리 1:1 통신만 가능하다.

 

TCP/IP는 패킷 교환 방식과 전이중(Full-Duplex)과 점대점(Point to Point) 방식을 사용한다. 그리고 3-way handshaking을 통해 연결하고, 4-way handshaking을 통해 연결을 해제한다.

 

3-way handshaking:

3-way handshake는 두 장치 간에 안정적인 연결을 설정하는 데 사용되는 프로세스다. 데이터를 전송하기 전에 양쪽이 통신할 준비가 되었는지 확인한다.

 

  1. SYN(Sychronize): 연결을 시작하는 장치는 SYN 플래그가 설정된 패킷을 보낸다. 이 패킷에는 장치가 보내는 데이터 패킷의 순서를 추적하는 데 사용할 시퀀스 번호가 포함된다.
  2. SYN-ACK(Synchronize Acknowledge): 수신 장치는 SYN 및 ACK 플래그가 설정된 패킷으로 응답한다. ACK 플래그는 수신된 SYN 패킷을 확인하고 자체 시퀀스 번호를 포함한다.
  3. ACK(Acknowledge): 연결을 시작하는 장치는 수신된 SYN-ACK 패킷을 확인하는 ACK 플래그가 설정된 최종 패킷을 보낸다.

 

4-way handshaking:

 

4-way handshake는 연결을 종료하기 전에 양쪽이 데이터 전송을 완료했는지 확인한다.

 

  1. FIN(Finish): 한 장치는 더 이상 데이터를 보낼 수 없음을 나타내는 FIN 플래그가 설정된 패킷을 보낸다.
  2. ACK(Acknowledge): 다른 장치는 ACK패킷으로 FIN패킷을 확인한다.
  3. FIN(Finish): 수신 장치는 자체 FIN패킷을 보내 더 이상 데이터를 보낼 수 없음을 나타낸다.
  4. ACK(Acknowledge): 연결을 시작하는 장치는 수신된 FIN 패킷을 ACK 패킷으로 확인한다.

 

패킷의 전송 과정은 이렇다.

  1. 응용 계층: 브라우저는 HTTP 요청 메시지를 생성한다.
  2. 전송 계층: TCP 프로토콜은 HTTP 요청 메시지를 헤더와 데이터로 분할하고, 각 부분을 패킷에 담아 전송한다.
  3. 네트워크 계층: IP 프로토콜은 각 패킷에 목적지 IP 주소를 추가하고, 라우팅 테이블을 참고하여 최적의 경로를 선택하여 전송한다.
  4. 데이터 링크 계층: MAC 주소를 기반으로 패킷을 목적지 장치로 전송한다.
  5. 물리 계층: 전기 신호 또는 광 신호로 변환하여 전송한다.

 

패킷의 헤더 정보는 송신지 IP 주소, 목적지 IP주소, 프로토콜, 포트 번호, 데이터 길이, 체크섬이 있다.

 

OSI 7 계층은 네트워크 통신에 있어서 표준화된 모델이다.

 

  1. 물리 계층(Physical Layer): 실제 전기적 신호를 전송하는 계층이다. 케이블, RJ45 등이 여기에 해당한다. 여기에 속하는 리피터, 허브에는 NIC, 고유 MAC 주소가 없다.
  2. 데이터 링크 계층(Data Link Layer): 네트워크 장비 간의 데이터 전송을 담당하며, MAC 주소를 사용한다. 이더넷, 스위치, Wi-Fi 등이 여기에 속한다.
  3. 네트워크 계층(Network Layer): 다른 네트워크 간의 데이터 전송을 관리하며, IP 주소를 사용한다. 라우터, IP, ARP가 여기에 해당한다.
  4. 전송 계층(Transport Layer): 두 장치 간의 데이터 전송을 책임지며, 신뢰성 있는 데이터 전송을 보장한다. TCP, UDP가 이 계층에 속한다.
  5. 세션 계층(Session Layer): 통신 장치 간의 세션을 관리한다. 세션 생성, 유지, 종료 등의 기능을 담당한다.
  6. 표현 계층(Presentation Layer): 데이터 표현 방식을 관리하며, 암호화와 압축을 담당한다. 예를 들어, ASCII, JPEG, MPEG 등의 데이터 형식이 여기에 해당한다.
  7. 응용 계층(Application Layer): 최종 사용자와 가장 가까운 계층으로, 사용자의 응용 프로그램이 네트워크 서비스를 사용할 수 있게 한다. HTTP, FTP, SMTP, DNS 등이 여기에 속한다.

NIC(Network Interface Controller)는 데스크탑이나 노트북에 RJ-45를 연결할 수 있는 포트와 연결된 하드웨어 장치이다.네트워크 어댑터, 이더넷 카드 등으로도 불리며, NIC에는 컴퓨터를 식별할 수 있는 고유 MAC주소가 있다. 이 MAC 주소는 제조업체에서 설정되며, 사용자가 변경할 수 없다. MAC 주소는 48비트 길이의 고유한 식별자로, 일반적으로 16진수로 표현된다. 예를 들어, 00:1A:2B:3C:4D:5E과 같은 형식이다.

 

NIC

 

이더넷(Ethernet)은 컴퓨터 네트워크 기술의 하나로, 전 세계적으로 가장 많이 사용되는 LAN(Local Area Network)기술이다. 이더넷은 최대 100Gbps 이상의 빠른 속도로 데이터를 전송할 수 있으며, 오류 감지 및 수정 기능을 통해 안정적인 데이터 전송을 제공한다. 이더넷은 다양한 케이블과 장비를 사용하여 확장할 수 있고, 다양한 제조업체의 장비가 서로 호환된다.

 

CSMA/CD는 네트워크에서 충돌을 감지하고 처리하는 방식 중 하나로, 이더넷과 같은 네트워크 환경에서 사용된다.

 

Carrier Sense (CS): 장비가 데이터를 전송하기 전에 먼저 물리적인 채널인 전송 매체(예: 케이블)을 감지한다. 이는 다른 장비가 이미 데이터를 전송 중이면 기다리는 것을 의미한다.

 

Multiple Access (MA): 다중 액세스는 여러 장비가 동시에 전송 매체에 액세스할 수 있는 능력을 말한다. 이는 네트워크에서 여러 장비가 동시에 데이터를 전송할 수 있어야 하는 상황에서 중요하다.

 

Collision Detection (CD): 충돌 감지는 데이터 전송 중에 충돌이 발생하는지 감지하고, 충돌이 발생하면 적절히 처리한다. 이는 두 개 이상의 장비가 동시에 데이터를 전송하여 데이터가 손상될 수 있는 상황에서 중요하다.

728x90

'네트워크' 카테고리의 다른 글

HTTP Method, REST API, DNS  (1) 2024.03.23
CDN(Content Delivery Network)  (2) 2024.03.22
728x90
 

CDN은 어떤 서비스일까?

CDN은 전 세계에 분산된 서버 네트워크를 통해 웹 컨텐츠를 빠르게 제공하는 시스템이다. 사용자가 요청하는 웹 컨텐츠를 사용자에게 가장 가까운 서버에서 제공함으로써, 로딩 시간을 줄이고 사용자 경험을 개선한다. CDN은 웹사이트의 정적 컨텐츠(이미지, 스타일시트, 자바스크립트 파일 등)를 효율적으로 전송하는 데 자주 사용된다.

 

최초 사용자가 content를 요청하면 Edge Pop Server가 Origin Server에 데이터를 요청하고 Edge Pop server가 받은 데이터를 다시 최초 사용자에게 돌려준다. 그 후 이용하는 사용자들은 Edge Pop서버에서 데이터를 받을 때 Edge Pop에는 이미 Origin Server에서 받은 데이터가 있으므로 굳이 Edge Pop과 Origin Server의 데이터 송수신을 안 해도 되고 이후 사용자와 Edge Pop서버의 데이터 송수신만이 이루어진다.

https://www.cloudflare.com/ko-kr/learning/cdn/glossary/edge-server/

 

이렇게 되면 Origin Server와의 거리가 먼 사용자에게도 빠르게 content를 전달할 수 있고 Edge Server에서 content를 캐싱 하여 원본 부하가 줄고 콘텐츠 제공할 때 생기는 금액도 절약할 수 있다. 국내 서비스에서는 굳이 CDN이 필요가 없다. 비용 절감 면에선 필요하지만 기능상 크게 없어도 된다. 국내에서 데이터를 송수신하게 되면 거리가 짧기 때문에 중간 Edge Server가 크게 필요 없다, Starcraft나 League of Legends라는 온라인 PC 게임을 한국에서 외국 서버로 접속했을 때 거리가 멀기 때문에 ms 차이가 발생하는데, 이 ms 차이를 줄이기 위해선 CDN이 필수적이지만 국내에선 ms 차이가 나지 않기 때문에 리소스 비용 절감 등 비용적인 면으로만 사용하면 된다고 생각하면 될 것 같다.

 

https://ucwoogong.com/164

 

북미(미국, 캐나다)에서 한국 서버 게임 핑 줄이기

게임을 하는 경우 핑이 정말 중요하다. 미국에 산 지 오래되어도 비즈니스나 공부용으로 영어를 배워서 그냥 일상생활에서 계속 영어를 하게 되면 한국어보다 피로가 더 많이 쌓인다. 일과 후

ucwoogong.com

 

CDN은 Microsoft, Verizon, Akamai에서 제공하고 있고 각 기능별로 가격이 다른 Standard, Front Door, Premium 등 다양한 버전이 있다. CDN은 Profile과 Endpoint와 캐싱 개념이 중요하고 Domain, SSL, CORS, TTL 등을 기능에 맞게 커스텀 하는 게 중요하다.

728x90

'네트워크' 카테고리의 다른 글

HTTP Method, REST API, DNS  (1) 2024.03.23
UDP, TCP/IP, OSI 7 Layer, Ethernet  (0) 2024.03.23

+ Recent posts