목록Computer Science (26)
우보천리 개발
스레드는 프로세스의 수행 흐름 단위이다. 응용프로그램에는 최소 하나의 프로세스가 있고, 프로세스 안에는 최소 하나의 스레드가 존재한다. 스레드는 프로세스 안에 여러개 존재 할 수 있는데 이는 현대 운영체제에서 지원한다. 다중 스레드는 프로그램 하나를 여러개로 나누어서 실행하기 때문에 다중 처리라고도 한다. 스레드 프로세스는 자원과 제어로 구분할 수 있는데 제어를 분리한 수행단위를 스레드라고 한다. 스레드는 Program Counter, Stack Pointer, Register 등은 개별적으로 갖고 있지만 Code, Data, Heap 영역은 서로 공유한다 멀티 스레드의 장점 사용자 응답성의 증가: 병렬로 수행되기 때문에 프로그램의 일부분이 blocked여도 다른 부분은 수행하면서 사용자 응답성 증가 자..
무선링크와 유선링크의 가장 큰 차이는 당연히 케이블로의 연결 차이이다. 유선 링크에서는 케이블로 연결되어있기 때문에 외부에서의 노이즈의 간섭은 없다. 하지만 무선 링크에서는 케이블로 연결이 되어있는 것이 아니기 때문에 외부의 간섭이 존재하기 때문에 무선 링크에서 사용하던 MAC 프로토콜을 사용하기 어렵다. 또한 신호의 세기는 거리가 증가함에 따라서 감소하게 되며, 경로 손실이 발생한다. 802.11 무선 랜 (WiFi) 무선 랜 프로토콜인 IEEE 802.11 은 우리에게 WiFi라고 알려져있다. WiFi의 기본 구성은 Basic Service Set (BSS)로 이루어져 있는데 하나의 BSS에는 하나 이상의 Access Point(AP) 와 하나의 이상의 단말기로 이루어져 있다. 무선 단말기는 AP로 ..
MAC 주소 링크 계층에서의 호스트나 라우터의 인터페이스 주소를 MAC 주소라고 한다. MAC 주소는 48비트로 IP주소와 다르게 고정적이다. 즉 이더넷 카드가 있는 기기는 항상 같은 주소를 갖고 있다. 반면에 IP주소는 변경 될 수 있다. MAC의 브로드캐스트 주소는 48개의 1로 된 비트열 즉, FF-FF-FF-FF-FF-FF이다 IP 주소는 XX아파트 YYY동 ZZ호의 주소를 나타낸다면 MAC 주소는 해당 아파트, 동, 호에 있는 특정한 기기의 주소를 나타낸다. Address Resolution Protocol(ARP) 우선 이더넷 프레임의 구조를 살펴보면 안에 '목적지 주소' 와 '출발지 주소'가 들어있다. 이 두개의 필드는 MAC 주소를 포함하는 것이기 때문에 MAC 주소를 알아야한다. 또한 실..
링크 레이어에서는 네트워크 계층에서 내려온 패킷을 개별 링크를 통해서 어떻게 전송 되는지에 대해 다룬다. 네트워크 계층의 패킷은 링크계층의 헤더가 붙어 하나의 Fragment 단위로 전송이 된다. 또한 다수의 호스트가 연결된 브로드캐스트 채널에서의 전송 충돌을 해결해야한다. 링크 계층은 Network Interface Controller(NIC)에 의해서 구현된다. 다중 접속 링크와 프로토콜 네트워크 링크는 Point to Point 링크와 Broadcast Link 두가지 종류가 있다. 우선 브로드캐스트 링크는 하나의 채널에 다수의 노드가 연결된 상태이기 때문에 동시에 여러 노드가 프레임을 전송하면 Multiple Access Problem이 발생하기 때문에 이 문제를 해결해야한다. 이러한 문제를 컴퓨..
송신자로부터 수신자까지 어떤 라우터를 통과해야 하는지 결정하는 알고리즘이 라우팅 알고리즘이다. 라우팅 알고리즘에는 Link State 알고리즘과 Distance Vector 알고리즘이 있다. Link State Algorithm LS 알고리즘은 링크 비용과 네트워크 토폴로지가 이미 알려져 있는 상태라고 가정하고 해당 값을 사용하여 경로를 결정하는 알고리즘이다. 즉 모든 노드는 자신의 상태를 브로드캐스트를 통해서 자신의 현상태를 알린다. 링크 상태 알고리즘의 대표적인 알고리즘은 다익스트라 알고리즘이다. 네트워크의 모든 경로와 비용이 알려져 있기 때문에 다익스트라 알고리즘을 통해서 최적의 경로를 찾을 수 있다. LS 알고리즘을 수행 하면 라우터는 각 노드에 대해 최소 비용을 알 수 있게 된다. Distanc..

