트랜스포트 계층 프로토콜

  • 종단 시스템 사이의 IP 전달 서비스를 종단 시스템에서 동작하는 두 프로세스 간의 전달 서비스로 확장하는 역할

  • TCP (Transmission Control Protocol)

    • 패킷 단위 - 세그먼트

    • 신뢰적인 데이터 전송을 제공한다. 흐름 제어, 순서 번호, 확인 응답, 타이머를 사용함으로써 TCP는 송신하는 프로세스로부터 수신하는 프로세스에게 데이터가 순서대로 정확하게 전달되도록 한다.

    • 혼잡 제어를 사용하여 TCP 연결이 과도한 양의 트래픽으로 모든 통신하는 호스트들 사이의 스위치와 링크를 홉잡하게 하는 것을 방지한다.

  • UDP (User Datagram Protocol)

    • 패킷 단위 - 세그먼트, 데이터그램

    • 비신뢰적인 데이터 전송을 제공한다. 하나의 프로세스에 의해 전송된 데이터가 손상되지 않고 목적지 프로세스에 도착한다는 것을 보장하지 않는다.


다중화와 역다중화

  • 다중화 - 출발지 호스트에서 소켓으로부터 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해 각 데이터에 헤더 정보로 캡슐화하고, 그 세그먼트들을 네트워크 계층으로 전달하는 작업

  • 역다중화 - 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업

  • 수행 과정

    • 트랜스 포트 계층 다중화에서 소켓은 유일한 식별자를 가지고 각 세그먼트는 세그먼트가 전달될 적절한 소켓을 가리키는 출발지 포트번호 필드와 목적지 포트 번호 필드를 가진다.

    • 호스트의 각 소켓은 포트 번호를 할당받는다.

    • 세그먼트가 호스트에 도착하면, 트랜스포트 계층은 세그먼트 안의 목적지 포트 번호르르 검사하고 상응하는 소켓으로 세그먼트를 보낸다.

    • 세그먼트의 데이터는 소켓을 통해 해당되는 프로세스로 전달된다.


비연결형 트랜스포트 : UDP

  • 다중화/역다중화 기능과 간단한 오류 검사 기능을 제외하면 IP에 아무것도 추가하지 않는다.

  • 세그먼트를 송신하기 전에 송신 트랜스포트 계층 개체들과 수신 트랜스포트 계층 개체들 사이에 핸드셰이크를 사용하지 않아 비연결형이라고 한다.

  • 예) DNS

    • DNS 질의 메시지를 작성하고 UDP에게 메시지를 넘겨준다.

    • 어떠한 핸드셰이크도 수행하지 않고, 메시지에 헤더 필드를 추가한 후에 최종 세그먼트를 네트워크 계층에 넘겨준다.

    • 네트워크 계층은 UDP 세그먼트를 데이터 그램으로 캡슐화하고 네임 서버에 데이터 그램을 송신한다.

    • 질의 호스트에서의 DNS 애플리케이션은 질의에 대한 응답을 기다린다.

    • 만약 질의 호스트가 응답을 수신하지 못하면 질의를 다른 네임 서버로 송신하거나 이를 야기한 애플리케이션에게 응답을 수신할 수 없을을 통보한다.

  • UDP 체크섬

    • 체크섬은 세그먼트가 출발지로부터 목적지로 이동했을 때, UDP 세그먼트 안의 비트에 대한 변경사항이 있는지 검사하는 것으로 오류 검출을 위한 것이다.
  • UDP가 더 선호되는 이유

    • 무슨 데이터를 언제 보낼지에 대해 애플리케이션 레벨에서 더 정교한 제어

    • 연결 설정이 없어 어떤 지연도 없다.

    • 연결 상태가 없어 일번적으로 좀 더 많은 클라이언트를 수용할 수 있다.

    • TCP에 비해 더 작은 패킷 헤더 오버헤드를 가진다.


