본문 바로가기

전체 글78

[Network] Network Layer:The Control Plane network control plane 을 설계하는 방법에는 두 가지가 있다. Per-router control 전통적인 방법으로, 각각의 모든 router 의 routing algorithm 이 control plane 내의 다른 router 들과 forwarding tables 를 계산하기 위해 상호작용한다. OSPF 와 BGP 이 per-router 기반의 프로토콜이다. Logically centeralized control logically centralized controller 가 각각의 모든 router 에 사용되는 forwarding tables 를 계산하고 분배한다. controller 는 각각의 router 에 있는 CA (control agent) 와 상호작용한다. 보통 CA 는 co.. 2023. 2. 3.
[Spring Security] JWT + OAuth2.0 적용해보기 - (2) https://mintgreentea.tistory.com/49 [Spring Security] JWT + OAuth2.0 적용해보기 - (1) spring security 학습과 Spring boot 에 JWT, OAuth2.0 적용을 위해 간단한 프로젝트를 진행해 보았습니다. 이번 프로젝트로 filter 기반의 Spring Security 아키텍처를 이해하고, JWT 와 OAuth2.0 의 이해 및 적용을 mintgreentea.tistory.com 위에서 진행한 프로젝트를 기반으로 OAtuh2.0 로그인을 추가해보았다. OAuth2.0 를 통해 access token 과 refresh token 을 받으면, 인증이 필요한 request 나 access token 재발급 등은 이전에 구현된 코드들로 .. 2023. 2. 2.
[Network] Network Layer:The Data Plane - IP(Internet Protocol) IPv4 Datagram Format datagram header 에는 다음과 같은 값들이 존재한다. Version number :IP protocol 의 version. IPv4 인지 IPv6 인지 알려주며 다른 version 의 IP 는 다른 datagram formats 을 사용함. 4 bits Header length : IP header 의 길이. 4 bits Type of service (TOS) : TOS bits 는 다른 종류의 IP datagrams 를 구분하도록 한다. 특히, real-time datagram 과 non-real-time traffic 을 구분할 때 유용하다. Datagram length : bytes 로 측정된 IP datagram 의 총 길이. 16bits 이므로 이.. 2023. 1. 26.
[Network] Network Layer:The Data Plane - What's Inside a Router router 는 Input ports, Switching fabric, Output ports, Routing processor 로 구성된다. Input port Line termination 과 Data link processing 은 input link 에 대해 physical layer 과 link layer 를 구현한 것이다. 각각 전기신호를 받아 frame 으로 만들어 주고, frame 을 packet 으로 만드는 역할을 한다. input port 에서 수행되는 lookup 이 router 의 핵심 동작이다. router 는 forwarding table 을 사용하여 도착한 packet 이 swtiching fabric 을 통해 어떤 output port 로 나갈지 찾는다. forwarding .. 2023. 1. 24.
[Network] Network Layer - Overview host H1 과 host H2 가 있고 그 사이의 path 에는 몇몇 router 들이 있다. H1 이 H2 로 information 을 보낸다고 가정하고 network layer 의 역할을 생각해보자. H1 의 network layer 는 H1 의 transport layer 를 통해 segments 를 받고, 각각의 segment 를 datagram 으로 캡슐화 시킨 후, 가까운 router 인 R1 으로 datagrams 를 보낸다. receiving host 인 H2 에서는, network layer 가 가까운 router 인 R2 를 통해 datagrams 를 받고, transport-layer segments 를 추출한 후, segments 를 H2 의 transport layer 로 보낸다.. 2023. 1. 23.
[Network] Transport Layer - TCP Congestion Control Congestion network congestion 은 너무 많은 source 들이 데이터를 너무 빠른 속도로 보내 발생한다. congestion 은 router buffer 에 overflow 를 일으켜 lost packets 을 초래하고, router buffer 의 queueing 을 일으켜 long delays 를 초래한다. router 에 대한 input packet 의 양이 증가하면 output packet 의 양도 증가하는 것이 이상적이다. 하지만, 현실의 network 는 router 의 buffer 는 finite 하고, multihop path 를 가지며 timeout 과 retransmission 이 일어난다. 이러한 특성들은 congestion 을 일으켜, input packet .. 2023. 1. 22.
[Network] Transport Layer - TCP : Connection-Oriented Transport - (2) Reliable Data Transfer TCP 는 IP 의 unreliable service 위에 reliable data transfer service 를 만든다. 따라서, process 가 TCP receiver buffer 에서 읽어온 data stream 은 ucorrupted, without gaps, without duplication, 그리고 in-sequence 를 보장한다. TCP 는 pipelined segments, cumulative acks, single retransmission timer 의 특징을 가지며, timeout events 와 duplicate acks 에 의해 retransmission 이 작동한다. TCP sender events TCP sender 에서 dat.. 2023. 1. 16.
[Network] Transport Layer - TCP : Connection-Oriented Transport - (1) TCP Connection TCP 는 connection-oriented protocol 이다. 데이터 교환 전에 반드시 "handshake" 를 통해 TCP connection 을 생성한다. TCP connection 은 full-duplex service 를 제공한다. 프로세스 간 TCP connection 이 있다면, 프로세스 간 양방향 통신(bi-directional data flow)이 가능하다. 또한, TCP connection 은 항상 single sender 와 single receiver 를 가지는 point-to-point 이다. TCP connection 이 생성되면, 두 application process 가 서로 데이터를 보낼 수 있게 된다. client process 가 serv.. 2023. 1. 12.
Nginx + Vue.js + Spring Boot 수동 배포하기 이전에 만들었던 게시판 프로젝트를 Ubuntu 20.04 에 수동 배포 해보았다. 1. Spring Boot 프로젝트 build Spring Boot 프로젝트를 jar 파일로 build 한다. build 방법은 2가지로 intellij 에서 하는 법과 콘솔창에서 하는 법이 있다. 1) intellij 에서 build 하기 intellij 의 gradle 탭에서 Tasks -> build 를 들어가면 bootJar 이라는 스크립트가 있다. 더블클릭하면 build 가 된다 2) 콘솔창에서 build 하기 gradlew.bat 있는 디렉토리에서 gradlew.bat build 명령어를 입력하면 build 가 된다. build 된 jar 파일은 build -> libs 에 들어가면 확인 가능하다. 참고로, gr.. 2023. 1. 9.