본문 바로가기

학교 수업28

Network layer :: 1. 개요 정리 이번에는 네트워크 레이어의 개요를 살펴볼거야. 자 먼저, 네트워크 레이어의 근본적인 역할은 바로 송신 호스트에서 수신 호스트로 패킷을 전달하는거야. 이 역할을 수행하기 위해 두가지 기능이 있는데, 그게 바로 포워딩과 라우팅이야. 자. 포워딩(Forwading)은 그냥 단순하게, 인풋으로 들어온 패킷을 아웃풋으로 내보내는 역할을 해. 그러면 들어온건 그렇다 치고, 어떻게 적절한 아웃풋으로 내보낼까? 이게 중요하거든 그래서 필요한게 라우팅(Routing)이야. 라우팅은 목적지까지 가는데 어느 경로로 가는게 가장 좋은지 결정하는 역할을 해. 이걸 책에서는 포워딩은 하드웨어에서 이루어지고, 교차로를 지나는 과정이고 라우팅은 소프트웨어에서 이루어지고, 네비게이션 역할이다. 이런 식으로 말을하는데, 사실 잘 안와닿.. 2020. 6. 5.
Transport layor - 4. TCP Congestion control 자, 예전에 TCP가 하는 일 중에는 congestion control이 있다 그랬어 Congestion이 뭘까? 해석하면 혼잡이야 혼잡 제어 알고리즘이거든 TCP의 보내는 쪽은, 윈도우를 가지고 있어서, 윈도우가 허락하는 만큼 데이터를 연속으로 보낼 수 있다 그랬었는데, 그러면 "이 윈도우의 크기를 어떻게 결정할건가?"에 대한게 이번 주제의 핵심이야. 이걸 알아보기 위해서 옛날 버전의 TCP를 살펴볼거야. 자 보면 y축은 TCP 보내는쪽의 Congestion window size라고 되어있어, x축은 시간이야 그래프를 따라가다보면 점점점 window의 크기를 늘리다가 손실이 발생하는 순간 반으로 감소시켜서 보내 이런 매커니즘을 AIMD라고 불러, Additive Increase Multiplicativ.. 2020. 5. 9.
Transport layor - 3. TCP fast retransmit TCP는 앞에서 말했지만, 세그먼트를 보내고 나서 일정 시간이 지나도 ACK가 안오면 재전송을 한다고 했었어 그러면 한번 생각해보자. 그림을 보면 두번째 세그먼트가 도착을 못했어, 그런데 1,3,4,5는 도착했거든, 1번을 받으면 1번 세그먼트의 ACK인 100으로 피드백 해줄거야 어? 근데 왜 ACK 100일까? 92번 seq인데 그럼 92가 되어야 하는게아냐? 라고 생각 할 수 있는데, TCP는 앞에서 했던거랑 조금 다른게, ACK 100의 의미는 "나 99번까진 잘 받았는데, 100번을 기다리고있을게"라는 의미야. 아무튼, 2번이 도착못했는데 3,4,5번이 도착했어, 그러면 받는 쪽 입장에서는, "어? 아니 나 100번 기다리고있다니까? X3"을 반복하는거야. 그러면 타임 아웃이 되지 않았는데도, .. 2020. 5. 8.
Transport layor - 2.1 Pipelining, Go Back N, Selective Repeat Rdt 3.0에서는 세그먼트 하나 보내고, 그에 대한 응답으로 ACK를 받고, 만약에 ACk가 오지 않으면 타이머가 자동으로 오버되면서 재전송하고, 이런 매커니즘을 보였어 근데 이게 세그먼트가 한두개도 아닐텐데, 언제 보내고 받고하고 있어? 너무 비효울적이라는 생각 들지? 그래서 나온 개념이 Pipelining이야. 이건 뭐냐면, 그냥 ACK가 오지 않아도, 네트워크 상황이 허락하는 만큼 그냥 연달아서 보내고 그에 대한 ACK를 각각 받는거지 이 매커니즘에는 두 가지 방법이 있는데 그게 바로 Go Back N이랑, Selective Repeat 방법이야. 간단하게 차이점을 말하면, 보내는 쪽에서 재전송을 할 때, 묶음으로 보낼지 못받은것만 보낼지 하는거에 대한 차이야 둘 다 공통점은 윈도우가 허락하는 만.. 2020. 5. 7.
Transport layor - 1.3 개요 // 컴퓨터 네트워크 자 여기서부터는 잠깐 Reliable data를 어떻게 전송할지 한번 볼거야. Transport layor에서는 이걸 rdt protocol로 해결해 이게 막 rdt 1.0부터시작해서 2.0 2.1 2.2 ...3.0 하면서 버전 업 하면서 지금까지 왔대. 근데 깊게 들어가면 머리아프니까 맨 처음 시작인 1.0과 3.0만 살펴볼거야. 맨 처음은 당연히 RDT 1.0이야. 아 RDT는 Reliable Data Transfer의 약자야 1.0에서는 한가지 상황을 가정하고 가는데 바로 네트워크 환경에서 모든 것이 완벽하게 처리 된다고 가정해. 이게 무슨말이냐면, 보낸 데이터가 망가지지도 않고, 잃어버리지도 않는 경우야. 그러면 Transport layor에서는 할게 아~무것도 없어 그냥 보내고 받기만 하면 되.. 2020. 5. 6.