[Network] 6) 전송 계층: 신뢰할 수 있는 데이터 전송하기

Gon Kim·2022년 11월 10일
0

전송 계층 신뢰성/정확성 효율성 연결형 통신 비연결형 통신

TCP segment 3-way handshake SYN ACK FIN

Sequence Number Acknowledgement Number 재전송 제어 Buffer Window Size 포트 번호

UDP UDP Datagram Broadcast

#정리

  • 목적지에 신뢰할 수 있는 데이터를 효율적으로 전달하는 역할
  • TCP
    • 3-way handshake로 상대의 상태를 확인하고 연결 확립. 상대 호스트가 살아 있는지, 상대 호스트의 버퍼 크기는 어느 정도인지 등등 확인 → 연결 확립
    • SYN → SYN + ACK → ACK / FIN → ACK, FIN → ACK
    • sequence number와 acknoledge number로 데이터를 빠짐 없이 순서대로, 손상되지 않은 상태로 받도록 한다. 이상 있을 때 데이터를 다시 보내도록 한다. → 재전송 제어
    • buffer를 이용해 효율으로 데이터를 전송한다. 이 때 window size를 고려한다.

23. 전송 계층의 역할

전송 계층 신뢰성/정확성 효율성 연결형 통신 비연결형 통신

전송 계층

  • 목적지에 신뢰할 수 있는 데이터를 전달하는 역할을 한다.
    • 이 전 계층들은 데이터가 손상되거나 유실되더라도, 아무것도 하지 않는다.

다음과 같은 기능이 있다.

  • 오류 점검
    • 오류 발생시 재전송 하도록 요청
  • 전송된 데이터의 목적지 프로세스를 식별
    • 호스트 내에서 어떤 애플리케이션에 필요한 데이터인지 식별

연결형 통신과 비연결형 통신

전송 계층에는 다음과 같은 특징이 있다.

  • 신뢰성/정확성
    • 목적지에 데이터를 문제없이 전달하는 것
  • 효율성
    • 데이터를 빠르고 효율적으로 전달하는 것

위 특성은 다음으로 이어진다.

  • 연결형 통신
    • 상대편과 의사소통 후 데이터 전달. 신뢰성/정확성을 우선한다.
    • TCP
  • 비연결형 통신
    • 일방적인 데이터 전달. 효율성을 우선한다. ex) 동영상
    • UDP

24. TCP의 구조

TCP segment 3-way handshake SYN ACK FIN

TCP

  • 연결형 통신
  • TCP 헤더가 붙은 데이터를 segment(세그먼트)라고 한다.
  • 헤더에는 다음과 같은 것들이 포함된다.
    • 프로세스 식별을 위한 출발지 포트, 목적지 포트
    • SYN, ACK 등을 포함하는 코드 비트
    • 체크섬 등등

3-Way Handshake

  • 연결형 통신에서는 상대방의 상태 등을 확인하며 데이터를 전송한다. 이를 위해 가상의 통신로인 ‘connection’(연결)을 확보해야한다.

    • 상대방이 데이터를 잘 받을 준비가 되어있다면, 연결된 것으로 본다.
  • 3-way handshake에는 몇 가지 절차가 있다. 각각의 데이터 전송이 어떠한 것을 의미하는지를 헤더의 코드 비트(SYN, ACK등)에 표현한다

    • 코드 비트는 총 6bits로 구성된다.
      • URG ACK PSH RST SYN FIN
      • 해당 부분을 표기하고자 하면 1을, 그게 아니면 0을 사용한다.

컴퓨터 1, 2 사이의 3-way handshake는 다음과 같은 절차로 이루어진다.

연결 시작

  1. 컴퓨터 1은 통신을 위해 컴퓨터2에게 허가를 받아야한다. 연결 확립 허가를 받기 위해 SYN을 보낸다.
    • SYN
  2. 컴퓨터2가 위 데이터를 성공적으로 받은 후, 연결을 허가한다면 ACK을 보낸다. 이 때 컴퓨터 2도 연결 확립 요청을 위해 SYN을 함께 보낸다.
    • SYN + ACK
  3. 컴퓨터1은 2의 요청을 받고, 이를 허가한다는 응답으로 ACK을 보낸다.
    • ACK
  • 위 절차를 통해 상호간에 데이터를 주고 받을 준비를 마친다.