신뢰적인 데이터 전송

  • GBN 프로토콜 - 패킷 하나의 오류가 발생하면 오류가 발생한 패킷부터 이전의 전송했던 패킷을 모두 재전송한다.

  • SR 프로토콜 - 수신자에서 오류가 발생한 패킷을 수신했다고 의심되는 패킷만을 송신자가 다시 전송하여 불필요한 재전송을 피한다.


연결지향형 트랜스포트 : TCP

  • TCP 연결

    • 두 프로세스는 연결 지향형으로 연결된다.

    • 전이중 서비스를 제공하여 두 호스트는 각자의 데이터를 동시에 상대방 호스트에 전송할 수 있다.

    • 항상 단일 송신자와 단일 수신자 사이의 점대점 연결이다. 따라서, 멀티태스킹은 불가능하다.

    • 연결 설정 방법 - 세 방향 핸드셰이크 (three-way handshake)

      • 연결을 초기화하는 프로세스를 클라이언트 프로세스라하고 다른 프로세스를 서버 프로세스라고 부른다.

      • 클라이언트가 연결을 위한 특별한 TCP 세그먼트를 보내면 서버는 두번 째 특별한 TCP 세그먼트로 응답한다.

      • 클라이언트는 세 번째 특별한 세그먼트로 다시 응답하면 TCP 연결 설정이 완료된다.

      • 이렇게 두 호스트 사이에 3개의 세그먼트가 보내지므로 연결 설정 절차를 세 방향 핸드셰이크라고 부른다.

  • 타임 아웃 - 만약 수신 측에서 확인을 보내지 않거나, 전송된 데이터 패킷이 중간에 손실되거나 지연되는 경우, 타임아웃이 발생한다. 타임아웃은 일반적으로 세그먼트가 재전송되어야 함을 의미하고, 송식 측에서 해당 세그먼트를 다시 전송한다. 이를 통해 데이터의 안정성과 신뢰성이 확보된다.

  • 흐름 제어

  • TCP는 송신자가 수신자의 버퍼를 오버플로시키는 것을 방지하기 위해 애플리케이션에게 수신하는 애플리케이션이 읽는 속도와 송신자가 전송하는 속도를 같도록 하는 흐름 제어 서비스를 제공한다.

  • TCP 연결 관리

    • TCP연결 과정

      • 1단계 - 클라이언트 측 TCP는 서버 TCP에게 특별한 TCP 세그먼트를 송신한다.

      • 2단계 - TCP SYN 세그먼트를 포함하는 IP 데이터그램이 서버 호스트에 도착하면, 서버는 데이터그램으로부터 TCP SYN 세그먼트를 추출한다.

      • 3단계 - 연결 승인 세그먼트를 수신하면, 클라이언트는 연결에 버퍼와 변수를 할당한다.

    • TCP 연결이 존재하는 동안 각 호스트에서 동작하는 TCP 프로토콜은 다양한 TCP 상태를 전이한다.


혼잡 제어

  • 종단 간의 혼잡 제어 - 네트워크 계층은 혼잡 제어 목적을 위해 트랜스포트 계층에게 어떤 직접적인 지원도 제공하지 않는다. 네트워크에서 혼잡의 존재는 관찰된 네트워크 동작에 기초하여 종단 시스템이 추측해야한다.

  • 네트워크 지원 혼잡 제어 - 라우터들은 네트워크 안에서 혼잡 상태와 관련하여 송신자나 수신자 또는 모두에게 직접적인 피트백을 제공한다.

  • 네트워크 지원 혼잡 제어 - 라우터들은 네트워크 안에서 혼잡 상태와 관련하여 송신자나 수신자 또는 모두에게 직접적인 피드백을 제공한다.

    • ATM ABR 혼잡제어 - 라우터는 자신이 출력 링크(outgoing link)에 제공할 수 있는 전송률을 송신자에게 명확히 알릴 수 있게 해준다.