전체 글

개발은 좋은데 뭘로 개발할까
CS/컴퓨터 네트워크

[컴퓨터 네트워크] 30. Network Layer (6) : Generalized Forwarding

Generalized Forwarding지금까지 정리한 포워딩 방식은 IP 패킷을 받으면, 이 패킷의 목적지 IP주소를 보고, 가장 길게 매치되는 것을 포워딩 테이블에서 찾아서, 그 다음 목적지로 가기 위한 output link(port) 를 결정했었다. 이번엔 이 방법보다 조금 더 일반화된 포워딩 방법을 정리해보려고 한다.왜 output port 를 찾을 때 목적지 주소만 봐야 하는가, Source IP주소를 봤을 때도 도움이 될 만한 부분이 실제로 많다. 예를 들어 인터넷 해킹에서 공격 시발점의 source ip주소를 보고, black list에 있는 IP주소와 매칭되면 원천적으로 방화벽에서 차단시켜버리는 경우가 있다.홍대도 매일 100건 이상의 공격시도가 들어오는데, 물론 공격자들이 IP주소를 바꿔..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 29. Network Layer (5) : IPv6

IPv6(IPv5는 실험적 목적이므로 건너감!)IPv6는 나온지 20년이 넘은 꽤 오래된 개념이다.약 27년전 시점부터 IPv4의 주소가 고갈될게 분명해져서 그 전에 새로운 주소 체계를 도입하고자 등장한 것이 IPv6이였다.그런데 주소 체계를 바꾼다는 것은 꽤 큰 일이다.32bit 에서 128bit 주소 체계로 바꾼다는 것은, 일단 양립성을 포기하는 것과 같다.32bit 주소체계를 쓰면서 동시에 128bit 주소 체계를 사용하는 것이 불가능하기 때문이다. 그래서 IPv6를 설계할 때는 어차피 처음부터 만들 거 IPv4에서 마음에 안들었던 부분을 다같이 바꾸자고 생각했고, 많은 부분들이 개선되었다. (option, checksum 과 같은 필드가 삭제되었다.)따라서 헤더의 크기가 고정되었기 때문에, 프로세..

CS/컴퓨터 구조

[컴퓨터 구조] 26. Virtual Memory (1) - 개요

