전공 수업 CS
[컴퓨터 네트워크] TCP 혼잡 제어
▶ Congestion Control - 너무 많은 출발지(네트워크 장비)에서 네트워크가 감당하기에는 너무 많은 데이터를 너무 빠르게 전송하여 발생하는 네트워크 혼잡 현상이다. - 징후 라우터에서 버퍼가 오버플로우되어 패킷 손실의 발생 라우터 버퍼에서 긴 큐잉 지연(Queueing delay) 발생 - 흐름 제어(Flow Control)와는 다르다. ▶ 라우터가 무한한 크기의 버퍼를 갖는 경우 - 출력 링크의 수용력을 R이라고 가정했을 때, 전송률이 아무리 커도 링크 처리량(수용력)은 R/2을 넘을 수가 없다. 지연 시간이 지수적으로 증가하므로 혼잡 시 큰 지연이 발생한다. 출처 ▶ 라우터가 유한한 크기의 버퍼를 갖는 경우 - 송신측에서는 타임아웃된 패킷(손실 패킷)의 재전송이 이루어진다. 즉, 큐가 유..
[컴퓨터 네트워크] IPv6 and Tunneling - IPv6 주소 체계 | 터널링
터널링이란 캡슐화를 이용하여 한 네트워크에서 다른 네트워크를 거쳐 안전한 통신을 할 수 있도록 해주는 것이다. 터널링은 두번째 네트웍에 의해 운송되는 패킷들 내에 네트웍 프로토콜을 캡슐화함으로써 운영된다. ▶ Tunneling - 모든 라우터가 동시에 업그레이드되어질 수 없어서 실제로 IPv6가 보편화되기에는 시간이 걸림 - 그래서 터널링(tunneling) 기법을 통해 IPv4와 IPv6를 혼용하여 사용한다. - Tunneling : IPv4를 사용하는 라우터들 사이에서 IPv6 데이터그램이 IPv4 데이터그램 안에 payload로써 이동되어지도록 IPv6를 IPv4로 캡슐화하는 기법이다. - IPv4와 IPv6 모두 허용하는 라우터마다 IPv6를 IPv4로 캡슐화하고, 도착지에서 받은 데이터는 헤드가..
[컴퓨터 네트워크] ICMP(Internet Control Message Protocol)
전공공부중에 개념정리가 필요한 것 같아서 작성한다. ICMP(Internet Control Message Protocol) ICMP는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다. IP에는 오로지 패킷을 목적지에 도달시키기 위한 내용들로만 구성되어 있다. 따라서 정상적으로 목적지 호스트에 도달하는 경우에는 IP에서 통신이 성공하고 종료되므로 아무런 문제가 없다. 그러나, 만일 전달해야 할 호스트가 꺼져 있거나, 선이 단절된 경우와 같은 비정상적인 경우에 이 패킷 전달을 의뢰한 출발지 호스트에 이러한 사실을 알려야하지만, IP에는 그러한 에러에 대한 처리 방법이 명시되어있지 않다. 이러한 IP의 부족한 점을 메꾸기 위하여 사용되는 것이 바로 ICMP 프로토콜이다. ICMP는..
[컴퓨터 네트워크] CIDR, 서브넷 마스크
CIDR Classless Inter Domain Routing 사전지식 IPv4 는 총 32비트의 숫자로 구성되어있다.(4,294,967,296개) 588,514,304 개는 특정한 목적으로 선점되어 있다. 따라서 가용한 IP 는 3,706,452,992개이다. 이미 충분하지 않다는 것을 알 수 있는데 이를 해결하기 위해 사설 네트워크(Private Network) 를 사용한다. 사설망 하나의 Public IP 를 여러 기기가 공유할 수 있는 방법 하나의 망에는 Private ip 를 부여받은 기기들과 gateway로 구성 각 기기는 인터넷과 통신시 Gateway 를 통해 통신 Private IP 는 지정된 대역의 IP만 사용가능 즉 해당 범위의 IP 를 부여받은 다면 이는 무조건 사설망이다. (ex...
[컴퓨터 네트워크] IP 주소 클래스(A, B, C 클래스)
1) IP주소의 클래스란? 지난시간 IP주소에 대해 배웠는데 잠시 복습하면, IP주소는 32 자리 이진수로 구성되어 있고 이 주소는 십진수로 표현되는데 옥테드 당 ' . ' 을 찍어 구분한다고 했습니다. 또한, 하나의 네트워크안에 IP들은 네트워크 영역은 같아야하고, 호스트 IP는 서로 달라야 통신이 가능하다고 했습니다. 예를 들어 203.240.100.1 에서 203.240.100 은 네트워크 영역이고 1 은 호스트 IP라는 사실을 알 수 있습니다. 여기서 어떻게 네트워크 주소와 호스트 주소를 구분할 수 있을까요? 바로 클래스 때문입니다. 203.240.100.1 IP가 C클래스 이기 때문에 203.240.100 은 네트워크 주소이고, 1은 호스트 주소란 사실을 알아낸 것입니다. 이렇게 IP주소에는 클..
[컴퓨터 네트워크] IP 주소
전공 공부하다가 서브넷 마스크 개념에 대한 의문 생겼고 이참에 정리하고자한다. 1) IP주소란? IP주소는 네트워크 환경에서 컴퓨터(노드)간 통신하기 위해 각 컴퓨터에 부여된 네트워크 상 주소라고 생각하면 된다. 설명을 위해 우선 내 컴퓨터의 IP주소를 알아보자. 윈도우 검색창에 CMD를 치시고 명령프롬프트 창을 열어, ipconfig라는 명령어를 치면 아래와 같은 나의 IP정보가 나온다. IPv4주소가 곧 내 컴퓨터의 IP주소입니다. 192.168.1.2 가 내 주소임! 여기서 네트워크 주소는 192.168.1 까지이고!! 2는 나만의 호스트 IP라고 합니다. 어디서부터 어디까지가 네트워크 주소이고 호스트 주소인지는 다음글에서 이야기하겠다. 2) IP는 32자리로 이루어진 2진수 IP 주소에 대해서 조..
[컴퓨터 네트워크] 네트워크 계층 | IPv4 단편화, 검사합
전공 공부하다가 단편화 비트에대해 헷갈리는 개념이 있어서 확실하게 짚고 넘어가고자 기록을 남긴다. 최대 전달 단위 (MTU; Maxmum Transfer Unit) - 프레임의 형식에 정의된 필드 중의 하나 - 데이터그램이 프레임 속에 캡슐화 될 때 데이터그램의 크기는 최대 길이보다 작아야 함 최대 전달 단위 (MTU) MTU의 값은 네트워크 프로토콜마다 다름 서로 다른 네트워크의 MTU ※단편화와 관련된 필드 식별자(identification) - 16bit 필드는 발신지 호스트로부터 나온 데이터그램을 유일하게 식별 - 식별자와 발신지 IP주소의 조합은 데이터그램이 발신지 호스트를 떠날 때 유일하게 정의되어야 하고, 이러한 유일성을 보장하기 위해 IP프로토콜은 카운터를 사용하여 데이터그램에 레이블을 붙..
[알고리즘] 스트링 처리 알고리즘 | kmp 알고리즘, 보이어 무어 알고리즘, 패턴 매칭 알고리즘, 라빈 카프 알고리즘
시험 공부하다가 다시 정리한다. String탐색 알고리즘 Text에서 원하는 string, pattern을 찾는 알고리즘 1. Brute Force 그냥 모든 경우의 수를 전부 비교해 보는 방법이다. 1) Code void BruteForce(string text, string pattern){ int i, j; for(i=0, j=0; i= 0) && (text[i] != pattern[j])) j = next[j]; } if (j == pattern.length()) return i - pattern.length(); else return i; } 사실 위에서 next배열의 정의와 InitNext()함수를 잘 이해했다면, KMP의 동작 과정을 표현하는데에는 문제가 없을 것이다. 즉, text[i] !..
[컴퓨터 네트워크] 네트워크 계층 | 와이어 샤크를 이용해 IP 패킷 분석하기
전공 과목인 컴퓨터 네트워크 공부를 하던중, 와이어 샤크를 이용한 헤더 분석을 더 깊게 공부해야겠다는 생각이 들어 글을 작성하려고 한다! IP 헤더 살펴보기! 아주 블럭쌓기네요 허허 필드별로 하나씩 알아볼겁니다 물론 와이어샤크가 있으면 이해하는데 좋고 실습과 보안관제 업무에 대해 기초 다지기도 될 수가 있겟네요 버전 (Version)(길이 4비트) 0100 .... = version: 4 ?? 바로 버전이 4 라는건데요 0100 는 4의 2진수 형태 입니다 다라고는 못하겟지만 거의 대부분 4 입니다 왜냐하면 IPv4 이기 때문이지요 ㅋㅌㅋㅌ 인터넷 헤더 길이 (Internet Header Length)(4bit) 이녀석은 .... 0101 = Header Length: 20 bytes ..
[알고리즘] 동적계획법 | 스트링 편집 거리(String edit distance)
스트링 편집 거리(String edit distance)는 두 스트링의 유사도를 측정하기 위해 사용되는 알고리즘을 말한다. 이 알고리즘을 제안한 수학자의 이름을 따서 레벤슈타인 거리 라고도 불린다. (LD) 원래 스트링: S 목표 스트링: T 라고 할때, 원래 스트링을 목표 스트링으로 변환하는데 필요한 삽입, 삭제, 대치 연산의 최소 비용을 편집 거리하고 한다. 삽입: 원래 스트링에 새로운 문자를 삽입하는 연산 삭제: 특정 위치에 있는 문자를 삭제 대치 : 특정 위치의 문자를 다른 문자로 바꾸는 연산 세 종류의 연산마다 비용이 정해져 있다. 예를 들어보자! S: "test"이고 T: "tent"라면, "s" 을 "n"으로 변경하는 하나의 대치 연산을 함으로써 S를 T로 변환할 수 있으므로 LD(S, T)..