목록분류 전체보기 (60)
yeon's blog

🌱 웹 브라우저 요청 흐름 웹 브라우저가 어떻게 동작 할까? 1. URL을 입력한다 2. DNS 서버로 IP를 찾아내고 생략된 PORT는 scheme로 찾아낸다 3. 웹 브라우저에 HTTP 요청 메시지가 생성된다 4. SOCKET 라이브러리를 통해서 찾은 IP와 PORT 정보를 TCP/IP로 3 way handshake 방식을 이용해 서버랑 연결한다 5. HTTP 요청 메시지는 OS에 있는 TCP/IP 계층으로 전달한다 6. TCP/IP 계층에서 HTTP 요청 메시지에 패킷으로 감싼다 7. 웹 브라우저가 만든 요청 패킷이 서버에 도착하면 서버가 패킷을 열어 HTTP 요청 메시지를 확인한 후 해석한다 8. 서버가 만든 HTTP 응답 메시지(TCP/IP 패킷을 감싸 전송)가 클라이언트에게 도착하면 클라이언트..

🌱 URI URI? URL? URN? URI 내부에 URL, URN이 포함되어 있다. URI는 로케이터(Locator), 이름(Name) 또는 둘다 추가로 분류될 수 있다. URI (Uniform Resource Identifier) Uniform: 리소스를 식별하는 통일된 방식 Resource: URI로 식별할 수 있는 모든 자원 Identifier: 다른 항목과 구분하는 데 필요한 정보 URL (Uniform Resource Locator) Locator: 리소스가 있는 위치 (→URI와 거의 같은 의미) URN (Uniform Resource Name) Name: 리소스에 부여한 이름 → URL과 URN의 차이점은 URL은 위치(Locator)로서 변할 수 있지만 이름(Name)은 변하지 않는다. ..
🌱 DNS DNS(Domain Name System: 도메인 네임 시스템) 구글 이라는 타이틀로 도메인을 설정하면 사람들이 쉽게 접근할 수 있음 (ex. www.google.com) 또 한 가지 DNS 서버를 사용하게 되면 다음과 같은 key, value 형태로 값이 저장하게 되는데, 도메인명 IP google.com 123.456.673.2 여기서 만약 구글의 IP가 변경된다고 해도 사용자는 그대로 도메인명인 google.com을 사용하면 됨 왜냐하면 value인 IP만 변경하면 되므로 도메인명은 그대로 사용

🌱 PORT 한 번에 둘 이상 연결해야 하면? 내 pc에 여러 어플리케이션(게임, 화상통화, 웹브라우저 등)을 돌리고 있다고 가정해보자! 이 경우에는 여러 서버랑 통신하게 된다. 여기서 서버쪽에서 각각의 어플리케이션의 패킷들이 내 pc로 올텐데.. 이 때!! 패킷들이 게임 패킷인지, 화상통화 패킷인지, 웹 브라우저 응답 패킷인지 구분을 할 수가 없다. → 그래서 한 IP안에 여러 어플리케이션 패킷을 구분 지을 수 있도록 `PORT` 를 사용한다. TCP/IP 패킷 정보 IP는 목적지 서버를 찾는 용도이고, 서버 안에서 돌아가는 애플리케이션들을 구분하는게 PORT이다. 같은 IP 내에서 프로세스 구분 PORT는 한 IP 내에 여러 어플리케이션이 돌고 있을 때 각 패킷을 구분짓기 위해 사용한다. 게임: 80..

