반응형

UDP 체크섬

UDP 체크섬(UDP Checksum)은 user Datagram Protocol(UDP) 데이터 그램의 오류 검출을 위해 사용되는 메커니즘이다.

UDP는 TCP와는 다르게 데이터 전송시 신뢰성과 오류 복구 기능을 제공하지 않기 때문에, 데이터의 정확성을 보장하기 위해선 추가적인 매커니즘이 필요하다. 이러한 오류 검출을 위해  UDP 체크섬을 사용한다.

 

UDP 체크섬은 UDP 헤더와 데이터를 포함한 UDP 패킷의 오류를 검출 하는데 사용된다. UDP 패킷은 송신측에서 체크섬을 계산해 송신 데이터에 추가하고, 수신측에선 수신한 데이터를 이용해 체크섬을 다시 계산한다. 만약에 수신측에서 계산한 체크섬과 송신측에서 추가한 체크섬이 불일치 할 시 오류가 발생한 것으로 간주해 패킷을 폐기하거나 재전송을 요청한다.

반응형

UDP 체크섬은 오류 검출을 위해 간단한 계산으로 이루어지는데, 송신 데이터의 각 바이트를 16비트 단위로 묶어서 더하고 이를 1의 보수를 취해 체크섬을 생성한다. 수신 측에서도 같은 방식으로 계산해 체크섬을 비교한다.

 

UDP 체크섬은 데이터의 정확성을 검증하는데 물론 도움을 주지만, 검출만을 위한 메커니즘으로 오류를 복구하는 기능은 제공하지 않는다. 

 

GBN이란? 

GBN(Go-back-N)은 네트워크 통신에서 사용되는 오류 복구 기법 중 하나이다. 일방향 데이터 흐름(흐름 제어 방식)을 사용하여 손상된 프레임을 재전송 하는 방법이다. 

 일반적으로 비연결형 프로토콜인 UDP와 함께 사용된다. GBN은 간단하고 효율적인 방법으로 오류복구를 수행한다. 하지만 데이터 전송 순서를 보장하거나 중복된 프레임을 제거하진 않는다. 데이터 전송 순서와 중복성에 대한 보장이 필요한 애플리케이션에는 GBN 대신 SR(Selective Repeat-선택적 재전송)을 사용하는 것이 더 적절하다.

 

GBN의 동작 원리는 다음과 같다.

 1) 송신 측 : 데이터를 프레임 단위로 분할하여 전송하고 각 프레임에 일련번호를 부여한다. 이 일련번호는 송신 측에서 보낸 프레임들의 순서를 나타낸다. 송신 측은 일정 개수의 프레임을 빠르게 전송하고, 이후에 확인 응답(ACK)을 받을 때가지 대기한다.

 2) 수신 측 : 수신 측에선 정상적으로 도착한 프레임은 확인 응답(ACK)를 보내고, 손상된 프레임은 폐기한다. 수신 측은 마지막으로 올바르게 순신한 프레임의 일련번호를 기억하고 이후에 올바른 순서로 수신되지 않은 프레임들을 버퍼링한다.

 3) 손상된 프레임 처리 : 수신 측이 손상된 프레임을 수신했을 경우에 송신 측은 손상된 프레임 다음부터 데이터를 전송하고, 수신 측은 다시 올바른 순서로 프레임들을 수신하기 시작한다.

 

반응형
반응형

요청 세그먼트는 다음 4가지 값을 주목합니다.

 1) 세그먼트 안의 출발지 포트 번호

 2) 출발지 호스트의 IP 주소

 3) 세그먼트 안의 목적지 포트 번호

 4) 목적지 IP주소

새롭게 생선된 연결 소켓은 이 4가지 값에 의해 식별된다.

반응형
반응형

라우팅(Routing) : 컴퓨터 네트워크에서 데이터 패킷을 목적지까지 전송하기 위한 경로를 결정하는 과정

라우터(Router) : 컴퓨터 네트워크에서 데이터 패킷을 전달하는 장비 

세그먼트 : 컴퓨터 네트워크에서 데이터 전송을 위한 작은 조각. 트랜스포트 계층에서 사용되고 주로 TCP 프로토콜에서 데이터를 분할하고 전송하는 단위로 사용됨.

반응형

데이터 그램(Datagram) : 네트워크 통신에서 사용되는 데이터의 단위. 패킷이라고도 불리며, 네트워크를 통해 전송되는 데이터를 작은 단위로 분할하여 보낼 때 사용됨.

역다중화 : 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업

다중화 : 출발지 호스트에서 소켓으로부터 데이터를 모으고 이에 대한 세그먼트를 생성하기 위해 각 데이터에 헤더정보로 캡슐화하고, 그 세그먼트들을 네트워크 계층으로 전달하는 작업

