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

최준영·2022년 7월 27일
0

모두의 네트워크

목록 보기
7/10
post-thumbnail

23. 전송 계층의 역할

  • 전송 계층 : 신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 하므로 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않아도 된다. 데이터가 중복되거나 누락되지 않고 오류 없이 순서에 맞게 전송되도록 관리한다.

전송 계층의 두 가지 역할

  • 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다.
    • 물리 계층, 데이터 링크 계층, 네트워크 계층으로 목적지에 데이터를 보낼 수 있다. 하지만 데이터가 손상되거나 유실되더라고 이들 계층에서는 아무것도 해 주지 않는다.
  • 전송 계층의 두 가지 역할
    1. 오류를 점검하는 기능
    2. 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능

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

  • 전송 계층의 통신은 연결형 통신과 비연결형 통신으로 구분된다.
    • 연결형 : 데이터를 교환하기 전에 연결을 맺고 데이터를 교환하는 동안 계속 연결을 관리하는 프로토콜의 한 형태다.
    • 비연결형 : 연결(connection)에 대한 초기화 과정이 없는 통신이다.

24. TCP의 구조

TCP란?

  • Transmission Control Protocol, 전송 제어 프로토콜
  • 신뢰할 수 있고 정확한 데이터 전송을 보장하는 연결형 통신 프로토콜이다.
  • 전송 계층에서는 TCP 헤더가 붙는다. TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
  • TCP 헤더는 출발지 포트 번호, 목적지 포트 번호, 일련번호, 확인 응답 번호, 헤더 길이, 예약 영역, 코드 비트, 윈도우 크기, 체크섬, 긴급 포인터, 옵션 순서로 구성되어 있다.
  • 연결형 통신은 데이터를 전송하기 전에 먼저 연결(connection)이라는 가상의 독점 통신로를 확보해야 한다.
  • 연결을 확립하기 위해 TCP 헤더에 있는 코드 비트를 사용한다.

3-way handshake

  • TCP 통신에서 사용하는 신뢰성을 제공하기 위한 통신 방식이다. 컴퓨터 간에 연결을 맺기 위한 초기화 과정으로 세 단계로 되어 있어서 three-way라고 부른다.
  • 연결(connection)은 SYN과 ACK를 사용하여 확립할 수 있다.
    • SYN : 연결 요청, ACK : 확인 응답
  • 절차
    1. 통신을 하려면 컴퓨터 2(서버)에게 허가를 받아야 하므로, 먼저 컴퓨터 1(클라이언트)에서 컴퓨터 2로 연결 확립 허가를 받기 위한(SYN)을 보낸다.
    2. 컴퓨터 2는 컴퓨터 1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보낸다. 동시에 컴퓨터 2도 컴퓨터 1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다.
    3. 컴퓨터 2의 요청을 받은 컴퓨터 1은 컴퓨터 2로 허가한다는 응답으로 연결 확립 응답(ACK)을 보낸다.

4-way handshake

  • 데이터를 전송한 후에는 연결을 끊기 위한 요청을 교환해야 한다. 이때는 FIN과 ACK를 사용한다.
    • FIN : 연결 종료
  • 절차
    1. 컴퓨터 1(클라이언트)에서 컴퓨터 2(서버)로 연결 종료 요청(FIN)을 보낸다.
    2. 컴퓨터 2에서 컴퓨터 1로 연결 종료 응답(ACK)을 반환한다.
    3. 또한 컴퓨터 2에서도 컴퓨터 1로 연결 종료 요청(FIN)을 보낸다.
    4. 컴퓨터 1에서 컴퓨터 2로 연결 종료 응답(ACK)을 반환한다.

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

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

  • 3-way 핸드셰이크 이후 데이터를 전송할 때는 TCP 헤더의 일련번호와 확인 응답 번호가 사용된다.
    • 일련 번호 : TCP 에서는 분할한 데이터를 보낼 때마다 각 데이터에 고유한 번호를 부여해서 전송을 시도한다. 이 번호를 이용하여 TCP 패킷의 순서를 제어할 수 있다.
    • 확인 응답 번호는 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 한다. 그래서 다음 번호의 데이터를 요청하는 데도 사용된다.

  • 3-way 핸드셰이크로 연결 수립이 이루어질 때, 이번 통신에 사용하는 일련번호인 3001번과 확인 응답 번호인 4001번이 결정된다.
  • 절차 예시
    1. 컴퓨터 1은 컴퓨터 2로 200바이트의 데이터를 송신한다.
    2. 컴퓨터 2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터 번호(3001 + 200)를 확인 응답 번호에 넣는다.
    3. 데이터 전송이 완료될 때까지 반복한다.
  • 데이터가 항상 올바르게 전송되는 것이 아니므로 일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송하게 되어있다. 이를 재전송 제어라고 한다.
    • 데이터 전송 도중 오류가 발생하면 일정 시간 동안 대기한 후에 재전송한다.

