[네트워크] TCP/IP

Junha Kim·2021년 5월 2일
0

TCP(Transfer Control Protocol)

  • 전송 제어 프로토콜 → 4계층인 Transport Layer에 존재
  • 네트워크 통신에서 신뢰적인 연결 방식 → reliable network 보장 프로토콜
  • network congestion avoidance algorithm 사용

Reliable Network 보장의 문제점

  • 패킷이 손실될 수 있다.
  • 패킷의 순서가 바뀔 수 있음
  • 네트워크가 혼잡할 수 있음
  • recevier가 overload 되는 문제

흐름 제어 (end to end)

  • 송신 측과 수신 측의 데이터 처리 속도 차이 해결하기 위한 기법

  • Flow control은 receiver가 패킷을 지나치게 많이 받지 않도록 조절

  • receiver가 sender에게 본인의 상태를 feedback함

  • 방법

    1. Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 다음 패킷 전송

    2. Sliding Window (Go Back N ARQ : 오류 제어 시)

      • 수신 측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 제어

        1. 송신 측에서 프레임에 번호를 붙여 윈도우 크기만큼의 프레임을 차례대로 전송하고 대기
          이때, 전송한 프레임을 버퍼에 저장 (버퍼의 개수 = 윈도우 크기)

        2. 수신 측에서 프레임의 수신을 완료하면 그 결과를 ACK+프레임 번호 형식으로 송신 측에 통보

        3. 송신 측은 ACK를 확인하면 해당 프레임을 버퍼에서 지우고 다음 차례의 프레임을 버퍼에 저장하고, 수신 측에 전송

      • '3 way handshaking'을 통해 수신 호스트의 receive window size에 자신의 send window size를 맞추게 된다.

    3. 피기 배킹

    • 양방향 전송을 지원하는 경우

    • ACK를 별도의 응답으로 보내지 말고, 정보 프레임에 담아 함께 보내면 전송 횟수를 줄이는 효과

혼잡 제어

  • 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법
  • 각 호스트는 정보를 빨리 보내기 위하여 정해진 시간 내에 보낼 수 있는 최대의 패킷을 보냈고, 일부 라우터에서는 혼잡 현상이 발생하여 정해진 시간 내에 받은 패킷들을 모두 처리하지 못하였다.
  • 정해진 시간 내에 패킷이 처리되지 않으면 호스트는 패킷을 재전송하였고, 라우터는 더 많은 패킷을 받게 되어서 혼잡 현상이 더 심해졌다.
  • 송신측에서 보내는 데이터의 전송속도를 강제로 줄이게 되는데, 이러한 작업을 혼잡제어
  • 흐름제어송신측과 수신측 사이의 전송속도를 다루는데 반해, 혼잡제어호스트와 라우터를 포함한 보다 넓은 관점에서 전송 문제를 다루게 된다.
  1. AIMD (Addictive Increase/ Multiplicative Decrease) (합 증가 / 곱 감소)

    1. 처음 패킷을 보냄 → 문제 없이 도착하면 window 크기를 1씩 늘림
    2. 전송 실패 → 패킷 보내는 속도를 절반으로 줄임
    • 모든 호스트들에게 공평 → 나중에 들어온 호스트는 처음에는 불리하지만 시간이 흐르면 평형 상태
    • 초기의 전송 속도가 너무 느림 → 1씩 증가해야되기 때문에
    • 혼잡해지고 나서야 대역폭을 줄임
  2. Slow Start (느린 시작)

    1. 패킷을 1개부터 보내는 것은 위와 동일 → ACK 패킷마다 window 크기를 1씩 늘림 → 한 주기가 지나면 window 크기는 2배가 됨
    2. 혼잡 현상이 발생 → window 크기를 1로 떨어뜨림
    • 초기 수용량을 예상할 수 있는 정보는 없지만, 한 번 혼잡이 발생하면 어느정도 예상 가능 → 혼잡이 발생하는 window 크기의 절반까지는 이전처럼 2배씩 증가, 이후 부터는 1씩 증가

  3. Fast Retransmit (빠른 재전송)

    • 빠른 재전송은 TCP의 혼잡 조절에 추가된 정책이다.
    • 패킷을 받는 쪽에서 먼저 도착해야할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보내게 된다. 단, 순서대로 잘 도착한 마지막 패킷의 다음 패킷의 순번을 ACK 패킷에 실어서 보내게 되므로, 중간에 하나가 손실되게 되면 송신 측에서는 순번이 중복된 ACK 패킷을 받게 된다. 이것을 감지하는 순간 문제가 되는 순번의 패킷을 재전송 해줄 수 있다.
    • 중복된 순번의 패킷을 3개 받으면 재전송을 하게 된다. 약간 혼잡한 상황이 일어난 것이므로 혼잡을 감지하고 window size를 줄이게 된다.
  4. Fast Recovery (빠른 회복 정책)

    • 혼잡한 상태가 되면 창 크기를 1로 줄이지 않고, 반으로 줄이고 선형 증가시키는 방법이다
    • 빠른 회복 정책까지 적용하면 혼잡 상황을 한번 겪고 나서부터는 순수한 합 증가/곱 감소 방식으로 동작한다.

IP (Internet Protocol)

  • 패킷 통신 방식 프로토콜 → 3계층인 Network Layer에 존재

  • 패킷 전달 여부를 보증하지 않음 → 패킷을 보낸 순서와 받은 순서가 다를 수 있음.

    → 이걸 TCP가 관리해줌

0개의 댓글