전체 글 64

TLP(Transport Layer Protocol) - 2. TCP(Transmission Control Protocol)

IP의 단점데이터 전달이 제대로 안 이루어질 수 있다.데이터를 보내기만 하고 잘 전달됐는지 확인할 수 없다.라우팅 과정에 패킷이 버려질 수 있다.framing이 제대로 안 이루어져 데이터가 손상될 수 있다.이러한 단점들을 보안하기 위해 만들어진 프로토콜이 TCP이다.  TCP(Transmission Control Protocol)TCP는 Connection-Oriented 커넥션 지향 프로토콜이다. 즉, 어플리케이션 소통이 끝날 때까지 커넥션이 꺼지지 않는다.TCP는 데이터가 잘 전달됐는지 확인한다. 그리고 제대로 전달이 안됐을 시 다시 보낸다. TCP는 IP 패킷 내부에 존재한다. 3 way 핸드쉐이크 과정 (TCP 연결 과정)1. (클라이언트 → 서버)Flag가 SYN(Syncronize)인 TCP를..

네트워크 2024.07.19

TLP(Transport Layer Protocol) - 1. 프로토콜과 포트

프로토콜프로토콜이란?인간들이 소통하기 위해 사회적으로 언어라는 규약을 지키고 있는 것처럼 컴퓨터도 컴퓨터간 소통을 하려면 규약을 지켜야 한다. 이러한 규약을 프로토콜이라 한다.  포트  대부분의 컴퓨터에서는 여러 개의 프로그램이 동시에 실행되고 있어서,이 여러개의 프로그램 중 어느 프로그램이 내가 접속하려는 프로그램인지 컴퓨터에게 알려 주어야 한다.여기서 포트 번호는 어떤 프로그램에 접속 할 것인지 컴퓨터에게 알려준다.    개발자가 자주 접하는 포트 넘버  포트 번호 규칙은 다음과 같이 알려져 있다.

네트워크 2024.07.18

동기/비동기 & 블로킹/논블로킹

동기와 비동기, 블로킹과 논블로킹은 프로그램의 실행 흐름과 리소스 관리에 중요한 역할을 한다.    동기(Synchronous)와 비동기(Asynchronous)   동기(Synchronous)와 비동기(Asynchronous)에 대해 이해하기 쉬운 이미지를 가져와봤다. 동기는 순차적으로 실행하며 작업이 완료할 때까지 대기해야 한다.비동기는 병렬적으로 실행하며 다른 작업의 완료를 대기하지 않아도 된다. 하지만 결과의 순서를 예측하기 어렵다.그래서 끝났을 때의 결과 이벤트 처리를 위해 콜백 함수나 promise 등을 준비해놓는다.  둘을 비교한 표를 보면 둘의 특징이 명확하다. 특성 동기 (Synchronous) 비동기 (Asynchronous) 작업 처리 방식순차적, 한 번에 하나의 작업병렬적, 여러..

FrontEnd/JavaScript 2024.07.18

(Java) 플로이드-워셜 알고리즘 (feat. 백준 11404번 문제 플로이드)

