분류 전체보기

Computer Science/네트워크

[강의] HTTP 상태코드

김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 듣고 정리를 위해 작성한 포스팅입니다. HTTP 상태 코드 상태코드란 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 우리가 흔히 웹서핑을 하다가 만나게 되는 404와 같은 에러가 상태코드이다. 다음과 같이 백의 자리 번대에 따라 상태코드를 분류할 수 있다. 만약에 응답에서 모르는 상태코드가 나타나면 어떻게 될까? 클라이언트가 인식할 수 없는 상태코드가 반환되거나 새로운 상태코드가 생성된 경우에는 클라이언트는 상위 상태코드로 해석해서 처리하게 된다. 예를 들면, 299번이라는 모르는 코드가 들어오면 200번대로 해석하고 499번이 들어오면 400번대로 해석한다. 이제 각 상태코드에 대해 알아보자. 1xx (Informat..

Computer Science/네트워크

[강의] HTTP 메서드 활용

김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 듣고 정리를 위해 작성한 포스팅입니다. 클라이언트에서 서버로 데이터 전송 지금까지 서버에서 클라이언트의 요청을 어떻게 받는지에 대한 내용을 다뤘다. 이번에는 클라이언트에서 서버로 데이터를 전송할 때 어떠한 방법으로 전송하는지에 대해 알아보겠다. 클라이언트에서 서버로 데이터를 전송하는 방법에는 크게 2가지의 방식이 있다. GET 방식을 이용하여 주로 검색어나 정렬 필터 등에 사용되는 쿼리 파라미터를 통한 전송 방법과 POST, PUT, PATCH 방식을 이용한 회원 가입, 상품 주문, 리소스 등록 및 수정 등에 사용되는 메시지 바디를 통해 전송하는 방법이 있다. 클라이언트에서 서버로 데이터를 전송하는 4가지 상황에 대해 각각 어떤 방식을 통..

Computer Science/네트워크

[강의] HTTP 메서드

김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 듣고 정리를 위해 작성한 포스팅입니다. HTTP API를 만들어보자 회원 정보 관리 API를 만드는 업무가 주어졌다고 가정해 보자. API에는 회원 목록 조회, 회원 조회, 회원 등록, 회원 수정, 회원 삭제 기능이 필요할 것이다. 그럼 uri을 어떻게 구성해야 할까? 아마 처음이라면 메서드 이름을 짓듯이 이와 같이 uri로 구성하게 될 것이다. 회원 목록 조회 - /read-member-list 회원 조회 - /read-member-by-id 회원 등록 - /create-member 회원 수정 - /update-member 회원 삭제 - /delete-member 이 방법은 좋은 uri설계라고 볼 수 없다. uri을 정할 때 가장 중요한..

DevOps

iptables를 이용한 포트포워딩

지난 시간에 스프링부트 프로젝트를 AWS EC2에 배포하였고 도메인 주소를 통해 접속을 하려 했을 때 포트번호를 적지 않으면 원활하게 접속이 되지 않는 것을 확인했다. 이번 시간은 포트포워딩을 통해 HTTPS의 포트 번호 443번으로 요청을 보내도 자동으로 Tomcat이 받을 수 있게 8080포트로 리다이렉 시켜주는 작업을 진행하자. 포트포워딩? 포트포워딩은 사전적 정의로 컴퓨터 네트워크에서 패킷이 라우터나 방화벽과 같은 네트워크 게이트웨이를 가로지르는 동안 하나의 IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 네트워크 주소 변환(NAT)의 응용이다. 쉽게 설명하면 어떤 요청이 들어오면 내가 원하는 위치로 던질 수 있도록 해주는 작업이다. 우리가 배포한 서비스가 HTTPS를 이용하니까 ..

DevOps

Nginx와 Certbot를 통해 인증서 발급 및 Spring boot 프로젝트 빌드하기

이번에는 Nginx와 Certbot를 이용하여 인증서를 발급받고 Spring boot로 만든 프로젝트에 적용하여 빌드하는 과정이다. 이번 작업은 대부분 EC2 서버에서 진행하게 된다. 1. Nginx 설치 웬만한 작업을 하는 곳에 "sudo"를 붙여 사용하는 것을 권장한다. ("su"를 통해 슈퍼유저 권한을 아예 획득 후 사용하는 방법도 있다) 아무래도 권한이 필요한 작업을 하다 보니 슈퍼유저 권한 없이 진행되는 것이 제한되는 경우가 많다. sudo apt update sudo apt upgrade sudo apt install nginx EC2 서버에 접속하여 해당 명령어를 실행하여 nginx를 설치하자. sudo service nginx start sudo service nginx status 그다음..

Computer Science/네트워크

[강의] HTTP 기본

김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 듣고 정리를 위해 작성한 포스팅입니다. 모든 것이 HTTP HTTP(HyperText Transfer Protocol) HyperText인 HTML을 전송하기 위한 프로토콜로 시작했고 오늘날에는 HTML, TEXT, 이미지, 영상, JSON, 서버 간의 데이터 전송 등 모든 것을 HTTP에 담아 전송한다. HTTP의 역사 HTTP/1.1 - 1997년: 가장 많이 사용되고, 우리에게 가장 중요한 버전 HTTP/2 - 2015년: 성능 개선 HTTP/3 - 진행 중: TCP 대신에 UDP 사용, 성능 개선 HTTP의 특징으로는 다음과 같다. 클라이언트 서버 구조 무상태성 비연결성 HTTP 메시지 단순하고 확장 가능 클라이언트 서버 구조 HT..

Computer Science/네트워크

[강의] URI와 웹 브라우저 요청 흐름

김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 듣고 정리를 위해 작성한 포스팅입니다. URI(Uniform Resource Identifier) URI는 Locater, Name 또는 둘 다로 분류될 수 있다. URL은 리소스가 있는 위치를 지정한다. URN은 리소스에 이름을 부여한다. 위치는 변하지만, 이름은 변하지 않는다. 이름만으로 실제 리소스를 찾는 방법은 보편화되지 않았고 잘 사용하지 않는다❗️ URL 문법 scheme://[userinfo@]host[:port][/path][?query][#fragment] Scheme 주로 프로토콜에 사용 ex) http, https, ftp 등 Userinfo 사용자 정보가 포함 거의 사용하지 않는다 host 도메인 명 or IP Add..

Computer Science/네트워크

[강의] 인터넷 네트워크

김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 듣고 정리를 위해 작성한 포스팅입니다. 인터넷 통신 클라이언트와 서버가 통신을 할 때 거리가 먼 경우 인터넷 망을 이용해야 하는데 인터넷 망은 복잡하다. 안전하게 데이터를 보내기 위해서는 어떻게 해야 할까? IP(인터넷 프로토콜) 지정한 IP주소에 패킷이라는 통신 단위로 데이터를 전달한다. 패킷에는 출발지 IP, 목적지 IP 등으로 구성 노드를 통해 목적지까지 도달❗️ IP를 이용하면 원활하게 통신이 가능할까? ❌ -> IP의 한계점이 있다. 비연결성 상대가 없거나? 통신이 불가능한 상태일 때? 비신뢰성 중간에 패킷이 손실 패킷 순서의 꼬임 (전송 시 계속 경유하는 노드가 달라짐) 프로그램 구분 여러 애플리케이션을 사용한다면? 이러한 한계..

yuki-kim
'분류 전체보기' 카테고리의 글 목록