반응형
반응형

트랜스포트 계층 프로토콜과 네트워크 계층 프로토콜은 인터넷 프로토콜 스택의 두 가지 주요 계층입니다.

두 가지 주요 계층의 가장 큰 차이는 아래와 같습니다.

 

1. 트랜스포트, 네트워크 계층 프로토콜의 가장 큰 차이

- 트랜스포트 계층 프로토콜 : 각기 다른 호스트에서 동작하는 프로세스들 사이의 논리적 통신 제공

- 네트워크 계층 프로토콜 : 호스트들 사이의 논리적 통신을 제공

 

반응형

2. 트랜스포트, 네트워크 계층 프로토콜의 특징

 1) 트랜스포트 계층 프로토콜의 특징

 통신하는 두 종단 장치(end system) 간에 데이터 전송을 관리함. 주요 트랜스포트 계층 프로토콜에는 TCP와 UDP가 있음.

TCP와 UDP의 특징 및 차이 보기 <-

 

 2) 네트워크 계층 프로토콜의 특징

 네트워크 계층은 호스트 간의 데이터 패킷을 라우팅하고, 목적지까지 경로를 결정함. 주요 네트워크 계층 프로토콜로는 IP가 있음.

반응형
반응형

인터넷은 TCP와 UDP라는 두 가지 프로토콜을 가지고 있습니다. 둘 다 인터넷 프로토콜 스택에서 사용되는 전송 계층 프로토콜인데, 데이터를 안정적으로 전송하기 위하여 설계되었습니다. 

 

TCP와 UDP

1. TCP

- 연결 기반 프로토콜. 데이터 전송 전 클라이언트와 서버 간에 가상의 연결을 수립함.

- 신뢰성이 높음. 데이터 패킷이 손실되거나 오류 발생시 재전송을 수행하여 데이터의 정확성을 높임.

- 순서를 보장함. 전송된 데이터 패킷들의 순서가 보장되어 데이터를 수신 측에서 올바른 순서로 조립할 수 있음.

 - 흐름 제어를 수행함. 데이터의 흐름을 조절하여 데이터가 너무 빠르게 전송되어 수신측이 처리하지 못하는 상황을 방지함.

- 높은 오버헤드를 가짐. 연결 설정과 종료, 데이터 정확성을 위한 재전송 등에 추가적인 데이터와 처리 과정이 필요하기 때문에 오버헤드가 큼.

반응형

2. UDP

 - 비연결 기반 프로토콜. 데이터 전송 시 사전에 연결을 수립하지 않고, 데이터를 그냥 보냄.

 - 신뢰성이 낮음. 데이터 손실이나 오류에 대한 처리를 수행하지 않음으로 데이터의 정확성 보장을 하지 않음.

 - 순서를 보장하지 않음. 순서가 보장되지 않으므로 수신 측에서 데이터를 올바른 순서로 조립해야 함.

 - 흐름제어를 하지 않음. 데이터의 흐름을 조절하지 않으므로 과다한 양의 데이터를 보내면 수신 측이 처리하지 못할 수 있음.

 - 낮은 오버헤드를 가짐. 연결설정과 종료가 불필요하고 추가적인 데이터 정확성 처리도 수행하지 않기 때문에 TCP에 비해 오버헤가 작음.

 

3. 결론

TCP신뢰성과 정확성이 중요한 애플리케이션에 적합하고 웹 브라우징, 이메일, 파일 전송 등에 쓰임.

반면 UDP실시간 음성 및 영상 스트리밍, 온라인 게임처럼 신속한 데이터 전송이 필요한 애플리케이션에 적합함.

 

 

반응형
반응형

SNMP는 Simple Network Management Protocol의 약자입니다.

네트워크 장치들을 관리하고 모니터링 하기위해 사용되는 인터넷 프로토콜의 한 종류입니다. 주로 네트워크 관리 시스템(NMS)과 네트워크 장치간에 통신을 수행할 때 사용됩니다.

반응형

SNMP는 에이전트와 네트워크 관리 시스템(NMS)간 상호작용으로 구성됩니다.

에이전트는 모니터링 해야할 장비에 설치돼 해당 장비의 정보를 수집하고, 이것을 NMS에 전송합니다.

NMS는 이런 정보를 수신해 네트워크 상태를 모니터링 하고 필요한 관리 작업을 수행합니다.

SNMP네트워크 장비들에 대한 정보를 모니터링하고, 구성 변경을 관리하고, 장애 진단을 수행하는 등 다양한 관리 작업을 수행하기 위해 개발 됐습니다. 

 

주로 라우터, 스위치, 서버, 프린터 등과 같은 네트워크 장비들이 SNMP를 지원하고 있습니다.

