(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다. 1. 모든 것이 HTTP 일반적으로 휴대폰, 컴퓨터 등에서 필요한 데이터는 서버에 요청하여 받아온다. 네트워크를 통해 서버로부터 데이터를 가져오기 위한 통신으로 크게 HTTP 통신과 Socket 통신 2가지가 있다. 1. HTTP(HyperText Transfer Protocol) HTTP는 하이퍼 텍스트를 주고 받기 위한 규칙(통신 규약)이다. 2. HTTP 메시지에 모든 것을 전송 1) 거의 모든 형태의 데이터 전송 가능 - HTML, TEXT - IMAGE, 음성, 영상, 파일 - JSON, XML(API) 2) 서버 간에 데이터를 주고받을 때도 대부분 HTTP 사용 실무에서 통신할 때 TCP 프로토콜을 직..
(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다. 1. URI 1. URI? URL? URN? 1) URI(Unifrom Resource Identifier) URI = URL + URN Unifrom : 리소스 식별하는 통일된 방식 Resouce : 자원 = URI로 식별할 수 있는 모든 것(제한X) Identifier : 다른 항목과 구분하는데 필요한 정보 2) URL(Unifrom Resource Locater), URN(Uniform Resource Name) Locater : 리소스가 있는 위치를 지정 Name : 리소스에 이름을 부여 위치는 변할 수 있지만 이름은 변하지 않는다. URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않음 우..
4. PORT 1. 한 번에 둘 이상 연결해야 하면? 현재 클라이언트 PC에서 게임, 화상통화, 웹 브라우저 요청도 하고 있는 상황을 가정해보자. 즉, 클라이언트 PC가 여러 개의 서버와 통신해야 하는 상황이다. 서버가 클라이언트 PC로 패킷을 보내려면 클라이언트 IP로 패킷을 보내야한다. 하지만 IP만 사용하면, 클라이언트 입장에서는 받은 패킷이 게임, 화상통화, 웹브라우저 요청 중 어떤 프로그램으로 온 패킷인지 알 수 없는 문제가 있다. 그래서 프로그램을 구분하기 위해 PORT를 사용한다. 2. TCP/IP 패킷 정보 TCP/IP 패킷을 보면 출발지 IP, 목적지 IP와 함께 출발지 PORT, 목적지 PORT 가 포함된 것을 알 수 있다. - IP : 목적지 서버를 찾는 용도 - PORT : 서버 내..
3. TCP, UDP 앞서 보았던 IP 프로토콜의 한계점들을 해결해 주는 것이 바로 TCP 다. 1. 인터넷 프로토콜 스택의 4계층 2. 프로토콜 계층 채팅 프로그램에서 Hello, world! 라는 메시지를 보내는 상황을 가정한다. 1) 채팅 프로그램이 Hello, world! 라는 메시지를 생성한다. 2) 생성된 메시지를 SOCKET 라이브러리를 통해 OS 계층에 넘긴다. 3) OS 계층의 TCP 계층에서 메세지 데이터(Hello, world!)를 포함해 TCP 정보를 생성한다. 4) OS 계층의 IP 계층에서 TCP 정보를 포함해 IP 패킷을 생성한다. - IP 패킷: (IP 관련 정보 + (TCP 관련 정보 + (메시지 데이터))) 5) IP 패킷이 LAN 카드를 통해 나갈 때 Ethernet F..
(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다. 1. 인터넷 통신 1. 인터넷에서 컴퓨터 둘은 어떻게 통신할까? 만약, 클라이언트와 서버가 가까이 있으면 케이블로 2PC를 연결하여 통신할 수 있다. 하지만, 클라이언트와 서버의 거리가 멀면 그 사이에 있는 인터넷망을 통해서 Hello,world 라는 메시지를 보내야 한다. 2. 복잡한 인터넷 망 그런데 인터넷망은 너무 복잡하다! 클라이언트(출발지)에서 인터넷 망 내부의 수많은 중간 노드(서버)를 거쳐 메시지를 서버(목적지)로 전달해야 한다. 그럼 어떤 규칙으로 수많은 노드들을 거쳐 목적지에 메시지를 전달할까? 이를 이해하기 위해 IP 에 대해 학습한다. 2. IP(인터넷 프로토콜) 1. IP 주소 부여 메세지를..
(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다. 0. 소개 1. 개발 목표 1) HTTP의 전체 흐름 이해 2) 실무에 꼭 필요한 핵심 내용 3) 수 많은 예시와 그림으로 쉽게 설명 개발자는 평생 HTTP 기반 위에서 개발하기 떄문에, 한번쯤 HTTP 정리가 필요하다. 우리의 목표는 실무에 꼭 필요한 HTTP 기본 지식을 모두 습득하는 것이다! 2. 강의 대상 HTTP 기술을 사용하는 모든 개발자 - 모바일 앱 - 웹 프론트엔드 - 백엔드: 특히 도움이 많이됨(API URI 설계를 어떻게 할까 /GET, PUT, POST 무엇을 제공할까.. 등) 3. 강의 소개와 순서 1) 인터넷 네트워크 - 복잡한 인터넷 망: 데이터가 어떻게 흐르는지 - 프로토콜 계층: 프..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 8. 스코프와 프록시 이전에 사용했던 Provider 대신 프록시 방식을 사용한다. 1. 프록시 방식 1) MyLogger 프록시 적용 @Scope 속성으로 proxyMode = ScopedProxyMode.TARGET_CLASS 를 추가한다. - 적용 대상이 클래스 → TARGET_CLASS 선택 - 적용 대상이 인터페이스 → INTERFACES 선택 package hello.core.common; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.spr..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 7. 스코프와 Provider 첫번째 해결방안은 Provider를 사용하는 것으로 여기서는 간단히 ObjectProvider를 사용한다. 1. ObjectProvider를 사용하도록 코드 수정 생성되지 않은 myLogger 의존관계 주입으로 문제가 되었던 LogDemoController 와 LogDemoService의 코드를 ObjectProvider 를 주입받도록 코드를 수정한다. 1) LogDemoController 코드 수정 package hello.core.web; import hello.core.common.MyLogger; import lombok.RequiredArgsConstructor; import org.spri..