[모두의 네트워크] 전송계층: 신뢰할 수 있는 데이터 전송하기

컴공생의 코딩 일기·2023년 7월 28일
0

네트워크

목록 보기
6/8

전송 계층의 역할

  • 물리 계층, 데이터 계층, 네트워크 계층의 3계층이 있으면 목적지에 있는 데이터를 보낼 수 있다. 하지만 데이터가 손상되거나 유실되더라도 이들 계층에서는 아무것도 해주지 않는다.

  • 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다.

  • 전송 계층:

    • 오류를 점검하는 기능이 있다. (오류가 발생하면 데이터를 재전송하도록 요청)
    • 해당 데이터가 어떤 애플리케이션에서 사용하는 데이터인지 판단

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

전송 계층의 특징

  • 신뢰성/정확성

    • 데이터를 목적지에 문제없이 전달
    • 연결형 통신: 상대편과 확인해 가면서 통신하는 방식
      • TCP: Transmission Control Protocol(전송 제어 프로토콜)
  • 효율성

    • 데이터를 빠르고 효율적으로 전달
    • 비연결형 통신: 상대편과 확인하지 않고 일방적으로 데이터를 전송하는 방식
      • 비디오 시청시 사용
      • UDP: User Datagram Protocol(사용자 데이터그램 프로토콜)

TCP의 구조

  • TCP 헤더: TCP로 전송할 때 붙이는 헤더

  • TCP 세그먼트: TCP 헤더가 붙은 데이터

  • 연결형 통신에서 데이터를 전송하기 위해서는 그 전에 연결(connection)이라는 가상의 독점 통신로를 확보해야한다.

  • 코드 비트:

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

3-way 핸드셰이크란?

  • 연결(connection)은 SYN과 ACK를 사용하여 확립하는데 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷을 교환한다. (3번 확인)
  • 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환하는 것을 3-way 핸드셰이크(three-way handshake)라고 한다.
  • 연결을 끊을 때는 FIN(연결 종료)ACK(확인 응답)를 사용한다.

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

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

  • 일련번호:

    • 송신 측에서 수신 측에 '이 데이터가 몇 번째 데이터인지' 알려주는 역할
    • 전송된 데이터에 일련번호를 부여하면 수신자는 원래 데이터의 멏 번째 데이터를 받았는지 알 수 있다.
    • 순서, 연속된 번호라는 뜻
  • 확인 응답번호:

    • 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할
    • 다음 번호의 데이터를 요청하는데 사용

일련번호와 확인 응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송하는데 이를 재전송 제어라고 한다.

윈도우 크기

  • 세그먼트(데이터)를 한 번 보낼 때 마다 응답을 반환하는 방식은 효율이 좋지 못하다.

  • 세그먼트(데이터)를 연속해서 보내고 난 다음에 확인 응답을 반환하면 호율이 높아진다.

    • 버퍼(Buffer)를 사용해 세그먼트를 여러 개 받을 수 있다.
    • 버퍼가 넘치는 것을 오버플로우(overflow)라고 한다.
    • 오버플로우가 되지 않기 위해서는 버퍼의 한계 크기를 알 고 있어야 한다. 그것이 TCP 헤더의 윈도우 크기 값에 해당한다.
    • 윈도우 크기: 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지를 나타낸다.
  • 윈도우 크기에 초깃값은 3-way 핸드셰이크를 할 때 판단한다.

포트 번호의 구조

  • 포트번호: 애플리케이션을 구분 할 때 사용
  • TCP 헤더: 출발지 포트 번호(source port number), 목적지 포트 번호(destination port number)
  • 포트번호: 0 ~ 65535번을 사용할 수 있다.
    • 0 ~ 1023번: 주요 프로토콜이 사용되도록 예약되어 있다.
      • 서버측 애플리케이션에서 사용
    • 1024: 예약되어 있지만 사용되지 않는 포트
    • 1025번 이상: 랜덤 포트
      • 클라이언트 측의 송신 포트로 사용

  • 서버에서 사용되는 번호(예약 번호):

UDP의 구조

  • 비연결 통신
  • 데이터를 효율적으로 빠르게 전송
  • 상대방을 확인하지 않고 데이터를 전송
  • 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있다. (브로드캐스트)

UDP 헤더란?

  • UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.
profile
더 좋은 개발자가 되기위한 과정

0개의 댓글