AIMD 손실을 감지할 때까지(타임아웃, 3 중복 ACK) 윈도우를 1씩 증가시키다가 손실이 감지되면 절반으로 줄인다. - 3 중복 ACK가 발생하면 윈도우를 절반으로 줄임 - 타임아웃이 발생하면 윈도우를 1 MSS(가장 큰 세그먼트 크기)로 줄임 TCP rate는 cwnd/RTT (bytes/sec)쯤이다. TCP sender 전송의 최대치는 LastByteSend - LastByteAcked
학교강의필기장/컴퓨터네트워크
Principles of congestion control congestion : 긴 딜레이, 패킷 손실 scenario 1 (simplest) 설정 : 하나의 라우터, 무한 크기 버퍼, 입출력 링크 용량 R, 재전송이 필요하지 않음 => 용량이 R/2이면 네트워크 도착이 절반임으로 네트워크가 가득 찬다. 버퍼의 크기가 무한이므로 패킷 손실은 발생하지 않지만, 큐잉 지연이 발생하게 된다. 이에 따라 전송 지연이 증가한다. scenario 2 설정 : 하나의 라우터, 유한 버퍼, 재전송 있음 애플리케이션 레이어은 입력과 출력이 같고, 재전송을 포함한 transport 레이어의 입력은 애플리케이션의 입력보다 크거나 같다. Idealization(이상화) 완벽한 정보 가짐: sender는 라우터 버퍼가 사용 ..
TCP flow control 네트워크 레이어가 전달하는 데이터가 애플리케이션 레이어가 소켓 버퍼에서 삭제하는 데이터보다 빠르면 어떻게 될까? - 이때 필요한게 flow control, receiver의 버퍼가 너무 많고 빠른 전송에 오버플로우되지 않도록, receiver는 sender를 컨트롤한다. TCP receiver는 TCP header의 rwnd field로써 버퍼에 빈자리가 있다고 advertises한다. - 많은 OS에서 RcvBuffer를 자동조정(autoadjust) sender는 rwnd가 도착할때까지 unACKed data의 크기를 제한한다. guarantees(보장된) receive buffer는 overflow되지 않을 것이다. TCP connection management - a..
TCP segment structure A: ACK: 다음에 예상되는 seq number head len: TCP 헤더의 길이 checksum : internet checksum C,E : 혼잡 알림 TCP options : TCP 옵션 RST,SYN,FIN : 연결관리자 seq number : segment seq number : receive window : flow control : TCP sequence numbers, ACKs Sequence numbers - 세그먼트 데이터에서 첫 번째 바이트의 바이트스트림 number Acknowledgements(확인응답) - ACK - 상대방으로부터 예상되는 다음 바이트의 seq number - cumulative ACK (누적) 수신 측에서 순서가 맞지..
Principles of reliable data transfer (신뢰성 있는 데이터 전송의 원칙) 신뢰성 있는 데이터 전송 = reliable data transfer = rdt 신뢰성 없는 채널의 특성(손실, 오염, 재정렬 등)에 따라 신뢰성 있는 transfer protocol의 복잡도가 영향을 받는다. 송신자와 수신자는 서로의 상태를 모르기에 메시지가 수신됐는지 알 수 없다. rdt_send() : 애플리케이션 계층 등 상위 레이어에서 호출됨. 전송할 데이터를 수신 측 상위 레이어에 전달 udt_send() : rdt에서 호출되어 불안정한 채널을 통해 패킷을 수신측에 전송 rdt_rcv() : 수신측 채널에서 패킷이 도착했을 때 호출됨 deliver_data() : rdt에서 호출되어 상위 레이..
UDP: User Datagram Protocol 간소화된(no frills), 최소한의(bare bones) 기능만 제공하는 internet transport protocol best-effort 방식을 사용하기에, 손실 또는 순서가 바뀌는 상황이 발생할 수 있다. connectionless: - UDP sender/receiver 간의 handshaking이 없다. - 각각의 UDP 세그먼트는 다른 세그먼트와 독립적이다. UDP를 왜 사용할까 - 연결 설정이 없음(RTT 지연이 추가되지 않음) - 송신자 및 수신자에 연결 상태가 없어서 간단함 - 헤더 크기가 작음 - 혼잡 제어(congestion control)이 없음 - * 빠르게 전송 가능하고, 혼잡이 발생해도 동작할 수 있다. 신뢰성이 필요한 ..
multiplexing at sender : 여러 소켓으로부터 데이터를 받고, 전송 헤더를 추가함. demultiplexing at receiver : 헤더 정보를 사용해서 수신된 세그먼트를 올바른 소켓에 전달함. demultiplexing 호스트는 IP 데이터그램을 receive한다. - 각 데이터그램은 송신지(source) IP주소와 목적지(destination) IP주소를 가진다. - 각 데이터그램은 한 개의 전송 계층 세그먼트를 전송한다. - 각 세그먼트는 송신지, 목적지 포트번호를 가진다. 호스트는 IP주소와 포트번호를 사용해서 세그먼트를 적절한 소켓으로 전달한다. receiving host가 UDP segment를 수신하면, 세그먼트의 목적지 포트 번호를 확인하고 해당 포트 번호를 갖는 소켓으..
Transport-layer services and protocols 서로 다른 호스트에서 실행중인 애플리케이션 프로세스간에 논리적인 통신(logical communication)을 제공 transport protocols은 end system에서 실행된다. - sender : 애플리케이션 메시지를 세그먼트로 분할해서 네트워크 계층에 전달 - receiver : 세그먼트를 메시지로 재조립해서 애플리케이션 계층에 전달 인터넷 애플리케이션에서 사용가능한 transport protocols : TCP / UDP network layer는 호스트 간의 논리적인 통신임에 반해 transport layer는 프로세스 간의 논리적인 통신이다. network layer service에 의존하고 이를 향상시킨다. sen..