본문 바로가기
Network/컴퓨터 네트워킹 하향식 접근

[컴퓨터 네트워킹 하향식 접근] 3. 트랜스포트 계층

by creatingeveryday 2023. 2. 12.
트랜스포트 계층은 어떻게 통신 서비스를 제공하는가? 
어떻게 신뢰성을 확보하는가? 

 

  • 트랜스포트 계층이 제공하는 서비스
    • 트랜스포트 계층 프로토콜은 각기 다른 호스트에서 동작하는 애플리케이션의 프로세스 간의 논리적인 통신을 제공한다.
      • 현재 실행되고 있는 다수의 프로세스를 구별하여 통신할 수 있다.
      • end system 사이의 IP 전달 서비스를 end system에서 동작하는 두 프로세스 간의 전달 서비스로 확장한다.
        • 트랜스포트 계층은 세그먼트를 검사하여 올바른 목적지의 프로세스의 소켓에게 전달한다. 호스트의 각 소켓은 포트번호도 할당받는다.
        • 호스트 사이의 전달을 프로세스 사이의 전달로 확장하는 것을 트랜스포트 계층 다중화(Transport-layer multiplexing) 또는 역다중화(demultiplexing)라고 부른다.
          • 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화라고 한다.
          • 출발지 호스트에서 소켓으로부터 데이터를 모으고 이에 대한 세그먼트를 생성하기 위해 각 데이터에 헤더 정보로 캡슐화하고 그 세그먼트들을 네트워크 계층으로 전달하는 작업을 다중화라고 한다.
        • 소켓은 유일한 식별자를 가지고 있으며, 각 세그먼트는 세그먼트가 전달될 적절한 소켓을 가리키는 특별한 필드를 갖고 있다. 그 필드는 출발지 포트 번호 필드와 목적지 포트 번호 필드이다.  각각의 포트 번호는 0~ 65535까지의 16비트 정수다.
      • TCP와  UDP는 헤더에 오류 검출 필드를 추가함으로써 무결성 검사를 수행할 수 있다.
    • 통신 방법
      • 송신: 송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 세그먼트(segment)로 변환하고 트랜스포트 계층 헤더를 추가한다. 그 후 네트워크 계층으로 세그먼트를 전달한다. 네트워크 계층은 호스트 사이의 논리적 통신을 제공한다고 할 수 있다. 
      • 수신: 수신 측의 트랜스포트 계층은 네트워크 계층으로부터 전달받은 세그먼트를 데이터로 이용할 수 있게 만든다. 
    • 네트워크 계층의 IP 프로토콜이 패킷을 분실하거나 손상시켜도 애플리케이션에게 신뢰적인 데이터 전송 서비스를 제공할 수 있다. 또 네트워크 계층이 트랜스포트 계층 세그먼트의 기밀성을 보장할 수 없을 때도 메시지를 암호화할 수 있다.
  • UDP(User Datagram Protocol)
    • 비신뢰적이고 비연결형인 서비스 제공
      • 각각의 세그먼트는 독립적으로 취급이 된다.
      • TCP에 비해 상대적으로 속도가 빠르다.
      • 다중화와 역다중화 기능과 간단한 오류 검사 기능만을 제공한다. 
      • UDP를 사용하려면서 신뢰적인 데이터를 전송하려면 애플리케이션 자체에서 확인응답 기능과 재전송 기능을 제공해야 한다. 이런 방식의 장점은 TCP의 혼잡 제어 메커니즘에 의해 전송률 억제를 강요당하지 않고도 신뢰적으로 통신할 수 있다.
    • UDP 다중화와 역다중화
      • UDP 소켓은 목적지 IP 주소와 목적지 포트 번호로 구성된 두 요소의 집합으로 구별된다.
    • UDP 세그먼트 구조
      • UDP 헤더는 2바이트씩으로 구성된 4개의 필드를 가진다. (4byte, 32bit)
        • 출발지 포트 번호, 목적지 포트번호, 길이, 체크섬
        • 체크섬은 세그먼트에 오류가 발생했는지를 검사하기위해 수신 호스트가 사용한다.
  • TCP
    • 신뢰적이고 연결지향형 서비스 제공
      • TCP는 비신뢰적인 종단 간의 네트워크 계층(IP)의 바로 상위에 구현된 신뢰적인 데이터 전송 프로토콜이다.
    • 신뢰적인 데이터 전송: 데이터가 순서대로 정확하게 전달되도록 보장
      • 흐름제어
      • 일련번호: 패킷마다 존재하는 sequence number 로 패킷이 재전송되었는지 확인, 전송 받은 패킷 순서 조정
      • 확인응답: 비트 에러와 패킷로스가 없는지 확인하고 데이터가 제대로 도착했다고 승인 메시지를 보낸다.
      • 타이머: 송신자가 데이터를 보낸 후 일정시간이 지나도 응답이 오지 않으면 재전송(ARQ) 요청
      • stop and wait 
      • go-back-N
      • selective-repeat
Automatic Repeat reQuest(ARQ) 가 동작하기 위해 필요한 부가 프로토콜 기능
- 오류 검출 기능: 비트 오류가 발생했을 때 수신 측에서 오류 검출 가능.
- 수신자 피드백:  수신자가 송신자에게 긍정확인응답(ACK), 부정확인응답(NAK) 을 통해 수신 여부를 피드백한다.
- 재전송: 수신자가 받은 패킷에서 오류가 검출되면 송신자에 의해 재전송된다.

 

  • TCP 혼잡 제어
    • 너무 많은 전송자가 너무 많은 데이터를 한번에 너무 많이 전송하면 혼잡이 생기고 네트워크가 감당할 수 없다.
    • TCP는 수신자가 받을 수 있을 만큼의 최대한으로 빠르게 보낼 수 있게 조절할 수 있다.
    • 연결 수립시 maximum segment size를 결정한다.(MSS)
    • 혼잡 제어 시 end to end 방식 사용
      • 송신자 및 수신자가 자신이 보낸 데이터가 잘 도달하는지 본 후 적절한 행동을 취함.
      • AIMD: 혼잡이 없을 경우 window size를 천천히 증가시키고 혼잡 감지시 window size를 절반으로 줄인다.
  • TCP 다중화와 역다중화
    • TCP 소켓은 출발지 IP주소, 출발지 포트번호, 목적지 IP주소, 목적지 포트번호로 구성된 4가지 요소의 집합으로 구별된다.
    • 서버는 각기 다른 클라이언트가 보낸 세그먼트를 출발지 IP주소와 출발지 포트 번호로 구별한다.
  • TCP 데이터 전송
    • pipedlined transmission 

댓글