Skip to content

Latest commit

 

History

History
95 lines (75 loc) · 6.12 KB

강민성.md

File metadata and controls

95 lines (75 loc) · 6.12 KB

TCP

  • Unreliable network에서, Reliable network를 보장할 수 있도록 하는 프로토콜
  • 인터넷 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
    • IP가 데이터의 배달을 처리한다면, TCP는 패킷을 추적하고 관리
  • TCP는 연결형 서비스를 지원하는 프로토콜
    • 인터넷 환경에서 기본으로 사용한다.
    • 연결 지향 방식으로 3-way로 Connection을 설정, 4-way로 해제한다.
  • 흐름 제어 및 혼잡 제어 역할
  • 연결형 서비스로 신뢰성을 보장하여, 연속성보다 신뢰성이 있는 전송이 중요할 때 사용되는 프로토콜
    • 웹 HTTP 통신, 이메일, 파일전송
  • 서버와 클라이언트는 1대1 연결이다.
  • 패킷에 대한 잘 받았다는 응답을 해야하기 때문에 성능이 낮다.

TCP 패킷과 추적/관리

  • 데이터를 여러 개의 조각들로 나누어서 전송 → 패킷
  • 패킷에 번호를 부여하여, 패킷의 분실 확인, 목적지에서 재조립을 한다.
  • TCP Flag
    • 무엇인가를 기억해야 하거나 또는 다른 프로그램에게 약속된 신호를 남기기 위한 용도로 프로그램에서 사용되는 미리 정의된 비트

      image
    • TCP 헤더에 Control Flag에 해당하는 필드 6개가 1비트씩 존재 (논리적인 TCP 연결회선 제어 및 데이터 관리에 사용)

      • SYN (Synchronize) 연결 요청 플래그
      • ACK (Acknowledgement) 응답 플래그
      • FIN (Finish) 연결 종료 플래그
      • RST (Reset) 연결 재설정 플래그
      • PSH (Push) 넣기 플래그 - 버퍼가 채워지기를 기다리지 않고 데이터를 받는 즉시 전달
      • URG (Urgent) 긴급 데이터 플래그 - 우선순위를 높여 긴급하게 데이터 전달

흐름제어/혼잡제어

  • 흐름 제어

    • 수신측이 송신측보다 데이터 처리 속도가 빠르면 문제없지만, 송신측의 속도가 빠를 경우 문제

    • 수신측에서 제한된 저장 용량을 초과한 이후에 도착하는 데이터는 손실 될 수 있으며, 만약 손실 된다면 불필요하게 응답과 데이터 전송이 송/수신 측 간에 빈번히 발생

    • 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지

    • 해결방안

      • Stop and wait
        • 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법
      • Sliding Window
        • 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법
      image
  • 혼잡 제어

    • 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지, 정보가 많으면 패킷을 조금만 전송하여 혼잡 현상을 방지
    • 네트워의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송 속도를 강제로 감소시키는 것이 혼잡제어
    • 종류
      • 합 증가/곱 감소

        • 처음에 패킷을 하나씩 보내고 문제없이 도착하면 창 크기(단위 시간 내에 보내는 패킷의 수)를 1씩 증가
        • 만일 패킷 전송을 실패하거나 일정한 시간을 넘으면 패킷을 보내는 속도를 절반으로 감소
        • 문제점
          • 초기에 네트워크의 높은 대역폭을 사용하지 못하여 오랜 시간이 걸림
          • 네트워크가 혼잡해지는 상황을 미리 감지하지는 못함
          • 즉, 네트워크가 혼잡해지고 나서야 대역폭을 줄이는 방식
        image
      • 슬로우 스타트

        • 처음에 패킷을 하나씩 보내는 것 부터 시작

        • 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 Window size를 1씩 늘림

          • 합 증가/곱 감소와 다르게 지수 함수꼴로 증가
        • 대신, 혼잡 현상이 발생하면 Window size를 1로 떨어뜨림

        • 하지만, 한번 혼잡 현상이 발생하고 나면 네트워크의 수용량을 어느 정도 예상할 수 있어 혼잡 현상이 발생하였던 Window size의 절반까지는 이전처럼 지수 함수 꼴로 창 크기를 증가, 이후부터 완만하게 1씩 증가

          image

UDP

  • 데이터를 데이터그램 단위로 처리하는 프로토콜
  • 연결을 위해 할당되는 논리적인 경로가 없으므로 각 킷은 다른 경로로 전송
  • 각각의 패킷은 독립적인 관계를 지니게 되고, 독립적으로 처리하는 프로토콜
  • 정보를 주고 받을 때, 정보를 보내거나 받는다는 신호절차를 거치지 않음
  • 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
  • 흐름 제어, 혼잡 제어 등을 하지 않으므로 신뢰성보다는 연속성이 중요한 서비스
    • 실시간 서비스(streaming), 스트리밍 분야, VoIP, mVoIP
  • 서버와 클라이언트는 1대1, 1대N, N대M 등 연결


프로토콜 종류 TCP UDP
연결 방식 연결형 서비스 비연결형 서비스
패킷 교환 방식 가상 회선 데이터그램
전송 순서 전송 순서 보장 전송 순서 바뀔 수 있음
수신 여부 확인 O X
통신 방식 1:1 1:1 or 1:N or N:N
신뢰성 ⬆️ ⬇️
속도 ⬇️ ⬆️