Virtual vs Real vs Transparent vs Erase1978년 IBM에서 정의한 바에 따르면 실제로 존재하는데, 눈으로 볼 수 있으면 'Real' 이라고 한다. (현실)실제로 존재하는데, 눈으로 볼 수 없으면 'Transparent' 라고 한다. (투명하다)실제로 존재하지 않는데, 눈으로 볼 수 있으면 'Virtual' 이라고 한다. (가상)실제로 존재하지 않는데, 눈으로 볼 수 없으면 'Erase' 라고 한다. (삭제했다) 따라서 이 용어에 따르면, Virtual Memory 는 실제로 존재하지 않지만 눈으로는 보이는 메모리를 일컫는다. Virtual Memory버추얼 메모리는 실제로는 운영체제가 제공하는 테크닉에 해당한다. 위 그림에서 초록색으로 표시된 장치는 실제로 존재하는 (Re..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 28. Network Layer (4) : NAT

NATNetwork Address Translation, 보통 '공유기' 라는 이름으로 익숙하게 알려져있다.말 네트워크 주소를 번역 (변환) 해준다. (일종의 라우터) NAT는 다수의 디바이스로 구성된 어떤 local network(집)에서 외부 인터넷으로 나가는 유일한 통로역할을 한다.외부 인터넷의 관점에서 보면, 해당하는 local network(집)로 들어가는 유일한 통로로 NAT 밖에 보이지 않는다. 즉, 집에서 여러 인터넷 디바이스를 사용하고 싶은데, 인터넷은 하나의 회선만 사용하고 싶을 때 NAT(공유기)를 사용할 수 있다. 또한 밖에서는 하나의 IPv4 주소만 가지고 있는 것처럼 보이기 때문에 내부 네트워크를 감추는 효과도 있다. local network 에서는 다시 각각의 디바이스를 구분하..

CS/컴퓨터 구조

[컴퓨터 구조] 25. Cache (3) - 성능 개선

캐시를 적용한 CPU 성능이제 캐시를 적용했을 때 CPU의 성능 (실행 시간)을 한번 생각해보기로 하자.  먼저 CPU의 실행시간은 (명령어의 개수) * (CPI) * (주기) 로 구할 수 있었다.이때 명령어의 개수 * CPI 는 결국 프로그램을 실행하는 과정에서 요구하는 총 cycle 수로 볼 수 있으므로CPU의 실행시간은 (clock cycle) * (주기) 라고 할 수 있다. 이때 clock cycle 을 CPU에서 명령어를 실행시키는데 필요한 cycle 과, 메모리를 접근하는데 시간이 오래 걸려서 CPU가 stall 하는 cycle 로 구분해서 생각해보자. 이때, 만약 캐시 Hit 가 발생하면 이때는 추가적인 CPU cycle이 필요하지 않다고 해보자.(즉, 캐시 Hit 가 발생하면 MEM sta..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 27. Network Layer (3) : IP

IP - Internet ProtocolIP는 인터넷에서 제일 중요한 프로토콜이다.IP가 없으면 인터넷 동작을 할 수가 없기 때문이다내가 아무리 엔드시스템에서 기가 막힌 인터넷 어플리케이션을 만들었다고 하더라도, IP가 없으면 (IP에 의존하지 않으면) 상대방 컴퓨터와 통신을 할 방법이 아예없다. 반대로, 데이터링크 계층에 새로운 기술을 개발했고, 이 기술이 이더넷보다 훨씬 훌륭하다고 생각한다고 해보자.그런데 이 기술을 이용해서 돈을 벌려면 이 기술을 사용한 장치가 인터넷에 연결이 되어야 한다.인터넷은 플랫폼이기 때문이다.따라서 IP가 없어서 대문자 I의 인터넷에 연결될 수 없다면 이 기술은 무용지물이다.IP는 여러 데이터링크 계층 기술과 인터넷이 붙을 수있도록 해주는 접착제 역할을 해준다. 따라서 IP..

CS/컴퓨터 구조

[컴퓨터 구조] 24. Cache (2) - Direct-Mapped Cache

기본적인 캐시 동작 컴퓨터가 크게 위 그림과 같은 구조로 되어있다고 생각해보자.  이때 프로세서를 확대하면 위 그림과 같이 확대할 수 있다.하나의 캐시 블록(캐시 라인)은 한번에 4개 워드를 관리한다. 또 메모리는 위와 같이 확대한다고 해보자.녹색칸마다 4byte씩 주소가 증가하므로, 녹색 1칸은 4byte 크기를 갖는다는 것을 알 수 있다. 이때 CPU가 0x0004 위치에 있는 명령어를 읽는다고 해보자.그러면 CPU는 먼저 캐시를 살펴본다.현재 캐시에는 아무런 데이터가 없으므로 캐시는 메모리로부터 데이터를 갖고 온다.이때 캐시는 정말 필요한 데이터 딱 하나만 가져오는게 아니라, 미리 정의한 블록(라인) 크기 단위로 데이터를 갖고 온다.(위 메모리 그림에서 주황색 영역이 블록 영역이다.) 그러면 위 그..

CS/컴퓨터 구조

[컴퓨터 구조] 23. Cache (1) - 개요

캐시의 필요성만약 저장 공간도 크면서 동시에 읽고 쓰는 속도가 빠른 메모리가 있다면 정말 좋은 일일 것이다.하지만 아쉽게도 현실에는 그런 메모리가 존재하지 않는다.큰 메모리는 작은 메모리에 비해 비교적 느리기 때문에, 무한히 크면서 무한히 빠른 메모리는 못 만들고 있다.  그래서 우리는 이렇게 메모리 계층을 나누어 이용하였다.이렇게 피라미드 쌓듯이 다양한 종류의 메모리를 나누어 사용함으로써 마치 크고 빠른 메모리를 사용하고 있다는 착각을 하게 만드는 것이다. 캐시의 필요성을 정리하기에 앞서, 먼저 무어의 법칙을 살펴보자.무어의 법칙은 정말 이론적으로 증명된 법칙이라기보다, 인텔의 창립자인 무어라는 사람이 한 예측인데, 이 예측이 워낙 잘 들어맞아서 법칙이라고 부르게 되었다. 무어의 법칙은 1980년의 D..

CS/컴퓨터 구조

[컴퓨터 구조] 22. Pipeline MIPS (6) - 성능 측정

Single Cycle MIPS 의 성능을 측정할 때, 간단하게 CPU 성능만 측정했던 내용을 복기해보자. CPU Time = 명령어 개수 x CPI x Clock Cycle Time = inst x CPI / f 실행시간은 많은 요인들에 의해 결정이 되지만, 간단하게 CPU의 실행시간만 생각하고 위와 같이 계산할 수 있었다. 이 내용을 Pipelined MIPS에 적용해보자.CPU가 어떤 프로그램을 실행시키는데 1000억개의 명령어를 실행해야 한다면, 이 프로그램의 실행 시간은 얼마가 나올까? 우선 이상적으로는 CPI는 1에 수렴할 것이다.왜냐하면 첫번째 명령어를 실행하는데 5 클럭 사이클이 걸렸다고 하면, 그 다음 명령어는 6번째 클럭 사이클에 실행이 완료되고, 그 다음 명령어는 7번째 클럭사이클에 ..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 26. Network Layer (2) : 라우터

라우터이번 글에서는 라우터의 동작에 대해 정리해보려고 한다.라우터는 일종의 컴퓨터이다.라우터에도 OS가 들어가고, 여러 보드가 들어가있다. 라우터의 아키텍처는 위와 같이 되어있다.라인카드로 된 인풋 포트와 아웃풋 포트가 앞단에서 패킷을 받거나 보내고, 라우터는 여러 네트워크와 연결이 되어있으므로 그 중간에 인터페이스가 필요한데, 인터페이스 자체가 컴퓨터이면서 그 안에 여러 컴퓨팅 보드가 존재하는 것이다.이때 지금 그림에서는 왼쪽에서 오른쪽 방향으로 표현하여 input port, output port 를 구분했지만, 이는 방향에 따라 구분되는 것이지 실제로 각 라인카드가 input port, output port 의 역할을 정적으로 수행하는 것은 아니다.방향만 반대로 바꾸면 얼마든지 서로의 역할이 바뀔 수..

에버듀
Blog. 에버듀