목록CS 지식/네트워크 (18)
개발놀이터
이번 포스팅에서는 애플리케이션을 설계할 때 한번쯤은 들어봤을 법한 단어인 RESTful에 대해서 알아보도록 하겠습니다. RESTful API는 현재 많은 애플리케이션에서 사용하고있는 설계방식으로서 이번 시간에는 왜 RESTful이 이렇게 인기가 좋은지, 단점은 뭐가 있는지에 대해서 알아볼겁니다. RESTful이라는 단어는 직역하면 "REST한" 정도로 해석할 수 있을 것 같네요 즉 REST한 API라고 볼 수 있습니다. 걸리는게 두가지 있네요 REST와 API, 이 두가지에 대해서 설명해야겠죠? 먼저 간단한 API에 대해 알아보고 REST에 대해 자세히 알아보겠습니다. API API란 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는 것입니다. 위의..
이번 포스팅은 TCP와 UDP가 무엇인지 각각의 특징은 어떤것이 있는지 차이점은 어떤게 차이점인지 그래서 이 둘은 어느상황에서 쓰는지에 대한 내용을 적어보도록 하겠습니다. 우선 TCP와 UDP는 TCP/IP의 전송 계층에서 사용되는 프로토콜입니다. 각각의 정의에 대해서 먼저 알아보도록 하겠습니다. TCP TCP를 해석하면 전송을 제어하는 프로토콜이라는 뜻입니다. 일반적으로 TCP와 IP를 함께 사용하는데 IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 됩니다. 여기서 패킷이란 인터넷 내에서 데이터를 보내기 위한 경로배정을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 합니다. TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환..
*캐시와 조건부 동작 캐시가 없을 때 첫번째 요청 예를 들어서 클라이언트가 GET방식으로 star.jpg를 요청하면 서버는 클라이언트에게 star.jpg를 보내준다. 캐시가 없을 때 두번째 요청 두번째 클라이언트가 GET방식으로 star.jpg를 요청하면 서버는 또 클라이언트에게 star.jpg를 보내준다. 캐시가 없을 때는 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야한다. 인터넷 네트워크는 매우 느리고 비싸다. 브라우저는 로딩 속도가 느리다 때문에 느린 사용자 경험이 생긴다. 캐시를 적용할 때 cache-control: max-age=60(초)을 설정하면 캐시가 유효한 시간이 60초이다. 클라이언트가 최초로 요청하면 브라우저 캐시에 60초 유효한 star.jpg를 저장하고 ..
*HTTP 일반 헤더 HTTP헤더 용도 -HTTP 전송에 필요한 모든 부가정보 -ex) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보...등등 -표준 헤더가 너무 많음 -필요시 임의의 헤더 추가 가능 HTTP헤더 분류 (과거) -General 헤더 : 메시지 전체에 적용되는 정보 -Request 헤더 : 요청 정보 -Response 헤더 : 응답 정보 -Entity 헤더 : 엔티티 바디 정보 HTTP바디 (과거) -메시지 본문은 엔티티 본문을 전달하는데 사용 -엔티티 본문은 요청이나 응답에서 전달할 실제 데이터 -엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보 제공 (데이터 유형(html, json), 데이터 길이, 압축 정보 등등) ㅡ..
*HTTP 상태코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1. 1xx : 요청이 수신되어 처리중 2. 2xx : 요청 정상 처리 3. 3xx : 요청을 완료하려면 추가 해동이 필요 4. 4xx : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5. 5xx : 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태코드가 나타나면? -클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? -클라이언트는 상위 상태코드로 해석해서 처리 -미래에 새로운 상태코드가 추가되어도 클라이언트를 변경하지 않아도 됨 ex) 299 = 2xx = 요청이 정상처리 되었구나 ex) 451 = 4xx = 클라이언트 오류구나 1. 1xx 요청이 수신되어 처리중 넘어가도 됨 2. ..
*HTTP 메서드 HTTP API URI 설계 회원 목록 조회 / read-member-list 회원 조회 / read-member-by-id 회원 등록 / create-member 회원 수정 / update-member 회원 삭제 / delete-member 이렇게 설계하는게 좋은 설계일까? 가장 중요한 것은 리소스 식별! 리소스의 의미는 뭘까? -회원을 등록하고 수정하고 조회하는게 리소스가 아니다 -ex) 미네랄을 캐라 -> 미네랄이 리소스 -회원을 조회해라 = 리소스? (X) / 회원 자체가 바로 리소스 리소스를 어떻게 식별하는게 좋을까? -회원을 등록하고 수정하고 조회하는 것을 모두 배제 -회원이라는 리소스만 식별하면 된다. -> 회원 리소스를 URI에 매핑 다시 API URI 설계 회원 목록 조..
*HTTP (HyperText Transfer Protocol) 원래 는 html을 전송하기위해 만들어졌지만 요즘은 html, text, image, 음성, 영상, 파일, json, xml 거의 모든 형태의 데이터 전송 가능 HTTP 특징 1. 클라이언트 서버 구조 2. 무상태 프로토콜, 비연결성 3. HTTP 메시지로 통신 4. 단순함, 확장 가능 1. 클라이언트 서버 구조 1-1. Request Response 구조 1-2. 클라이언트는 서버에 요청을 보내고, 응답을 대기 1-3. 서버가 요청에 대한 결과를 만들어서 응답 2. 무상태 프로토콜, 비연결성 무상태 = stateless 2-1. 서버가 클라이언트의 상태를 보존X 2-2. 장점 : 서버 확장성 높음 2-3. 단점 : 클라이언트가 추가 데이터..
*인터넷 네트워크 *IP (인터넷 프로토콜) 역할 1. 지정한 IP 주소에 데이터 전달 2. 패킷이라는 통신 단위로 데이터 전달 처음에 내가 원하는 정보를 상대방에게 전달하고 싶으면 IP패킷이라는 곳에 출발IP주소 도착IP주소를 적고 안에 메시지를 적어 넣고 인터넷에 던진다. 그럼 인터넷에서 도착 IP주소를 갈 수 있는 곳을 서로 물어가며 전달이 된다. IP프로토콜의 한계 1. 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 2. 비신뢰성 : 중간에 패킷이 사라지면? 패킷이 순서대로 안오면? 3. 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애클리케이션이 둘 이상이면? *TCP IP에서 생긴 한계점을 해결하기 위해 생겨난 개념이다. IP패킷에선 출발지IP, 목적지IP,..