Network 4

IP / TCP / UDP

IP(Internet Protocol)지정한 IP Address로 데이터 전달Packet이라는 통신 단위로 나눠서 데이터 전달OSI 7계층 중 네트워크 계층IP 패킷 구성크게 Header, Data로 나눌 수 있음Data를 제외한 모든 부분은 Header포함 정보출발지 IP(Source address)목적지 IP(Destination address)전송 데이터(Data)기타 등등IP의 한계비신뢰성(Unreliable)흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않음중간에 패킷이 사라질 수 있음같은 패킷이 두 번 전송될 수 있음패킷이 순서대로 전송되지 않을 수 있음비연결성(Connectionless)전송 전에 미리 연결을 설정하지 않음단순히 목적지를 향해 목적지 주소를 담은 패킷을 전송..

Network/1. Common 2022.05.10

Stateless / Stateful

Stateless설명서버가 클라이언트의 상태를 보존하지 않음예시인터넷에서 책을 구매하는 경우Client: 책 상세정보 요청Server 1: 책 상세정보 표시Client: 책 2개 구매 요청Server 2: 책 2개 구매 페이지 표시Client: 책 2개 결제 요청Server 3: 책 2개 결제 및 구매 완료장점서버가 계속 달라져도(Server 1, Server 2, Server 3) 요청 처리 가능요청이 늘어나면 서버 증설 가능 (Scale-out)중간에 장애가 생겨도 다른 서버에서 처리 가능단점보내는 정보의 양이 많음Stateful설명서버가 클라이언트의 상태를 보존예시인터넷에서 책을 구매하는 상황Client: 책 상세정보 요청Server: 책 상세정보 표시Client: 2개 구매 요청Server: 책 ..

Network/1. Common 2022.05.10

RESTful API 설계

Method 주로 사용하는 HTTP Method는 다음 5개가 있다. GET POST PUT PATCH DELETE 서버에 따라 GET, POST 외에는 지원하지 않는 경우도 있다. 이 경우 PUT, PATCH, DELETE 대신 POST를 사용한다. 서버에 따라 GET 메소드의 HTTP Body를 받지 못하는 경우도 있다. 이 경우 클라이언트의 URL에 정보를 노출시키고 싶지 않거나 HTTP Body에 담아서 보내야 할 때 POST를 사용한다. 클라이언트 라이브러리에 따라서 GET 메소드에 HTTP Body를 보내지 못하는 경우도 있다. 이 경우 POST를 사용한다. JavaScript의 Fetch API (GET 메소드에서 HTTP Body 지원하지 않음) Member Schema { "id": 13..

Network/2. HTTP 2022.02.22

Spring RESTful API 특징

일반 Spring Framework는 Jackson 라이브러리를 통해 값을 매핑한다. Spring Framework는 HTTP Body와 URL 쿼리스트링에 들어있는 값을 받는다. HTTP Method, Content-Type, 파라미터 어노테이션(@RequestParam, @ModelAttribute, @RequestBody)에 따라 받는 값이 다르다. HTTP Body와 URL 쿼리스트링 값을 동시에 받는 상황에서 key가 중복되는 경우 파라미터 데이터 타입이 String이 아니라면 하나의 값만 받는데, HTTP Body 값을 우선으로 받는다. 파라미터 데이터 타입이 String이라면 컴마(,)로 구분하여 모든 값을 받는다. 파라미터 데이터 타입이 배열이나 Collection이라면 모든 값을 받는다...

Network/2. HTTP 2022.02.22