1. 네트워크 주소 변환 (Network Address Translation) NAT는 IP Datagram안에 들어있는 출발지, 목적지, 포트번호 등을 바꿔서 재기록하여 패킷을 전달하는 방식이다. 현재 상용되고 있는 IPv4의 주소는 부족한 상황이지만 IPv6로 넘어가지 않고 사용할 수 있는 이유는 NAT가 있기 때문이다. NAT 라우터가 갖고 있는 IP 주소는 Globally unique하다고 할 수 있지만 NAT 뒤에 있는 주소들은 unique하지 않고 내부에서만 unique 하다. 즉 NAT 뒤에 있는 네트워크에서 보낸 패킷을 NAT 과정 없이 바깥으로 전달 된다면 처리할 수 없게 된다. 왜냐하면 어딘가에는 똑같은 주소를 사용하고 있는 네트워크가 있을 수 있기 때문이다. NAT 작동 10.0.0...
IPv4 네트워크 계층에 대표적인 프로토콜은 IP(Internet Protocol)이다. IP에는 버전 4와 버전 6이 있는데 여기서는 버전 4에 대해서 공부할 것이다. 네트워크 계층에서의 패킷은 datagram이라고 한다. 헤더부분에는 IP 헤더가 있고 data 부분에는 TCP 세그먼트가 담기게 된다. IP헤더는 20바이트이고 TCP Segment에서의 TCP헤더 역시 20바이트이다. 즉 하나의 데이터그램을 보낼 때 총 40바이트의 오버헤드가 붙게 된다고 볼 수 있다. IPv4 구조 버전 헤더길이 서비스타입 데이터그램 길이 16비트 식별자 플래그 13비트 단편화 오프셋 TTL 상위계층 프로토콜 헤더 체크섬 32비트 출발지 IP주소 32비트 도착지 IP주소 옵션 데이터 식별자, 플래그, 13비트 단편화 ..
TCP가 제공하는 중요한 기능 중 하나가 Flow Control(흐름제어)와 Congestion Control(혼잡제어)다. 1. Flow Control (흐름제어) 송신자와 수신자가 서로 데이터를 보낼 때, 상대방의 버퍼의 크기를 고려하지 않고 보내면 송신자의 입장에서는 편할 수 있다. 하지만 수신자의 입장에서는 자신의 버퍼크기보다 많은 데이터가 들어오게 되면 모두 처리하지 못하고 버퍼를 초과한 데이터들은 버리게 되어버린다. 이러한 Overflow를 방지하기 위해서 TCP는 흐름제어를 한다. 우선 TCP가 수신하는 데이터는 버퍼에 저장되지만, 저장되는 즉시 Application Layer으로 올라가는 것은 아니다. Application은 다른 작업을 하고 있을 수 있고 해당 데이터가 아직 필요로 하지 ..
TCP는 UDP와 다르게 '신뢰적인 데이터 전송' 을 보장한다. 신뢰적인 데이터는 어떻게 전송되는지 우선 원리를 살펴본다. 1. Reliable Data Transfer(RDT) 신뢰적인 데이터 전송 서비스를 추상화하여 구현한 것이 RDT Protocol이다. 단방향으로 데이터를 전송하는 것을 가정하고, 나타날 수 있는 문제는 크게 두가지이다. 우선 Packet Error 그리고 Packet Loss 이다. rdt 1.0 rdt 1.0 에서는 가장 신뢰적인 상태라고 가정하기 때문에 오류가 발생하지 않고 신뢰적이다. 그렇기 때문에 수신 측에서도 어떠한 피드백을 보내주지 않아도 된다. rdt 2.0 rdt2.0 에서는 비트에 오류가 있다라고 가정을 한다. 송신자와 수신자는 '긍정 확인응답'과 '부정 확인응답..
프로세스(Process) 프로세스를 간단하게 말하자면 실행중인 프로그램이다. 그렇다면 실행중인 프로그램은 무엇인가? 실행중인 프로그램은 디스크에 있는 프로그램이 메모리에 적재가 되어 운영체제의 제어를 받는 상태라고 할 수 있다. 즉 자신만의 주소공간이 생성되어 있다는 뜻이기도 한다. 프로세스의 메모리 구조 스택 힙 데이터 코드 스택 : 지역변수에 사용, 호출한 함수의 반환 값, 반환 주소, 매개변수 등에 사용. 스택은 함수를 호출하면 쌓이고 반환되면서 줄어든다. 스택은 힙 쪽으로 커지고, 스택 포인터와 만나면 메모리가 소진되었다는것. 힙 : 동적으로 메모리 할당할 수 있음. 데이터 : 전역변수, 정적변수 저장하고 프로그램 실행전에 초기화한다. 코드 : 실행 명령을 포함한 프로그램 영역. 프로세스의 상태 ..