SNMP는 단순하면서 확장 가능한 프로토콜로, 네트워크 관리와 모니터링에 많이 사용됩니다.

 

버전에 따라 보안 기능이 다양하게 개선되고 있습니다. 지금은 SNMPv3가 가장 보안성이 뛰어난 버젼입니다.

반응형
반응형

For문의 형태

for ( ①초기화식 ; ②조건식 ; ④증감식) {

    ③실행 문장;

}

for문의 형태는 여러가지지만 기본형태는 위와 같고 진행되는 순서는 아래와 같습니다.

 1) 초기화식이 가장 먼저 실행된다.

 2) 조건식을 평가 후 true(진실)이면 실행문③을 실행시키고 false(거짓)이면 for문을 종료한다.

 3) true여서 실행문③이 실행되었다면 {} 내부의 실행문장을 모두 실행시키고 증감식④를 실행 시킨 후 다시 한번 조건식② 를 평가하며 2)의 과정을 반복한다.

 

 

반응형
반응형

자료들을 크기 순서대로(오름차순으로) 나열하는 것을 정렬이라고 합니다.

예를 들어 7, 9, 4, 3, 10, 5, 8 를

3, 4, 5, 7, 8, 9, 10 으로 만드는 것이죠.

 정렬은 여러 응용분야에 사용되는 매우 기본적인 문제입니다.

정렬 알고리즘은 선택 정렬(Selection sort), 버블 정렬(Bubble sort), 삽입 정렬(Insertion sort)와 같은 간단한 정렬

병합 정렬(Merge sort), 퀵 정렬(Quick sort)과 힙 정렬(Heap sort), 계수 정렬(Counting sort)와 같은 고급 정렬 알고리즘으로 나눌 수 있습니다.

 

1. 선택 정렬 (Selection Sort)

 1. 선택 정렬의 특징

 선택 정렬은 가장 간단한 정렬 알고리즘 중 하나로 입력에 민감하지 않습니다. 또 항상 일정한 시간 복잡도를 가지고 있다는 특징이 있죠.

선택적 정렬은 하나의 원소가 남을 때까지 아래 사항을 반복합니다.

 (1) 최대(최소) 원소를 찾는다.

 (2) 최대(최소) 원소와 마지막 마지막(가장 앞에 있는) 원소를 교환한다.

 (3) 마지막(가장 앞에 있는) 원소를 제외한다.

 최대 원소를 찾고 마지막 원소와 위치를 교환하는 방식을 반복하는 것입니다. 이해가 잘 안되신다면 아래의 예시를 참고하실 수 있습니다.

 2. 선택 정렬 예시

  ① 첫 번째 과정(녹색은 최대 원소, 노란색은 정렬된 위치)

 ② 두번째 과정

 ③ 세번째 과정

 ④ 네번째 과정

 ⑤ 다섯번째 과정

 ⑥ 여섯번째 과정

 

3. 선택 정렬 수행시간

총 횟수가 (n-1)+(n-2)+...+2+1=n(n-1)/2  이기 때문에

 선택 정렬의 수행 시간은 모든 경우 O(n^2) 가 됩니다.

 

 

2. 버블 정렬(Bubble Sort)

 1. 버블 정렬의 특징

  버블 정렬도 선택 정렬과 마찬가지로 가장 큰 값을 오른쪽 끝으로 옮기는 정렬 알고리즘입니다.

버블 정렬 알고리즘은 하나의 원소가 남을 때까지 다음사항을 반복합니다.

 (1) 처음부터 마지막까지 차례대로 인접한 두 원소를 비교해 뒤에 있는 원소가 앞의 원소보다 작은 경우 두 원소를 교환한다.

 (2) 배열의 끝까지 (n-1)번 비교한 후에 마지막 원소를 정렬대상에서 제외하고 나머지 원소들에 대해 위의 과정을 반복한다.

 

 2. 버블 정렬의 예시

 버블 정렬의 과정은 아래와 같습니다.

 ① 첫번째 과정

 ② 두번째 과정

 

 ③ 세번째 과정 : 세번 째 단계에서 교환이 일어나지 않았다. 이것은 정렬되어 있음을 의미하여 정렬과정이 끝난다.

 

 3. 버블 정렬 수행시간 

 버블 정렬(Bubble Sort)의 시간 복잡도는 O(n^2)입니다.

이는 배열의 크기가 n일 때, 최악의 경우 인접한 모든 요소를 비교하여 정렬을 수행해야 하기 때문입니다. 이 때문에 배열이 클수록 수행 시간이 급격하게 증가하며, 일반적으로 다른 정렬 알고리즘보다 성능이 떨어집니다.

 또한, 버블 정렬은 이미 정렬된 배열을 정렬할 

반응형

+ Recent posts