본문 바로가기
모두의 네트워크

6장 전송 계층 : 신뢰할 수 있는 데이터 전송하기

by lleesla 2024. 4. 29.

OSI 모델 4계층인 전송 계층에 대해 알아보자.


Lesson 23. 전송 계층의 역할

1. 전송 계층의 두 가지 역할

  • 네트워크 계층을 설명할 때 다른 네트워크로 데이터를 전송하려면 라우터가 필요하고, 라우터의 라우팅 기능을 사용하여 전송할 수 있다고 했다.
  • 그렇다면 라우터의 라우팅 기능을 통해 데이터를 전송하더라도 목적지에 도착하지 못할 수도 있을까?
    • Yes! 라우팅 정보가 잘못될 수도 있고, 많은 라우터를 경유하는 도중에 라우터에 문제가 생기거나 패킷이 손상될 수도 있기 때문
  • 물리 계층, 데이터 링크 계층, 네트워크 계층의 3계층이 있으면 목적지에 데이터를 보낼 수 있다. 하지만 데이터가 손상되거나 유실되더라도 이들 계층에서는 아무것도 해주지 않음
  • 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다. 어떻게 전달하는지?
    • 전송 계층에는 오류를 점검하는 기능이 있어 오류가 발생하면 데이터를 재전송하도록 요청한다.
    • 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능이 있다.

2. 연결형 통신과 비연결형 통신

  • 전송 계층의 특징
    • 신뢰성/정확성 : 데이터를 목적지에 문제없이 전달하는 것
    • 효율성 : 데이터를 빠르고 효율적으로 전달하는 것
  • 연결형 통신
    • 신뢰할 수 있고 정확한 데이터를 전달하는 통신
    • 상대편과 확인해가며 통신하는 방식
    • TCP(Transmission Control Protocol, 전송 제어 프로토콜) 사용
  • 비연결형 통신
    • 효율적으로 데이터를 전달하는 통신
    • 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식
    • UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜) 사용
    • 동영상을 보낼 때 사용
      • 동영상은 신뢰할 수 있고 정확한 데이터 전송보다 빠른 전송이 필요하기 때문에 데이터가 늦게 도착해서 화면이 버벅거리는 동영상을 보는 것보다 데이터가 약간 유실되더라도 원할하게 보는게 좋기 때문

 

Lesson 24. TCP의 구조

1. TCP란?

  • 전송 계층 프로토콜 중 연결형 통신 방식, 신뢰할 수 있는 데이터 전송을 보장한다.
  • 3-way 핸드셰이크로 연결이 확립된 후에 데이터를 전송하고, 확인 응답을 한다.
    • 데이터 전송 도중에 오류가 발생하면 재전송하거나 포트 번호로 애플리케이션을 구분하여 데이터를 정확하게 전달하기 위한 기능이 있다.

 

  • TCP로 전송할 때 붙이는 헤더를 TCP 헤더라고 하며, TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
  • 데이터를 전송하기 전에 먼저 연결(connection)이라는 가상의 독점 통신로를 확보한 후 연결을 확립한 후에 데이터를 전송할 수 있다.

  • 코드 비트는 TCP 헤더의 107번째 비트부터 112번째 비트까지 6비트로 연결의 제어 정보가 기록된다.
    • 각 비트별로 역할이 있는데, 초기값은 0이고 비트가 활성화되면 1이된다. 연결을 확립하려면 SYN(연결 요청)과 ACK(확인 응답)가 필요하다.

2. 3-way 핸드셰이크란?

 

 

  • SYN과 ACK를 사용한 연결 확립 과정
    1. 통신을 하려면 컴퓨터 2에게 허가를 받아야 하므로, 먼저 컴퓨터 1에서 컴퓨터 2로 연결 확립 허가를 받기 위한 요청(SYN)을 보낸다.
    2. 컴퓨터 2는 컴퓨터 1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)를 보낸다. 동시에 컴퓨터 2도 컴퓨터 1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다.
    3. 컴퓨터 2의 요청을 받은 컴퓨터 1은 컴퓨터 2로 허가한다는 응답으로 연결 확립 응답 (ACK)를 보낸다.

