💬 지연과 손실 네트워크 전송도 결국엔 물리적인 전파를 통해 전달되는 과정을 거치게 된다. 사람이 사람한테 무언가를 건내줄때 실수를 하듯이 전기 선들도 주위 환경적인 요소가 굉장히 중요하다. 여기서 오류가 생긴다면 지연이 발생할 확률이 굉장히 높아진다. 패킷이 송신측에서 출발해서 수신측까지 도달하기까지의 과정에서 수많은 라우터를 거치게 된다. 경로상의 각 노드에서 패킷은 다양한 지연을 겪게 되는데 노드 처리 지연, 큐잉 지연, 전송 지연, 전파 지연이 대표적이다. 해당 지연들이 쌓이고 쌓여 전체 노드 지연을 일으킨다. 💬 지연(Delay) Processing delay(처리 지연) 패킷 헤더를 조사하고 패킷을 어디로 보낼지 결정하는 곳 노드 처리 이후에 라우터는 목적지 라우터로 향하는 링크의 큐에 보내게..
ORM(Object relational mapping) 이란? 객체와 관계형 데이터 베이스의 데이터를 자동으로 매핑해주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용한다 객체 모델과 관계형 모델간의 불일치가 존재하고 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. 데이터 베이스 데이터 ◀ 매핑 ▶ Object 필드 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다. Persistant Api 라고도 한다 ( JPA, Hibernate ) 객체 - 관계 간의 불일치 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것은 아니기 떄문에 불일치가 발생 할 수 있다. 이를 ORM을 통해 객체 간의 관계를 바탕..
OSI 7계층과 TCP/IP 모델의 전송계층에서 사용되고 있는 프로토콜인 TCP 와 UDP는 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하고 있는 계층이다. 💬 TCP 데이터를 중요하게 생각하며 확실하게 주고 받고 싶은 경우 TCP 를 사용하게 된다. 통신을 하게된다면 서로의 컴퓨터끼리 '보냈습니다' 와 '받았습니다' 라고 서로 확인을 하면서 데이터를 주고 받으며 통신의 신뢰성을 가지게 된다. TCP 를 사용하는 예 ) 웹, 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스는 TCP를 사용한다. 특징 연결 지향 방식으로 패킷 교환 방식을 사용한다. 3-way-handshake, 4-way-handshake 과정을..
TCP의 혼잡 제어는 흐름 제어나 오류 제어와는 다르게 라우터를 포함한 넓은 범위의 전송 문제를 다루게 된다 💬 AIMD(Additive Increase / Multiplicative Decrease) 처음엔 패킷을 하나씩 보내고 문제가 발생하지 않는다면 윈도우 크기를 1씩 증가시킨다 패킷 전송에 실패하거나 일정 시간을 넘으면 패킷 전송 속도를 절반으로 줄인다. 네트워크에 늦게 들어온 호스트가 처음에는 불리하지만, 시간이 흐르면서 평형상태로 수렴한다 문제점은 초기에 네트워크의 높은 대역폭을 사용하지 못해서 오랜 시간이 걸리게 되고, 네트워크가 혼잡해지는 상황을 미리 감지하지 못한다. 즉, 네트워크가 혼잡해지고 나서야 대역폭을 줄이는 방식인 것이다. 💬 Slow Start AIMD가 네트워크 수용량 주변에..
전송계층에 해당하는 프로토콜인 TCP는 흐름제어, 오류제어, 혼잡제어를 제공하는데 흐름제어를 하는 방법을 알아보자 💬 Stop - And - Wait 컴퓨터 네트워크 설정에서 재전송을 기반으로 하는 신뢰적인 데이터 전송 프로토콜 중 하나가 ARQ프로토콜이다. 이 StopAndWait가 ARQ의 방식 중 하나이다. 이 방식에서 송신측 A가 B에게 1개의 프레임을 송신하게 되면 B는 해당 프레임의 에러 유무를 판단하여 A에게 ACK 혹은 NAK을 보내게 된다. 장점 과 단점 장점 구현 방식이 매우 단순하며 송신 측 내에 최대 프레임 크기를 버퍼 1개만 잡아도 이론적으로는 문제가 없다 오류 검출과 복구가 쉽다 단점 효율이 낮다 송신자가 매번 한개의 프레임만 전송하면 전송 성능이 느리고 채널의 활용도가 매우 낮..
💬 TCP 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 특징 신뢰적이고 연결 지향성 서비스를 제공하며 패킷의 추적 및 관리를 하는 역할이다. 연결형 서비스로 신뢰적인 전송을 보장하기 위해 handshake를 진행한다. 연결 시 : 3-way Handshake를 진행 연결 해제 시 : 4-way Handshake를 진행 흐름제어와 혼잡제어를 수행하게 되지만 이 때문에 속도 측면에서는 아쉬운 면이 있다 전 이중 방식, 점대점 방식이 있다. TCP-HEADER(With 플래그 정보) 패킷에는 어떤 패킷이 새로운 시도이고 기존 통신에 대한 응답인지 구분해야 했습니다. TCP Header에는 Code bit(Flag bit)라는 부분이 존재한다. 이 부분은 6bit로 구..
RESTful API RESTful API 를 지향하는 프로젝트는 상당수로 많다.그렇다면 RESTful API 가 무엇인지 알아야한다. 우선 RESTful API를 하나씩 뜯어서 알아보자 1. API 정의 API는 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트로도 볼수 있습니다. API를 사용하면 특정 소프트웨어의 구현 방식을 알지 못하더라도 제품 또는 서비스가 서로 의사소통을 할 수 있으며 개발을 보다 쉽고 편리하게 할 수 있도록 해주는 역할을 하게 됩니다. 비유를 해보자 우리가 손님인 버전 가게에 들어갔는데 점원이 존재하지 않습니다. 그렇다고 셰프가 저를 반기지도 않네요? 그럼 저는 가게에 멀뚱멀뚱 앉아있어야 합니다. 우리가 셰프인 버전 오늘 저의 가게 준비는 완벽합니다. 재료도 완벽하고..
웹 개발의 대표 에러 CORS CORS 는 추가 HTTP 헤더를 사용해서, 한 출처에서 실행 중인 웹 어플이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에게 알려주는 역할이다. 웹 어플은 리소스가 자신의 출처와 다를때 교차 출처 HTTP 요청을 실행하게 된다. ▶ Origin ? (출처) 아까부터 계속 출처가 어쩌구저쩌구 하는데 출처가 뭘까?? 위에 그림을 보면 Protocol 과 Host 와 Port 이 3가지가 맨 앞에 있는데 이 3가지가 같은 것을 동일 출처(Same-Origin)이라고 한다 뒤에 나머지는 달라도 상관없지만 앞에 3개가 다르다면 다른 출처라는 뜻이다 ▶ SOP(Same - Origin - Policy) 위에서 본것처럼 출처가 굉장히 중요한데 먼저 동일한 출처..
스택(Stack) 스택의 특징 LIFO(후입선출)의 자료구조이다. pop() 을 통해 데이터를 빼고 push()를 통해 데이터를 넣는다. 활용 예시로는 후위표기법 연산, 괄호 유효성 검사, 웹 브라우저 방문 기록, 깊이 우선 탐색(DFS) 가있다 시간 순서상 가장 최근에 추가한 데이터가 가장 먼저 나오는 후입선출형식으로 데이터를 저장한다 데이터를 넣고 빼는데는 O(1)의 시간 복잡도가 필요하다. 재귀적인 특징이 있다 큐(Queue) 큐의 특징 FIFO(선입선출)의 자료구조이다 enqueue와 dequeue로 구성되어있다. 활용예시로는 프린터, CPU task scheduling, Cache 구현, 프로세스 관리, 너비우선 탐색(BFS) 등이 있다. 구현 방식에는 두가지가 있다. Array - Based ..
Java 말그대로 java를 뜻하고 Collections 어떤 일정한 부류의 것을 수집하여 한 공간에 모아놓은 것들을 가공하고 처리할 수 있도록 지원하는 자료구조 FramWork 어떤 문제를 해결하기 위한 뼈대 기본 구조라 하면 우리가 떠올려야 할것은 Interface이다. 인터페이스 자체가 껍데기를 뜻한다. 그럼 자바에서 지원하는 껍데기는 무엇이 있을까? 바로 List, Queue, Set 으로 구성되어 있다 물론 가장 대표적인 것이다. List 의 구현체 ArrayList LinkedList Vetor ( Stack ) Queue 의 구현체 PriorityQueue Deque 의 구현체 ArrayDeque LinkedList ( 또 나오는 이유가 있다 ) Set 의 구현체 HashSet LinkedH..