DNS는 TCP인가요, UDP인가요DNS는 기본적으로 UDP 프로토콜 (UDP/53)을 이용하여 빠른 속도를 추구하지만, 안정성이 요구되는 특수한 상황에서는 TCP (TCP/53)를 이용한다.UDP가 사용되는 경우용도 : 짧고 빠른 쿼리 처리가 요구될 때 (DNS 쿼리는 보통 짧고 빠르게 처리되야 하기 때문에 일반적)예시: 512 byte 이하의 일반적인 DNS 질의 및 응답TCP가 사용되는 경우용도 : 신뢰성 있고 보장된 전송이 우선시될 때예시 1: 메시지 크기가 512 byte를 넘는 경우네이버, 구글 같이 www로 매핑된 서버가 많은 경우 메시지 사이즈가 512 bytes를 넘을 수 있으며, 그 경우 tcp로 재질의하여 응답을 받는다.예시 2: Zone transfer안정성을 위해 두 개 이상의 D..
Old
개요OSI 는 Open Systems Interconnection의 약자로, 컴퓨터 네트워크 아키텍처를 설명하기 위한 개념적 모델이다. OSI 7 계층은 다음의 이점을 제공한다. 모듈화독립적으로 설계되어 특정 기능을 수행하므로, 계층 간의 관련성(결합도)을 낮춰 모듈화를 가능하게 한다.이는 개발, 유지보수, 업그레이드, 장비 교체 등을 용이하게 만든다.상호 운용성표준화된 프로토콜과 인터페이스를 사용하여 상호 운용성을 제공한다.이는 다른 장치나 시스템 간에 데이터를 교환하고 통신할 수 있게 만든다.유연성독립적으로 개발되고 업데이트할 수 있기 때문에, 네트워크 통신의 특정 부분만 변경/개선하는 것이 가능하다.문제 해결 및 디버깅각 계층의 독립성으로 인해 문제를 특정 계층으로 한정시켜 진단하고 해결할 수 있다..
정의보안 분야에서 Signature는 해를 거쳐 다양한 의미로 사용되었다.하지만 Snort에서 Signature는 "공격(exploit)에 존재하는 고유한 표시(mark)나 특징들에 기댄 여러 탐지 방식"을 의미한다. 특징이러한 Signature 들은 특히 알려진 공격 방식을 탐지하기 위해 설계되었는데, 이는 이들이 실제로 취약점을 공격하는 것과 연관이 있을 수도 있는 ego string, 고정된 offset, debugging 정보 같은 고유한 mark를 포함하고 있기 때문이다. 실제 public 공격 방식이 이런 유형의 탐지가 동작하는 방식에 필수적이기 때문에, 해당 탐지 유형은 일반적으로 사후탐지 (day-after detection) 로 분류된다. Anti-Virus 회사들은 virus 발생 시 ..
이 책을 읽고, 창의성을 함양하는 것이 다른데 있는 것이 아니라 몰입에 있다는 것을 확신할 수 있었다. 천재와 일반인의 차이가 한 가지 문제에 대해 해결할 때까지 몰입 상태를 유지할 수 있는가에 있다는 관점은 신선했다.흔히 노벨상을 타는 사람들은 그 분야에 재능이 있어 일가견을 이룬 것으로 여겨지고, 진리라고까지 생각된다. 그런데 이런 천재들과 일반인의 차이가 몰입 능력으로 판가름된다는 해석은 굉장히 독특하면서도 참신하다고 생각되었다. 이처럼 천재가 될 수 있는 방법 뿐 아니라 매슬로우의 욕구 위계의 최상위층인 자아 실현을 실천하는 방법도, 인생을 한 점 부끄럼과 후회 없이 보낼 수 있는 방법도 모두 몰입에 있다는 관점과 이를 뒷받침하는 사례들을 읽을 때마다 '나도 저렇게 되고 싶다'라는 선망과 욕구가 ..
문제 출처 : https://www.acmicpc.net/problem/12852 소요 시간 : 풀이(55m) + 더 좋은 풀이(15m) 문제 시도 & 풀이 일단 DP로 풀었다. package coding.DP3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class bj_12852 { static Point[] points; public static void main(String[] args) throws IOException { int N = read(); solve(N, 0); printResult(N); } static ..
명령형 프로그래밍과 선언형 프로그래밍은 프로그래밍 언어의 두 가지 주요 패러다임입니다. 이 두 가지 유형은 다음의 한 문장으로 간단히 설명할 수 있습니다. 명령형 프로그래밍은 어떻게(how) 할지 표현하고, 선언형 프로그래밍은 무엇을(what) 할 건지 표현한다. 명령형(Imperative) 프로그래밍 명령형 프로그래밍은 "어떻게" 목표를 달성할지에 중점을 둡니다. ※ 특징 - 프로그래머는 상태와 상태를 변경하는 명령문을 사용하여 프로그램의 흐름을 제어합니다. ex. C, C++, Java - 명령문의 순서와 효과에 초점을 맞추기 때문에 병렬 처리가 어렵고 코드 복잡성이 증가합니다. 선언형(Declarative) 프로그래밍 선언형 프로그래밍은 "무엇"을 달성할지에 중점을 둡니다. ※ 특징 - 프로그래머는..
문제 출처 : https://www.acmicpc.net/problem/1450 소요 시간 : 풀이(1h) 문제 시도 투 포인터의 최종 문제로 난이도가 상당했다. 일단 일반적인 접근법인 start, end의 두 기준으로 투 포인터를 구현했는데, 풀다보니 해당 문제는 경우의 수까지 고려해야 하는 문제라는 걸 알게 되었고, 결국 다른 사람의 풀이를 참고했다. 풀이 해당 문제의 접근법은 다음과 같다. N을 반으로 나누어 start ~ N/2, N/2 ~ end 범위에서 각각 완전탐색을 하여 만들 수 있는(C 이하) 모든 무게를 찾아 각각 배열(aSum, bSum)에 담는다. aSum, bSum 중 하나를 기준으로 이진탐색을 수행해야 하기에 기준이 아닌 다른 배열을 오름차순으로 정렬한다. aSum 각각의 모든 ..
체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception)의 주요 차이는 예외 처리의 강제 여부에 있습니다. 체크 예외는 RuntimeException 클래스를 상속하지 않은 예외로, 개발자가 이를 처리하도록 강제합니다. 예시로는 FileNotFoundException, RuntimeException 등이 있습니다. 장점 컴파일 시간에 강제로 예외 처리를 유도하여 안정성을 높입니다. 예외 처리를 강제함으로써 코드의 가독성과 유지보수성이 향상될 수 있습니다. 단점 너무 많은 예외 처리 코드가 필요할 수 있어 코드의 복잡성이 증가할 수 있습니다. 예외 처리를 강제함으로써 개발자의 부담이 커질 수 있습니다. 체크 예외가 발생할 수 있는 코드는 try-catch 블록으로 감..
문제 출처 : https://www.acmicpc.net/problem/1806 소요 시간 : 시도(40m) + 풀이(30m) 문제 시도 문제를 제대로 이해하지 않고 '그냥 투 포인터 쓰면 되겠지' 하면서 정렬하기 시작하면서 꼬이기 시작했고, 결국 40분을 온전히 낭비하고 장렬히 실패했다. 아래는 문제가 뭔지도 모르고 바보 같이 작성한 코드다. // n (수열 요소 범위) : 1 ~ 10,000 // N (수열 길이) : 10 ~ 100,000 // S (목표 합) : 1 ~ 100,000,000 import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { Buffer..