이처럼 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것을 3-way 핸드셰이크라고 한다.

  • 연결을 끊을 때는 FIN(연결 종료)과 ACK를 사용한다.

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

1. 일련번호와 확인 응답 번호란?

  • 3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련번호와 확인 응답번호를 사용한다.

 

  • 일련번호
    • 송신 측에서 수신 측에 해당 데이터가 몇 번째 데이터인지 알려준다.
    • 전송된 데이터에 일련번호를 부여하면 수신자는 원래 데이터의 몇 번 째 데이터를 받았는지 알 수 있다.
  • 확인 응답 번호
    • 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 한다.
    • 이 번호는 다음 번호의 데이터를 요청하는데도 사용된다.

2. 윈도우 크기란?

  • 매번 확인 응답을 기다리는 대신 세그먼트를 연속해서 보낸 후 다음에 확인 응답을 반환하면 효율이 높아진다.
  • 받은 세그먼트를 일시적으로 보관하는 장소(버퍼)가 있어 세그먼트가 계속 쌓여도 괜찮다.
    • 버퍼 덕분에 세그먼트를 연속해서 보내도 수신 측은 대응할 수 있고 확인 응답의 효율도 높아진다.
  • 수신 측이 대량으로 세그먼트를 받아서 처리하지 못하는 경우 보관하지 못하고 넘쳐 버리는데 이것을 오버플로라고 한다.
  • 오버플로가 발생하지 않도록 버퍼의 한계 크기를 알고 있어야 하는데, 그것이 TCP 헤더의 윈도의 크기에 해당하는 값이다.

  • 윈도우 크기는 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지 나타낸다.
  • 3-way 핸드셰이크를 하는 동안에 서로의 윈도우 크기를 확인하고 있고, 수신 측의 버퍼 한계 값을 알면 세그먼트(데이터)를 오버플로되지 않도록 보낼 수 있다.
  • 서로 윈도우 크기를 알고 있다면 확인 응답을 받지 않고도 세그먼트(데이터를)를 연속적으로 전송할 수 있어 효율적이다.

Lesson 26. 포트 번호의 구조

1. 포트 번호란?

  • 전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하기 위해 출발지 포트 번호와 목적지 포트 번호가 필요하다.
  • 포트 번호는 0~65535번을 사용할 수 있다.
    • 0~1023번 포트는 주요 프로토콜이 사용하도록 예약되어 있고, 잘 알려진 포트라고 한다. 일반적으로 사용하는 서버 측 애플리케이션에서 사용되고 있다.
    • 1024번은 예약되어 있지만 사용되지 않는 포트고, 1025번 이상은 랜덤 포트라고 해서 클라이언트 측의 송신 포트로 사용된다.
  • TCP는 어떤 애플리케이션이 사용되고 있는지 구분하기 위해 포트 번호가 필요하다.
  • 웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할당된다.

Lesson 27. UDP의 구조

1. UDP란?

  • 정보를 서로 주고받을 때 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다.
  • 연결을 맺을 필요가 없는 정보를 보내거나 받는다는 신호도 필요하지 않다.
  • 비연결형 통신이며 데이터를 효율적으로 빠르게 보낼 수 있다.

2. UDP 헤더란?

  • UDP 헤더가 붙은 데이터를 UDP 데이터그램이라 한다.
  • 신뢰성과 정확성이 필요하지 않고 효율성과 빠른 속도가 중요해서 상대방을 확인하지 않고 연속해서 데이터를 보낸다.

  • 전송속도가 TCP에 비해 빠르다.
  • 브로드캐스트
    • 네트워크의 모든 컴퓨터와 장비에 같은 패킷을 일괄 전송하는 방식이다.
    • 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있다.
    • TCP는 확인 응답을 하나씩 보내야 하기 때문에 브로드캐스트 같이 불특정 다수에게 보내는 통신이 적합하지 않다.