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

Cornchip·2022년 10월 13일
0

모두의 네트워크

목록 보기
6/9
post-thumbnail

목차
1. 전송 계층의 역할
2. TCP의 구조
3. 일련번호와 확인 응답 번호의 구조
4. 포트번호의 구조
5. UDP의 구조



1. 전송 계층의 역할

1) 전송 계층

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

    데이터가 손상되거나 유실되어도 물리 계층, 데이터 링크 계층, 네트워크 계층에서는 아무런 조치를 해주지 않는다.

  • 전송 계층의 기능
    1. 오류를 점검하는 기능

      오류가 발생하면 데이터를 재전송하도록 요청한다.

    2. 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능

2) 전송 계층의 특징

  1. 신뢰성/정확성 : 데이터를 목적지에 문제없이 전달하는 것
    연결형 통신 (connection-oriented)

  2. 효율성 : 데이터를 빠르고 효율적으로 전달하는 것
    비연결형 통신 (connectionless)

  1. 연결형 통신 : 상대편과 요청과 응답을 반복해 가면서 통신하는 방식
    연결형 통신 프로토콜 : TCP
    ex) 대부분의 통신
  2. 비연결형 통신 : 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식
    비연결형 통신 프로토콜 : UDP
    ex) 동영상
  • 대역폭 : 정해진 시간 동안 전송될 수 있는 데이터의 양(속도)
    대역폭은 제한적이다.


2. TCP의 구조

1) TCP

  • TCP 헤더 : TCP로 전송할 때 붙이는 헤더
  • 세그먼트(segment) : TCP 헤더가 붙은 데이터

    TCP 헤더 의 내용과 순서

    1. 출발지 포트 번호(16비트)
    2. 목적지 포트 번호(16비트)
    3. 일련번호(32비트)
    4. 확인 응답 번호(32비트)
    5. 헤더 길이(4비트)
    6. 예약 영역(6비트)
    7. 코드 비트(6비트)
    8. 윈도우 크기(16비트)
    9. 체크섬(16비트)
    10. 긴급 포인터(16비트)
    11. 옵션
  • Connection(연결) : 데이터를 전송하기 위해서 먼저 확보해야 하는 가상의 독점 통신로
  • 코드 비트의 6개 비트에는 Connection 제어 정보가 기록된다.
    • URG, ACK, PSH, RST, SYN, FIN
    • SYN(연결요청)과 ACK(확인응답)가 있으면 Connection을 확립할 수 있다.

2) 3-way 핸드셰이크

  • three-way handshake : 신뢰할 수 있는 Connection을 하기 위해 데이터를 전송하기 전에 패킷 요청을 세번 교환한다.

컴퓨터1~컴퓨터2
1. Connection 확립 요청 : SYN

컴퓨터2~컴퓨터1
2. Connection 확립 응답 + Connection 확립 요청 : ACK + SYN

컴퓨터1~컴퓨터2
3. Connection 확립 응답 : ACK

  • 위의 과정을 거치고 난 후에 SYN과 ACK 비트가 1로 활성화 된다.

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

컴퓨터1~컴퓨터2
1. Connection 종료 요청 : FIN

컴퓨터2~컴퓨터1
2. Connection 종료 응답 + Connection 종료 요청 : ACK + FIN

컴퓨터1~컴퓨터2
3. Connection 종료 응답 : ACK

  • 위의 과정을 거치고 난 후에 FIN과 ACK비트가 1로 활성화 된다.


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

1) 일련번호와 확인 응답 번호

  • 3-way 핸드셰이크가 끝나고 실제 데이터를 보낼 때는 일련번호와 확인응답번호를 사용한다.
  • TCP는 데이터를 분할해서 전송한다.
  • 일련번호 : 송신 측에서 수신측에 분할된 데이터 중 몇 번째 데이터인지 알려준다.
  • 확인 응답 번호 : 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할 + 다음 번호의 데이터를 요청하는 곳에도 사용된다.(확인 응답)
  • 재전송 제어 : 일련번호와 확인 응답 번호를 사용하여 데이터가 손상되거나 유실된 경우에 데이터를 재전송한다.

2) 윈도우 크기

  • 위의 방식은 세그먼트당 요청/응답을 한 번 반환하는 통신이다.

  • 그러나 이는 효율이 좋지 않다.

  • 따라서 세그먼트를 연속해서 보내고 난 후 확인 응답을 반환하는 방식을 사용한다.

  • 버퍼 : 세그먼트를 일시적으로 보관하는 장소

  • 오버플로우 : 수신측에 대량으로 보관된 세그먼트들에 의해 버퍼가 버티지 못하는 현상.

    윈도우 크기 : 버퍼의 한계 크기 = 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터 크기

    이를 넘어서면 오버플로우가 발생한다.

  • 윈도우 크기의 초깃값은 3-way 핸드셰이크 도중에 판단한다.



4. 포트번호의 구조

1) 포트 번호

  • 포트 번호 : 전송된 데이터의 목적지가 어떤 앱인지 구분하는 역할을 위해 사용된다.
  • 포트번호의 범위 : 0~65535
    1. 0~1023번 포트 : 잘 알려진 포트(well-known ports)
      주요 프로토콜이 사용하도록 예약되어 있다.

      애플리케이션 : 포트 번호

      SSH : 22
      SMTP : 25
      DNS : 53
      HTTP : 80
      POP3 : 110
      HTTPS : 443

    2. 1024번 포트 : 예약되어 있지만 사용되지 않는 포트
    3. 1025번~ 포트 : 랜덤 포트
      클라이언트 측의 송신 포트
  • 웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할당된다.
  • 따라서 서버 측 포트 번호만 정해두면 된다.


5. UDP의 구조

1) UDP

  • UDP의 장점 : 데이터를 효율적으로 빠르게 보내는 것

  • UDP 데이터그램 : UDP 헤더가 붙은 데이터

    UDP 헤더 의 내용과 순서

    1. 출발지 포트 번호(16비트)
    2. 목적지 포트 번호(16비트)
    3. 길이(16비트)
    4. 체크섬(16비트)
  • 브로드캐스트 : UDP를 사용해서 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보내는 것.

    TCP 방식에서는 헤더에 목적지를 지정하기 때문에 적합하지 않은 방식이다.

profile
cornchip

0개의 댓글