윈도우 크기란?

  • 세그먼트 하나를 보낼 때마다 확인 응답을 반환한느 통신은 비효율적이다.
  • 세그먼트를 연속해서 보내고 난 다음에 확인 응답을 반환하면 효율이 높아진다.
    • 수신한 세그먼트를 일시적으로 보관하는 장소인 버퍼가 존재한다.
  • 버퍼 크기를 초과하는 대량의 데이터가 전송되면 오버플로 현상이 발생한다. 따라서 송수신 측은 서로의 윈도우 크기를 알고 있어야 한다.
    • 윈도우 크기 : 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타낸다. 즉, 버퍼 용량의 크기를 말한다.
    • 윈도의 크기의 초깃값은 3-way 핸드셰이크를 할 때 판단한다.

포트 번호의 구조

포트 번호란?

  • 포트 번호 : 컴퓨터가 데이터 통신을 할 때 통신하고자 하는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위다.
  • 전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하기 위해 포트 번호가 필요하다.
  • 포트 번호는 0 ~ 65535번을 사용할 수 있다.
    • 0 ~ 1023번 포트는 잘 알려진 포트(well-known ports)로, 주요 프로토콜이 사용하도록 예약되어 있다. 일반적으로 사용하는 서버 측 애플리케이션에서 사용되고 있다.
      • ex) SSH - 22, SMTP - 25, DNS - 53, HTTP - 80, POP3 - 110, HTTPS - 443
    • 1024는 예약 되어 있지만 사용되지는 않는 포트이다.
    • 1025번 이상은 랜덤 포트라고 해서 클라이언트의 송신 포트로 사용된다.
  • 웹 브라우저로 접속할 때 서버 측에서는 포트 번호를 정해둬야 하지만 클라이언트 측은 정하지 않아도 괜찮다.
    • 웹 브라우저에는 임의의 포트가 자동으로 할당된다.

27. UDP의 구조

UDP란?

  • User Datagram Protocol
  • 정보를 서로 주고받을 때 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다. 즉, 신뢰성을 보장하지 않지만 효율적으로 데이터를 전송하는 비연결형 통신 프로토콜이다.
  • UDP는 비연결형 통신이라서 데이터를 전송할 때 TCP처럼 시간이 걸리는 확인 작업을 하지 않는다.
  • UDP의 장점은 데이터를 효율적으로 빠르게 보내는 것이다. 따라서 스트리밍 방식으로 전송하는 동영상 서비스와 같은 곳에 사용된다.
  • UDP로 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있ㅖ다. 이를 브로드캐스트라고 한다.
    • TCP는 3-way 핸드셰이크와 같이 데이터를 전송할 때도 확인 응답을 하나씩 보내야 하기 때문에 불특정 다수에게 보내는 통신에는 적합하지 않다.

UDP 헤더란?

  • UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.
  • UDP 헤더는 출발지 포트 번호, 목적지 포트 번호, 길이, 체크섬 순서로 구성된다.
    • TCP 헤더에 비해 간단하다. 신뢰성과 정확성이 필요하지 않아서 이 정보만으로 충분하다.
profile
do for me

0개의 댓글

관련 채용 정보