🌱 TCP, UDP 프로토콜 4계층 IP 프로토콜의 한계점을 TCP 프로토콜이 해결해줌 1) 프로그램이 ‘Hello, World!’ 라는 메시지를 보낸다. 2) SOCKET 라이브러리를 통해 OS 계층에서 TCP 정보를 감싼다. 3) 그 밑에 IP 패킷이 생성되서 IP와 관련된 정보도 있고, 그 안에 TCP와 관련된 정보가 있다. 4) 이 메시지가 LAN 카드를 통해서 서버로 나갈 때 Ethernet frame을 포함해서 나가게 된다. → Ethernet frame: LAN 카드에 등록된 맥 주소의 물리적인 정보 TCP/IP 패킷 정보 출발지/목적지 PORT 전송 제어 순서 정보 검증 정보 → IP 프로토콜에서 해결이 안된 순서 제어 문제들을 해결할 수 있음!✨ ✨ ✨ TCP(Transmission Co..

🌱 IP(인터넷 프로토콜) IP 주소 부여 인터넷 망에서 컴퓨터들은 어떻게 통신할까? 예를 들어 클라이언트 옆에 서버가 있으면, 간단하게 케이블을 연결해서 'Hello, world!'라는 메세지를 보내면 통신이 된다. 그러나 클라이언트가 한국에 있고 서버가 미국에 있다면, 한국에 있는 클라이언트가 메세지를 보내기 위해서는 중간에 해저광 케이블이든 인공위성을 이용하든 수많은 서버들을 거쳐 미국에 있는 서버에게 보내야 할 것이다. 어떤 규칙으로 미국에 있는 서버에 안전하게 도착할 수 있는지를 이해하기 위해 우리는 IP 프로토콜을 알아야 한다! IP 역할 지정한 IP 주소(Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 클라이언트와 서버의 IP 주소가 있어야 하고, 서버에게 ‘..

SRP: 단일 책임 원칙(single responsibility principle) 하나의 클래스는 하나의 책임만 가져야 한다는 원칙. 💡 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것! OCP: 개방-폐쇄 원칙 (Open/closed principle) 확장에는 열려있으나 변경에는 닫혀 있어야 한다는 원칙. 소스코드 변경은 없고 다형성을 이용하여 객체 생성 코드만 늘어나게 한다. 💡 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요하다 → Config LSP: 리스코프 치환 원칙 (Liskov substitution principle) 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다는 원칙 💡 LSP를 이해하기 위해..

2년전 학교에서 배우며 정리해놓은 자료구조를 복습하며,,ㅎ 자료구조 자료(data)를 효율적으로 이용할 수 있도록 논리적으로 정의된 일정한 규칙에 의해 자료를 구분하여 표현한 것이다. 자료구조의 분류 1. 단순구조(Simple Structure) 컴퓨터가 기본적으로 제공하는 자료형 2. 선형구조(Linear Structure) 자료를 구성하는 데이터를 순차적으로 나열시킨 형태 3. 비선형구조(Nonlinear Structure) 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것을 의미 4. 파일구조(File Structure) 서로 관련있는 필드로 구성된 레코드 집합 파일에 대한 자료구조로, 보조 기억장치에 데이터가 실제로 기록되는 형태

1. Annotation 사전적 의미로 주석이라는 뜻 자바에서는 특별한 의미, 기능을 수행하도록 하는 기술 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter, setter를 생성하기도 함 2. Annotation 종류 @Component 개발자가 생성한 class를 Spring의 Bean으로 등록할 때 사용하는 Annotation @ComponentScan @Component, @Service, @Repository, @Controller, @Configuration이 붙은 클래스 Bean들을 찾아 Context에 bean을 등록해주는 Annotation @Bean 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean으로 만들 때 사용하는 Annotati..

🌱 Spring 🌱 Java 기반의 프레임 워크 Java 언어의 큰 특징인 객체 지향 언어를 살림 즉, 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 🌱 Spring Framework 특징 🌱 1. 제어의 역전(IoC, Invertion of Control) 제어의 역전: 객체의 제어권을 프레임워크의 컨테이너에게 넘기는 것 스프링 컨테이너에 Bean(객체) 등록시, 스프링 컨테이너에서 객체의 라이프 사이클(생성, 소멸)을 컨트롤 해준다. 즉, 객체에 대한 제어권이 스프링 컨테이너로 역전되는 것! 2. 의존성 주입(DI, Dependency Injection) 의존성 주입: 클래스간 의존성을 클래스 외부에서 주입하는 것 Spring에는 DI 컨테이너가 존재하여, 객체들 간의 의..