정의플로이드-워셜 알고리즘은 그래프에서 가능한 모든 노드 쌍에 대해 최단 거리를 구하는 알고리즘이다.시간복잡도는 O(N^3)이다. 음의 가중치를 가지는 그래프에서도 사용할 수 있다는 점이 다익스트라 알고리즘과 다른 특징.   설명임의의 노드 Start 에서 End까지 가는데 최단 거리를 구하기 위해 Start와 End 사이의 노드인 Mid에 대해 Start에서부터 Mid까지의 최단 거리와 Mid에서부터 End까지의 최단 거리를 전부 고려하는 것이 플로이드-워셜 알고리즘이다. 방법은 다음과 같다.시작 노드와 도착 노드의 가중치를 담은 2차원 배열 arr,s는 start 노드의 약자, e는 end 노드의 약자, m는 middle 노드의 약자라고 할 때,if(arr[s][e] > arr[s][m] + arr[..

알고리즘 2024.07.18

정적 바인딩 & 동적 바인딩

바인딩이란?프로그램의 변수나 함수 호출이 실제 메모리 주소와 연결되는 과정을 말한다.  정적(static) vs 동적(dynamic)정적(static)이란 한번 정해놓으면 변하지 않고 계속해서 유지되는 성질을 말하며,동적(dynamic)이란 상황에 따라서 실시간으로 변하는 성질을 말한다. 이러한 정의는 정적 바인딩과 동적 바인딩의 역할을 함축적으로 나타낸다.정적 바인딩, 동적 바인딩은 값이 확정되는 시점에 따라 나뉜다. 컴파일 시점에 바인딩이 일어나면 정적 바인딩,런타임 시점에 바인딩이 일어나면 동적 바인딩이다. 컴파일과 런타임에 대해서 간단하게 알아보고 가자.컴파일 : Java의 소스코드를 바이트코드로 변환하는 과정런타임 : 프로그램이 실행되는 동안의 상태 Java의 JVM은 바이트코드를 읽어들여 파일..

Java 2024.07.17

다중 상속

다중 상속이란?한 클래스가 두 개 이상의 부모 클래스로부터 특성을 상속받는 개념이다.Java에서는 클래스의 다중 상속을 직접적으로 지원하지는 않지만 인터페이스를 통해 유사한 효과를 낼 수 있다.  장점코드 재사용성 증가다양한 부모 클래스의 특성을 조합 가능단점다이아몬드 상속 문제: 같은 메소드가 여러 부모 클래스에 존재할 때 발생하는 모호성이 존재한다복잡성 증가: 클래스 계층 구조가 복잡해질 수 있다.  Java에서의 인터페이스를 통한 다중 상속 구현: 여러 인터페이스에서 같은 시그니처의 디폴트 메소드가 있을 경우 충돌이 발생할 수 있다.이럴 경우 메소드를 명시적으로 선택해줘야한다.interface Interface1 { default void commonMethod() { System..

Java 2024.07.17

static 메소드 vs 인스턴스 메소드

static 메소드와 인스턴스 메소드 항상 사용만 했었는데 왜 그런지는 생각해 본 적이 없었다. 그래서 사용하는 이유에 대해 정리할 필요가 있다고 느껴져 게시물을 작성하게 되었다. static 메소드static 메소드의 예시public class MathUtils { // static 메소드: 원의 면적 계산 public static double calculateCircleArea(double radius) { return Math.PI * radius * radius; } // static 메소드: 섭씨를 화씨로 변환 public static double celsiusToFahrenheit(double celsius) { return (celsius ..

Java 2024.07.17

DHCP(Dynamic Host Configuration Protocol)

네트워크가 작다면 직접 설계해도 괜찮지만, 크기가 크다면 DHCP를 사용하자.우리가 주로 사용하는 네트워크에서는 공유기에 DHCP 서버가 들어있다.  1. DHCP 서버를 찾는다.새로 연결된 디바이스에서 DHCP서버 Mac주소를 모르므로 스위치를 통해 브로드캐스트 Mac주소, 브로드캐스트 IP주소, Ethernet 프레임으로 스위치에 연결되어있는 모든 디바이스에 DCHP 메세지를 보낸다.  2. DHCP 제안DHCP가 응답을 똑같이 브로드캐스트로 보냄. 사용가능한 IP 주소를 보낸다.  3. DHCP 응답사용 여부 전달  4. DHCP 해당 IP주소를 사용할 때 필요한 정보들을 전달   DHCP 메세지Ethernet FrameIP PacketUDP SegmentDHCP Message이런 구조로 이루어져 ..

네트워크 2024.07.16

Private IP vs Public IP

IPv4의 IP 주소는 1990년대에 이미 바닥나기 시작했다.총 4바이트, 2^32개의 IP 주소를 가질 수 있다. (약 43억개)그래서 나타난 것이 Private IP.Public IP 공인 주소Private IP 사설 주소등록 O등록 X인터넷 서비스 공급자가 제공누구나 사용가능전세계 유일 IP 주소중복 IP 가능위치정보 有위치정보 無라우팅 가능라우팅 불가  Private IPClassIP Address RangeNetwork IDsNumber of AddressesA10.0.0.0 ~ 10.255.255.25510.0.0.0/816,777,216B172.16.0.0 ~ 172.31.255.255172.16.0.0 ~ 172.31.0.0/1665,534C192.168.0.0 ~ 192.168.255.2..

네트워크 2024.07.16