목록 Computer Science (90)
Stop and Wait 하나의 패킷을 전송하고 그에 대한 응답을 기다리는 방식. sequence number을 이용하여 중복 패킷을 확인하고, timer로 loss된 패킷을 파악하여 재전송한다. RDT_ stop and wait Pipelining 하드웨어는 우리의 처리보다 빠르고, 효율을 위해선 보다 더 하드웨어를 낭비하지 않고 사용하기 위해 노력해야한다고 컴퓨터 구조를 공부하면서 생각했다. 마찬가지로 네트웨크에서도 데이터를 병렬적으로 처리하여 낭비없는 채널(송신자)의 이용을 위해 파이프라이닝을 이용한다. 전송 시에 패킷의 첫 비트를 전송한 시점부터 처음 응답을 받을 때까지 송신자가 얼마나 분주하게 일을 하였나를 Utilization으로 한다. 아래 그림에서 왼쪽 그림처럼 한 전송에 한 패킷만을 전송..
Reliable Data Transfer check-sum으로 에러 체크만 가능한 udp와 달리 tcp는 reliable한 데이터 전송을 보장한다. reliable을 보장하기 위해 문제가 되는 점은 Error와 Data loss이다. 반대로 이 두가지를 해결할 방법이 있다면 reliable한 데이터 전송이 보장된다는 말과 같다. Protocol 1. Check error with check sum 2. Feedback on wheter received data has errors. 3. Re-transmission when there's no feedback for a certain period. 위 세가지 기본 원리로 rdt 처리가 진행된다. 우선 pck의 checksum 만으로 오류를 확인하고 fee..
Multiplexing / Demultiplexing Application layer에서 알맞은 소켓으로 가져와 transport segment (packet) 로 변환하는 것이 multiplexing, 반대로 transport layer에서 적절한 소켓으로 올리는 것을 demultiplexing이라고 한다. header의 source port, destination port에 의해 결정되고 각각 16비트씩 이므로 이론적으로 2의 16승개의 포트를 갖을 수 있다. UDP UDP는 transport 계층 프로토콜이 할 수 있는 최소 기능 수행하는 프로토콜이다. multiplexing/ demultiplexing과 간단한 오류 검사를 제외하고 다른 기능은 전혀 없다. Udp segment의 header에는 ..
Socket - OS에서 제공하는 API의 일종. - SOCK_STREAM (TCP type), SOCK_DGRAM ( UDP type ) Socket process socket function - int socket(int domain, int type, int protocol) : type SOCK_STREAM : TCP , SOCK_DGRAM : UDP : return creadted socket's ID - int accept(int sockfd, struct sockaddr* childaddr, int* addrlen) : sockfd means file description : childaddr struct data includes IpAddr, port number of client ** c..
TCP/IP TCP UDP Reliable O X Flow control O X Congestion control O X Then, when is UDP used? : When don't need to be reliable. When we don't need to pay attention in leaking some packet. (ex, voice talk) * Protocal : Coordinated rule in network communication. Data switching policy - circuit switching : End to End "reserved" for call - packet switching : Data are sent as packets. Circuit switching..
Cache 매번 느린 메인 메모리에서 instruction을 가져오는 것이 아닌 프로세서와 메인 메모리 사이에 위치하여 자주 사용하는 명령어를 더 빠르게 가져올 수 있도록 하는 기술이다. instruction을 fetch할 때, 특히 같은 구간을 반복해서 fetch할 때, memory안 어떤 주소의 데이터(명령어)가 바뀌지 않는다면 메모리에서 바로 명령어를 가져오는 것이 아닌 좀 더 작고 빠른 장치에서 해당 주소에 해당하는 데이터를 기억해 두었다가 꺼내쓸 수 있는 임시 공간을 만들어서 메모리 접근을 줄인다. 고속의 장치는 비싸다. 가격이 비싸거나, 용량이 적거나, 발열이 크다. 다른 조건(가격, 발열)을 동일하게 한다면 고속의 저장 장치는 더 작은 공간을 갖게 된다. 그 말은 즉 모든 메모리의 데이터가 ..
Pipelining 기존의 파이프라인을 적용하지 않은 멀티사이클 방식은, 한 명령어를 처리하고 그 이후에나 다음 명령어를 처리시켜 ALU를 사용 시에는 메모리가 쉬고, 메모리를 사용 시에는 ALU가 쉬었다. 즉 명령어의 단계 외의 다른 컴포넌트가 IDLE 상태로 처리를 대기하는 식이었다. 파이프라이닝은 여러 명령어를 중첩하여 명령어 처리 단계를 병렬 실행시키는 기술이다. 한 사이클안에서 여러 명령어를 동시에 처리하여 쉬는 컴포넌트 없이 작업하여 더 효율적인 처리를 가능도록 한다. 위 그림에서의 예시라면 위의 파이프라인을 적용하지 않은 프로세서는 3개의 LW 명령어를 처리하는데 2400ps의 시간을, 아래 파이프파인을 적용한 프로세서는 약 1400의 시간을 사용한다. 이때 3개의 명령어가 아닌, 명령어를 ..