목록Computer Science/Network (28)
ecsimsw
Congestion control 수신 측의 처리 속도에 따라 송신 속도를 제어하는 서비스가 flow control이라면, congestion control은 네트워크 상황에 따라 송신 속도를 제어한다. 네트워크 내에 많은 사용자가 자원을 사용하거나 너무 많은 데이터가 라우터에 들어와 네트워크 자체의 혼잡도가 올라감에 따라 전송 패킷의 지연 또는 라우터의 오버플로우가 야기된다. flow control 처럼 단순히 남은 버퍼 상태를 세그먼트에 표시하여 지속적으로 주고 받는 것을 없는 것이, 네트워크의 상황은 송신 측에서 쉽게 알 수 없고, 계속 변하기 때문에 값을 하나로 유지할 수 도 없다. 이러한 상황에서 네트워크의 현 상황을 지속적으로 유추해서 송신 속도를 최대한의 네트워크 성능과 맞추는 것이 cong..
Flow control 송신부가 아무리 빨리 데이터를 전송할 수 있어도 수신부가 그 속도를 못 따라가 버퍼를 비우는 속도보다 채우는 속도가 빨라진다면 버퍼 오버플로우가 발생하여 데이터를 빠르게 보내는데 의미가 없을 것이다. TCP는 송신부에서 수신부의 버퍼 상황을 수시로 확인하여 송신 속도를 조절하는 flow control 서비스를 제공한다. 즉, 송신 속도와 수신 처리 속도를 같도록 하는 것이다. TCP의 송신자는 수신측에 사용 가능한 버퍼 공간(receive window)을 알고 있다. 이를 rwnd 변수에 저장하고 송신자는 이를 이용하여 송신하고, 수신자는 응답 시 현재 rwnd를 송신부에 전달한다. TCP는 duplex(이중 통신) 구조기 때문에 각 측의 송신자는 상대의 수신 윈도우를 유지하는 것..
Transmission Control Protocol - point to point - rdt - in-ordder byte stream - pipelined - buffer - duplex - connection oriented - flow control Tcp segment sequence number : 전송하는 message 단위의 가장 앞 byte의 순서번호를 저장. 세그먼트에 있는 첫 번째 바이트의 바이트 스트림 번호. acknowledgment : cumulative ack, 호스트가 상대편에 기대하는 다음 순서 번호. 현재까지 정상적으로 수신된 세그먼트와 기대하는 다음번 세그먼트를 알 수 있다. 순서가 틀린 세그먼트를 수신한 경우, 버퍼를 이용하여 저장해둘지, 버릴지는 규정되어 있지 않다...
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..