tcp

    [Network] 트랜스포트 계층 : TCP 혼잡제어 알고리즘(TCP Tahoe, TCP Reno, TCP NewReno)

    [Network] 트랜스포트 계층 : TCP 혼잡제어 알고리즘(TCP Tahoe, TCP Reno, TCP NewReno)

    TCP Tahoe Slow-Start + 혼잡 회피 동작 방식 TCP 연결 window size는 1에서 시작 window size 지수적으로 증가 loss 발생시, 현재 window size의 절반을 ssthresh 값으로 설정 후 window size는 1에서 다시 시작. ssthresh 값에 다시 도달하면, window size는 1씩 증가. TCP Tahoe의 특징 fast retransmit : 타임아웃이 발생하기 전이라도 세 개의 중복된 ACK를 받으면 위와 똑같은 혼잡제어 동작 방식을 적용한다. timeout과 fast retransmit의 특징 timeout은 시간내에 패킷응답이 아예 오지 않는 것이다. 하지만 fast retransmit은 타임 아웃 전에 중복 ACK가 세개가 온다는 뜻이..

    [Network] 트랜스포트 계층 : 혼잡제어

    [Network] 트랜스포트 계층 : 혼잡제어

    '혼잡' 이란? 너무 많은 전송자가 너무 많은 데이터를 너무 빠르게 전송해서 네트워크가 감당하지 못하는 그런 현상 혼잡제어가 흐름제어와 다른점 흐름제어는 Sender와 Receiver간의 1:1 문제이다. 하지만 혼잡제어는 네트워크를 공유하고 있는 모든 node들이 서로 양보를 해야하는 문제이다. 양보를 해야 네트워크 트래픽 양이 줄어들면서 원활하게 문제를 해결할 수 있기 때문에 이것은 전체 노드가 관련 된 글로벌한 이슈에 해당된다. 혼잡제어에 대한 방식 1. network-assisted - 라우터가 관여해서 호스트들에게 '지금 혼잡하니 네트워크양을 얼마만큼 줄이세요'라고 정보를 알려주는 방식 - 여러 복잡한 문제가 있기 때문에 잘 사용하지 않는다고 한다. 2. end-to-end - 라우터가 전혀 관..

    [Network] 트랜스포트 계층 : 흐름제어, TCP 연결

    [Network] 트랜스포트 계층 : 흐름제어, TCP 연결

    흐름제어 수신 호스트는 여러 작업을 하기 때문에 자신에게 들어오는 메시지를 바로바로 읽지 못한다. 이 점을 인지하지 못하고 송신 호스트가 계속해서 메시지를 보내게 된다면 수신 버퍼가 가득차게 되어 오버플로우가 일어나게 된다. TCP는 수신 버퍼의 오버플로우를 방지하기 위해서 수신호스트가 메시지를 읽는 속도와 송신 호스트가 메시지를 보내는 속도를 일치시키는 작업을 하게 된다. 이를 '흐름제어'라고 한다. TCP는 송신 호스트가 수신 윈도우 라는 세그먼트 변수를 유지하여 흐름제어를 제공한다. 파일 전송 환경에서 수신 윈도우를 알아보자. TCP 연결 상에서 A호스트가 B호스트에서 큰 파일을 전송한다고 가정해보자. B호스트는 이 TCP 연결에 수신 버퍼를 할당한다. 이를 RcvBuffer 라고 한다. B호스트는..

    [Network] 트랜트포트 계층 : TCP 연결 (연결 지향형)

    [Network] 트랜트포트 계층 : TCP 연결 (연결 지향형)

    TCP 연결 TCP의 특징 TCP는 애플리케이션 프로세스가 데이터를 다른 프로세스에게 보내기 전에, 두 프로세스가 서로 "핸드셰이크"를 먼저 해서 연결을 시키는 사전 작업이 필요하다. 따라서 TCP는 연결을 성공시킨 뒤 데이터를 확실하게 주고 받는 연결 지향형이다. 즉, 데이터 전송을 보장하는 파라미터들을 각자 설정하기 위한 사전 세그먼트들을 보내야 한다. 파라미터로는 송수신 포트번호 등이 있다. TCP 프로토콜은 오직 종단 시스템에서만 동작하고 중간의 네트워크 계층의 요소들(라우터, 스위치) 에서는 동작하지 않는다. 따라서 중간의 네트워크 계층의 요소들은 TCP 연결상태를 유지하지 않고, 현재 전송되는 데이터가 TCP 방식인지도 알 수 없다. TCP 연결은 전이중(full-duplex)서비스를 제공한다..

    [Network] 트랜스포트 계층 : 다중화와 역다중화

    트랜스포트 계층의 다중화와 역다중화에 대해서 알아보자 다중화와 역다중화 애플리케이션의 한 부분으로서 프로세스는 소켓을 가지고 있다. 소켓을 통해서 프로세스와 프로세스가 네트워크를 통해 데이터를 주고받을 수 있다. 위 그림을 보면 트랜스포트와 애플리케이션 계층 사이에 소켓(초록 네모 박스)이 있고 소켓과 프로세스가 연결되어 있음을 볼 수 있다. 따라서 트랜스포트 계층은 메시지를 직접 프로세스로 전달하지 않고 중간 매개자인 소켓에게 전달한다. 이때 애플리케이션이 메시지를 받을 다양한 소켓을 가지고 있을 수 있으므로 각 소켓은 TCP 소켓인지 UDP 소켓인지를 구분하는 식별자를 가지게 된다. 역다중화 트랜트포트 계층에 상대 프로세스로부터 수신된 세그먼트 필드 집합이 있다. 이들은 사전에 설정된 트랜스포트 프로..

    [Network] 트랜스포트 계층 : 개요(Intro)

    [Network] 트랜스포트 계층 : 개요(Intro)

    인터넷 5계층에서 애플리케이션 계층과 네트워크 계층 사이에 있는 '트랜트포트 계층'의 프로토콜에 대해서 알아보자 트랜스포트 계층 개요 트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공한다. 논리적 통신은 애플리케이션의 관점에서 보면 프로세스들이 동작하는 다양한 호스트들이 직접 연결된 것처럼 보인다는 의미이다. 하지만 실제로 호스트들은 수많은 라우터와 다양한 형태의 물리 링크를 통해 연결된 지구상의 다른 지역에 있을 수 있다. 트랜스포트 계층 프로토콜은 네트워크 엣지에서 구현된다. 송신 측의 트랜스포트계층은 애플리케이션 프로세스로부터 받은 메시지를 세그먼트 패킷으로 변환한다. 세그먼트는 트랜스포트 계층의 헤더와 애플리케이션 계층의 메시지를 캡슐화 한 ..