본문 바로가기

전체 글71

[Network] TCP 연결과정에 대해 알아보자 전반적인 흐름은 이전에 정리했어요. [Network] OSI 7계층이란? [Network] http의 특징과 각각에 대해 간략히 설명해 주세요 TCP는 TCP/IP 모델의 3계층인 트랜스포트 계층의 프로토콜이에요. Port번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 데이터가 도달하게 하는 모듈(함수)에요. 데이터를 세그먼트(Segment, 출발지, 목적지 PORT, 전송 제어, 순서 검증 정보)로 감싸요 데이터 전달 보증, 순서를 보장 할 수 있는 이유는 3Way handshake과정이 있기 때문이에요. 애플리케이션 계층과 트랜스포트 계층 사이에는 소켓이라는 것이 존재해요. 소켓은 네트워크(트랜스포트 게층)에서 프로세스(애플리케이션)로 데이터를 전달하며, 프로세스로부터 네트워크로 데이터.. 2021. 6. 3.
[SpringBoot] Local-Memory 캐시를 사용해보자 @Service public class PathService { private static final Logger logger = LoggerFactory.getLogger(PathService.class); private final LineService lineService; private final StationService stationService; private final PathFinder pathFinder; ... @Transactional(readOnly = true) public PathResponse findPath(Long departure, Long arrival, LoginMember loginMember) { try { logger.info("캐시 되에에엠~"); List li.. 2021. 5. 31.
[Network] OSI 7계층이란? OSI(Open Systems Interconnection Reference Model) 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말해요. 계층이 나눠진 이유는? 통신이 일어나는 과정을 단계적으로 파악하기 위함이에요. 또한, 7단계 중 특정한 곳의 에러가 다른 단계로 번지지 않게 하기 위함이에요. 얼마나 중요한가? 최근에는 TCP/IP Model이 시장 점유에서 이겨, 그 중요성이 떨어지고 있어요. 하지만 이론적인 가치가 충분히 있고, 새로운 model이 나오더라도, OSI 7 Layer과 대비할 수 있기 때문에 여전히 중요해요. TCP/IP 모델의 과정은 이전 포스트에서 다뤘어요. 1. 물리(Physical) 계층 네트워크 노드 간의 물리적 케이블 또는 무선 연결을 담당해요 en.. 2021. 5. 24.
[Spring] 애플리케이션 컨텍스트 애플리케이션 컨텍스트 오브젝트 팩토리(직접 설정 정보를 넣어주는 것, DaoFactory)에 대응하는 것이 스프링의 애플리케이션 컨텍스트예요. 스프링에서는 이 애플리케이션 컨텍스트를 IoC컨테이너라 하기도 하고, 간단히 스프링 컨테이너라고 부르기도 해요. 또는 빈 팩토리라고 부르기도 해요. ApplicationContext는 빈 팩토리가 구현하는 BeanFactory 인터페이스를 상속했으므로, 같이 봐도 괜찮아요. 특정 클래스를 설정정보를 등록하고, @Bean이 붙은 메소드의 이름을 가져와 빈 목록을 만들어줘요. 애플리케이션 컨텍스트의 getBean() 메소드를 호출하면 자신의 빈 목록에서 요청한 이름이 있는지 찾고, 있다면 빈을 생성하는 메소드를 호출해서 오브젝트를 생성시킨 후 클라이언트에게 돌려줘요... 2021. 5. 13.
[SpringBoot] @SpringBootApplication @SpringBootConfiguration, @EnableAutoConfiguration 스프링 부트를 의존성에 추가하면 (implementation 'org.springframework.boot:spring-boot-starter-web') 아래와 같이 @SpringBootApplication 애노테이션이 붙어있는 메인 클래스를 확인할 수 있어요. @SpringBootApplication public class SpringBootApplication { public static void main(String[] args) { SpringApplication.run(SpringBootApplication.class, args); } } 메인 클래스 부분에서 코드를 수정하는 부분은 거의없지만, 서비스의 시작이라는 관점에서 굉장히 중요한 부분이라 생각해요. @SpringBootAp.. 2021. 5. 10.
[SpringBoot] HttpSession 대신 HandlerMethodArgumentResolver 사용하기 HandlerMethodArgumentResolver란? HandlerMethodArgumentResolver는 사용자 요청이 Controller에 도달하기 전에 그 요청에 포함된 파라미터들을 수정할 수 있게 해주는 역할을 해요. Controller에서 @RequestBody 어노테이션을 사용해 Request의 Body 값을 받아올 때, @PathVariable 어노테이션을 사용해 Request의 Path Parameter 값을 받아올 때 이 HandlerMethodArgumentResolver를 사용해서 값을 받아온다고 해요. 1. HttpSession을 @LoginUser로 변경하기 @PostMapping public ResponseEntity saveChess(@RequestBody final Ch.. 2021. 5. 3.
[AWS] Ubuntu Docker 설치 이전에 깔려있을 docker삭제 $ sudo apt-get remove docker docker-engine docker.io containerd runc 설치에 필요한 파일들 설치 $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release 도커 패키지 다운 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo \ "deb [arch=amd64 signed-by=/usr/sh.. 2021. 5. 2.
[AWS] EC2의 스토리지 용량 재부팅 없이 늘리기 [AWS] EC2의 스토리지 용량 재부팅 없이 늘리기 크게 2가지의 일을 해야해요. 웹페이지의 AWS console에서 수정, EC2 인스턴스에서 수정. 명령어를 통해 차근차근 알아가 보도록 해요. AWS console에서 수정 Aws 로그인 후 EC2 -> Elastic Block Store -> Volumes로 이동해요. 크기를 수정할 볼륨을 클릭 후 Actions → Modify Volume를 선택해요. 팝업에서, 크기를 선택해요. 그리고 수정을 눌러요. EC2 인스턴스에서 수정( 파티션 크기 조정 ) 1.기기에 연결된 블록 장치들을 나열해요 $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 55.5M 1 loop /snap/core18/19.. 2021. 5. 1.
[Network] DDos공격에 대응하는 법 먼저 Dos와 다른점을 살펴볼 필요가있어요 Dos(Denial of Service) Dos공격은 서비스 거부 공격의 약자로, 인터넷에 연결된 호스트의 서비스를 악의적으로 공격해 해당 시스템의 리소스를 부족하게 하여 사용자가 시스템 또는 네트워크 리소스를 사용할 수 없도록 만드는 사이버 공격이에요. 즉, 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 TCP 연결을 바닥내는 등의 공격이 이 범위에 포함돼요. DDos(Distributed DoS) 분산 서비스 거부 공격으로. 여러 대의 공격자를 분산적으로 배치해 동시에 서비스 거부 공격을 하는 방법이에요. 차이점 Dos는 공격자 PC에서 희생자 서버에게 바로 악의성 패킷을 보내요. 희생자가 공격자.. 2021. 5. 1.