반응형

IT 지식 40

컴퓨터 네트워크 - TCP Flow Control

TCP Flow Control Flow control은 송신 측이 너무 많이, 너무 빨리 데이터를 전송하여 수신 측의 버퍼를 오버플로 하지 않게 하기 위한 스피드 매칭이다. 수신 측이 처리할 수 있는 속도보다 송신 측이 전송 속도를 일치시킨다. 수신자가 송신측에게 하는 행위이다. 수신측은 수신 버퍼(RcvBuffer)를 가지고 있다. 버퍼에 있는 TCP data를 application process가 읽어 들이는 속도가 송신 측에서 데이터를 보내는 속도보다 느린 경우 버퍼가 꽉 차게 되고 이후 들어오는 데이터는 손실(loss) 된다. 수신 버퍼의 남은 공간을 Receive Window(RcvWindow)라 부른다. RcvWindow의 크기는 RcvBuffer(전체 공간) - [LastByteRcvd - ..

컴퓨터 네트워크 - TCP Fast Retransmit

Fast Retransmit Fast retransmit은 타이머의 타임 아웃 기간이 상대적으로 너무 길어 타이머가 종료되기 전이라도 중복된(duplicate) ACK를 3번 받으면 바로 재전송을 하는 기능이다. 손실된 패킷을 재전송하기 전 발생하는 긴 지연시간을 줄여준다. Duplicate ACK 수신을 통해 세그먼트가 손실되었음을 감지한다. 손실된 경우 수신 측은 여러 중복 ACK들을 발생시킨다. 송신자는 동일한 데이터에 대해 3개의 ACK를 수신하면 ACK 된 데이터 이후의 세그먼트가 손실된 것으로 가정한다. Duplicate ACK는 비정상적인 순서(out-of-order)의 패킷이 수신될 시 수신 측에서 발생시키기 때문에 현재까지 ACK가 완료된 패킷 다음 패킷이 손실 난 상태에서 그다음 패킷들..

컴퓨터 네트워크 - 신뢰성 있는 데이터 전송 (Pipelined Protocols)

신뢰성 있는 데이터 전송과 RDT를 먼저 알고 봐야 합니다. https://dlee0129.tistory.com/198 컴퓨터 네트워크 - 신뢰성 있는 데이터 전송 (RDT) 신뢰성 있는 데이터 전송 신뢰성 있는 데이터 전송은 네트워크 중요 10가지 토픽 중 한 가지일 정도로 중요하게 여겨진다. 이는 Data Link layer, Transport layer, Application layer에서 구현된다. 이 중 Transp. dlee0129.tistory.com Pipelined Protocols Pipelined protocols에서는 go-Back-N, selective repeat 방식을 사용하여 RDT 3.0의 성능 문제를 해결한다. ACK를 받지 않고도 복수개의 패킷을 전송할 수 있게 하여 A..

컴퓨터 네트워크 - 신뢰성 있는 데이터 전송 (RDT)

신뢰성 있는 데이터 전송 신뢰성 있는 데이터 전송은 네트워크 중요 10가지 토픽 중 한 가지일 정도로 중요하게 여겨진다. 이는 Data Link layer, Transport layer, Application layer에서 구현된다. 이 중 Transport layer의 주 역할이 신뢰성 있는 데이터 전송이다. 신뢰성 있는 데이터 전송을 위해서는 수신된 데이터의 오류 복구 기능이 필요하다. 데이터 전달 중 데이터 손상이 발생하여 송신 측에서 보낸 데이터의 checksum과 수신 측에서 계산한 checksum이 같지 않을 수 있다(bit error). 또한, 송신 측은 패킷을 전송하였지만 전달 과정에서 손실(loss)이 발생하여 수신 측까지 전달되지 않을 수 있다. 이러한 상황들에서 복구하여 정상적으로 패..

컴퓨터 네트워크 - UDP

UDP (User Datagram Protocol) UDP는 복잡한 기능들을 제거한 단순한 프로토콜이다. 송신 측과 수신 측은 handshaking(연결)을 하지 않는 연결이 없는(connectionless) 통신 방법이다. 연결이 없기 때문에 UDP 세그먼트는 통신 중에 손실될 수 있으며, 전송 순서대로 도착하는 것을 보장하지 않는다. TCP와 비교했을 때 UDP는 손실 발생, 순서 보장하지 않는 단점이 있는데 왜 UDP를 사용하는지 의문이 들 수 있다. UDP는 연결을 하지 않기 때문에 연결에서 발생하는 지연이 없으며, 간단하며, 작은 세그먼트 헤더를 갖는 장점이 있다. 혼잡 제어(congestion control)를 하지 않아 빠르게 저세그먼트를 보낼 수 있는데, 이는 장점이자 단점이다. UDP는..

컴퓨터 네트워크 - Transport Layer

Transport Layer Transport layer의 서비스와 프로토콜은 송수신 호스트상의 응용프로세스간의 논리적인 연결을 제공한다. Tranport 프로토콜은 송수신 종단 단말(end-system)에서만 수행된다. 중간의 라우터 스위치와 같은 네트워크 장비에는 physical, data link, network layer까지 구현될 수 있으나, tranport와 application layer는 종단 단말에서만 수행된다. 송신측: application layer에서 전달되어진 메시지를 세그먼트(segments) 단위로 나누어 네트워크층으로 전달한다. 수신측: 전달받은 세그먼트들을 메시지로 재결합하고 application layer로 전달한다. 인터넷에서 주로 사용하는 대표적인 transport p..

컴퓨터 네트워크 - Socket program - TCP(Web) & UDP

Socket 프로세스 간에 메시지 송수신시에 소켓을 통해 전달한다. 소켓은 애플리케이션 프로세스와 종단 Transport protocol(TCP or UDP)의 데이터 전달 통로의 역할을 한다. 프로세스는 소켓을 통해 Transport 층으로 데이터를 보내고 인터넷을 통해 전달이 되면 Transport층에서 소켓을 통해 프로세스로 전달하게 된다. Socket program Socket(소켓) 프로그래밍이란 네트워크 상에서 두 개의 애플리케이션 프로세스가 특정 포트를 통해 메시지를 주고받는(양방향 통신)이 가능하도록 만들어주는 방법이다. 서버와 클라이언트는 특정 포트를 통해 연결을 유지하고 있어 실시간으로 양방향 통신하는 것을 소켓 프로그래밍이라 한다. 실시간으로 데이터를 주고받는 상황에서 사용되며 실시간..

컴퓨터 네트워크 - P2P applications

P2P (Peer to Peer, Peer-Peer) P2P는 단말(end system = peer) 간에 양방향 파일 전송 시스템이다. 각 단말이 서버이면서 동시에 클라이언트의 역할을 한다. P2P에서 파일 전송은 망을 구성하는 peer들의 성능에 의존되는 통신망이다. P2P를 사용하는 대표적인 프로그램으로 비트토렌트, 소리바다 등이 있다. 클라이언트 서버구조에서는 클라이언트(peer)가 늘어날수록 전송 속도가 선형적으로 증가하는 반면, P2P 구조에서는 Peer가 증가하더라도 비선형적으로 전송 속도가 크게 늘어나지 않는다. P2P가 큰 네트워크에서도 파일 전송에 더 적은 시간이 걸리며 확장성이 있다. Pure P2P Pure P2P 구조에서는 always-on 서버(중앙 서버)가 존재하지 않고 pee..

컴퓨터 네트워크 - DNS: Domain Name System

DNS (Domain Name System) 인터넷 프로토콜의 장비들(라우터, 링커)이 통신하기 위해서는 IP 주소를 알아야 한다. 32 bit로 이루어진 이 주소는 사람이 기억하거나 해석이 어려워 사람이 사용하기 쉬운 이름을 붙인 것이 Domain Name이다. 하지만 Domian name은 소프트웨어가 인식할 수 있는 이름이 아니다. 사람에게는 IP 주소를 Domain name으로 소프트웨어에게 Domain name을 IP 주소로 바꿔주는 것(resolve)이 DNS이다. DNS 계층 구조 DNS는 많은 name 서버들의 계층 구조로 구현된 분산 데이터베이스로 이루어져 있다. 중앙 집중식(centralized) 서버의 경우 공격을 받거나 문제가 생기면 전체 웹 서비스가 멈출 수 있기 때문에 분산한다...

컴퓨터 네트워크 - E-mail (SMTP, POP3, IMAP)

E-mail (Electronic Mail) E-mail에는 대표적으로 user agents, mail servers, SMTP 3가지 컴포넌트가 있다. 이 세 가지의 컴포넌트들이 E-mail 전송에서 필요로 한다. User agents (mail reader) 메일 메세지를 작성, 수정, 읽기 등의 기능을 한다. End system(Host)에 존재하며 대표적으로 Outlook, elm, Mozilla Thunderbird 등이 있다. 이를 관장하는 메일 서버가 존재하여 전송 및 수신되는 메시지들은 서버에 저장된다. User agents는 메시지를 읽을 때에 서버에서 메일 메시지를 꺼내와 읽게 된다. 대표적인 메일 접근 프로토콜로 POP, IMAP, HTTP가 있다. Mail Server 메일 서버에는..

반응형