연결 종료

  1. 컴퓨터 1에서 컴퓨터 2로 연결 종료 요청 FIN을 보낸다.
  2. 컴퓨터 2에서 컴퓨터 1로 연결 종료 응답 ACK을 보낸다.
  3. 컴퓨터 2 또한 연결 종료 요청 FIN을 보낸다.
  4. 컴퓨터 1에서 이에 대한 응답으로 ACK을 보낸다.

25. 일련번호와 확인 응답 번호의 구조

Sequence Number Acknowledgement Number 재전송 제어 Buffer Window Size

Sequence number, Acknowledgement number

신뢰성 있는 데이터를 주고 받기 위해, 즉, 주고 받은 데이터에 오류가 없도록 하기 위해 sequence number(일련번호)와 acknowledgement number(확인 응답 번호)를 사용한다.

  • 일련번호
    • 해당 데이터가 몇 번째 데이터인지 알려준다.
  • 확인 응답 번호
    • 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려준다.
  • 재전송 제어
    • 이를 통해 확인된 데이터가 손상되거나 유실된 경우에 데이터를 재전송하게 되고, 이를 재전송 제어라고 한다.

  • 3-way handshake가 이루어질 때 이번 통신에 사용할 일련번호 3001과 응답번호 4001이 결정된다.
  • 데이터 송신이 완료되면 수신측에서는 다음에 받고 싶은 데이터의 첫 번호를 확인 응답 번호에 넣어 보내준다.
  • 송신측은 데이터 송신시 해당 데이터의 시작 번호를 일련번호에 넣어 보내준다.

Window size

위와 같이 세그먼트 하나를 보낼 때마다 응답을 반환하는 통신은 비효율적이다. 확인 응답이 올 때까지 기다렸다가 보내야하기 때문이다.

따라서 한번에 여러 세그먼트를 보내고, 응답을 한번에 반환하면 효율이 높아진다.

  • Buffer(버퍼)
    • 세그먼트를 무한정 연속으로 보낼 수 없다. 연속으로 오는 세그먼트를 일시적으로 보관하기 위해 컴퓨터가 할당한 장소를 버퍼라고 한다.
    • 버퍼의 크기만큼만 세그먼트들을 연속으로 받아 보관할 수 있다.
    • 대량으로 데이터가 전송되어 버퍼로 감당되지 않는 세그먼트들이 쌓이는 것을 overflow(오버플로)라고 한다.
  • window size(윈도우 사이즈)
    • 버퍼의 한계 크기이다.
    • 3-way handshake를 할 때, 윈도우 크기를 미리 교환해, 한번에 어느정도까지 데이터를 연속으로 보낼 수 있는지를 결정할 수 있다.

26. 포트 번호의 구조

포트 번호

포트 번호

  • 목적지 애플리케이션을 구분하기 위해 사용한다.
  • 0~65535번을 사용한다.
  • 0~1023번은 주요 프로토콜이 사용하도록 예약되어 있다. well-known ports(잘 알려진 포트)라고 한다. 일반적으로 서버측 애플리케이션에 사용된다.
  • 1025이상은 아무나 써도 되는 포트이다. 랜덤 포트라고 한다.
    • 참고로 웹 브라우저는 접속할 때 임의의 포트가 자동 할당된다고 한다.
  • 출발지, 목적지 포트 번호를 명시함으로써, 수신측이 응답할 때 어떤 포트로 응답해야하는지 알 수 있다.

27. UDP

UDP UDP Datagram Broadcast

UDP

  • 비연결형 통신
  • 효율성을 중요하게 여긴다. 신뢰성과 정확성이 TCP에 비해 상대적으로 떨어진다.
  • 상대방이 데이터를 제대로 받았는지에 관한 응답은 따로 받지 않는다.
  • 동영상 스트리밍 서비스 등에 사용

UDP 헤더

  • 올바른 목적지에 전달하기 위한 수준의 정보만 기록된다.
  • UDP 헤더가 붙은 데이터를 UDP Datagram(데이터그램)이라고 하낟.

Broadcast

  • LAN에 있는 모든 컴퓨터나 네트워크 장비에 데이터를 일괄적으로 보낼 수 있다. 이를 broadcast(브로드캐스트)라고 한다. UDP는 브로드캐스트가 가능하다.
  • TCP는 확인 응답을 하나 하나 보내기에 불특정 다수에게 보내는 통신에는 부적합하다.
profile
응애

0개의 댓글