본문 바로가기
개념 정리/CS

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

by 매진2 2023. 11. 20.
728x90

1. 전송 계층의 역할

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

a-1. 전송계층의 존재 이유

  • 라우팅 정보가 잘못될 수도 있고 많은 라우터를 경유하는 도중 라우터에 문제가 생기거나 패킷 손상
  • 물리계층, 데이터 링크 계층, 네트워크 계츠의 3층이 있으면 목적지에 데이터 보낼 수 있지만 데이터가 손상되거나 유실되더라도 해주지 않음

a-2. 전송계층

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

a-3. 전송계층의 역할

  • 오류를 점검하는 기능이 있어 오류 발생 시 데이터 재전송 요청
    • 데이터가 제대로 도착했는지 확인하는 역할
  • 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별
    • 해당 데이터가 어떤 애플리케이션에서 사용하는 데이터인지 판단

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

b-1. 전송계층의 특징

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

b-2. 연결형 통신

  • 연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통신
    • 데이터 교환 전 연결을 맺고 데이터 교환하는 동안 계속 연결 관리하는 프로토콜의 한 형태
  • 상대편과 확인하면서 통신
  • 신회성/정확성 우선 통신
  • TCP(Transmission Control Protocol) 전송 제어 프로토콜 사용

b-3. 비연결형 통신

  • 비연결형 통신 : 신뢰성을 보장하지 않지만 효율적으로 데이터 전달하는 통신
    • 연결에 대한 초기화 과정이 없는 통신
  • 상대편 확인하지 않고 일방적으로 데이터 전송
  • 효율성 우선 통신
  • 동영상은 빠른 전송이 필요해서 비연결형 통신 사용
  • UDP(User Datagram Protocol) 사용자 데이터그램 프로토콜 사용

그림 6-3

 

2. TCP의 구조

a. TCP란?

  • 연결형 통신 프로토콜 TCP 
    • 세그먼트 : TCP 헤더가 붙은 데이터
    • TCP 헤더 : TCP로 전송할 때 붙이는 헤더
      • 목적지까지 데이터 제대로 전송하기 위해 필요한 정보 가지고 있음
  • 연결형 통신은 데이터를 전송하기 전 연결 이라는 가상의 독접 통신로 확보해야함
    • 연결 : TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확립하고 데이터 전송
  • 대역폭 : 정해진 시간 동안 전송될 수 있는 데이터의 양 (주로 속도)
    • 대역폭은 제한적
TCP 헤더 데이터
출발지
포트
번호
16비트
목적지
포트
번호
16비트
일련
번호
32비트
확인
응답
번호
32비트
헤더
길이
4비트
예약
영역
6비트
코드
비트
6비트
윈도우
크기
16비트
체크섬
16비트
긴급
포인터
16비트
옵션

b. 3-way 핸드셰이크

b-1. TCP 헤더 중 코드비트

  • TCP 헤더 중 코드비트 : 연결의 제어정보가 기록되는 곳
  • 초기값은 0, 비트 활성화 시 1

b-2. 연결을 확립하려면 SYN과 ACK 필요

  • SYN은 연결 요청, ACK는 확인 응답
  • 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷 교환

  • 과정과 코드 값
    • SYN=1, ACK=0 : 통신 하려면 컴퓨터에게 허가를 받아야하므로 클라이언트에서 컴퓨터로 연결 확립 허가를 받기 위한 요청
    • SYN=1, ACK=1 : 컴퓨터는 클라이언트가 보낸 요청을 받은 후 허가한다는 응답을 회신하기 위해 연결 확입 응답을 보내는 동시에 컴포터도 클라이언트에게 데이터 전송 허가를 바기 위해 연결 확립 요청 보냄
    • SYN=0, ACK=1 : 컴퓨터의 요청을 받은 클라이언트는 컴퓨터를 허가한다는 응답으로 연결 확립 응답 보냄
  • 3-way 핸드셰이크
    • 3-way 핸드셰이크 : 데이터 보내기 전에 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것
    • 연결을 맺기 위한 3단계의 초기화 과정
    • 확실하게 데이터가 전송되었는지 확인하면서 이루어지는 통신 수단
    • TCP 통신에서 사용하는 신뢰성 제공하기 위한 통신 방식

b-3. 연결 끊는 것은 FIN과 ACK 사용

  • FIN은 연결 종료
  • 과정과 코드 값
    • FIN=1, ACK=0  클라이언트에서 서버로 연결 종료 요청
    • FIN=0, ACK=1 서버에서 클라이언트로 연결 종료 응답 반환
    • FIN=1, ACK=0 서버에서 클라이언트로 연결 종료 요청
    • FIN=0, ACK=1 클라이언트에서 서버로 연결 종료 응답 반환

 

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

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

a-1. TCP 헤더의 일련번호와 확인 응답 번호

  • 3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련번호와 확인 응답 번호 사용
    • 일련번호 : TCP가 데이터를 분할해서 보낼 때 송신측에서 수신측에 데이터가 몇번째 데이터인기 알려주는 역할
      • 전송된 데이터에 일련번호를 부여하면 수신자는 몇번째 데이터인지 확인 가능
    • 확인 응답 번호 : 수신측이 몇번째 데이터를 수신했는지 송신측에 알려주는 역할
      • 확인 응답 : 10번째 데이터를 수신하면 11번 데이터를 송신측에 요청

a-2. 예시

  • 일련번호 3001번은 지금 보내는 200바이트 데이터의 첫번째 바이트 번호
  • 확인 응답 번호는 다음에 보냈으면 하는 데이터의 첫번째 바이트 번호
  • 데이터 전송 전 단계에서 3-way 핸드셰이크로 연결 수립이 이뤄질때 이번 통신에 사용하는 일련번호 3001번과 확인 응답 번호 4001번 결정
  • 1. 컴퓨터 1은 컴퓨터 2로 200바이트의 데이터 전송
  • 2. 컴퓨터 2는 200바이트 수신 후 다음에 수신하고자하는 데이터 번호를 확인 응답 번호에 넣음
  • 3. 컴퓨터 1은 컴퓨터 2로 3201번부터 200바이트의 데이터 전송
  • 4. 컴퓨터 2는 200 바이트를 수신하고 다음에 수신하고자 하는 데이터의 번호를 확인 응답 번호에 넣음

a-3. 재전송 제어

  • 재전송 제어 : 데이터가 항상 올바르게 전달되는 것이 아니기 때문에 일련번호와 확인 응답 번호 사용해 데이터가 손상되거나 유실된 경우 데이터 제전송하는것
  • 데이터 전송 중 오류 발생 시 일정 시간동안 대기 후 재전송

b. 윈도우 크기란?

b-1. 세그먼트 하나? 여러개?

  • 세그먼트 하나를 보낼때마다 확인 응답을 한번 반환하는 통신은 효율 낮음
  • 세그먼트 연속으로 보내고 확인 응답 반환하면 효율 높아짐

b-2. 버퍼와 오버플로

  • 버퍼 : 받은 세그먼트를 일시적으로 보관하는 장소
  • 오버플로 : 수신측에 대량으로 데이터가 전송돼 보관하지 못하고 넘치는 것
  • 오버플로가 발생하지 않도록 버퍼의 한계 크기를 알고 있어야함

b-3. TCP 헤더의 윈도우 크기

  • TCP 헤더의 윈도우 크기 : 얼마나 많은 용량의 데이터를 저장할 수 있는지 나타냄
  • 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있는 데이터 크기
  • 3-way 핸드셰이크를 할 때 윈도우 크기를 확인 후 초기값 설정

b-4. 세그먼트 연속 전송

  • 세그먼트 하나를 보내고 확인 응답을 기다리다가
  • 버퍼를 이용해 세그먼트를 연속해서 보내고 확인응답을 연속으로 받음

 

 

4. 포트번호의 구조

a. 포트 번호란?

  • TCP 헤더의 출발지 포트번호와 목적지 포트 번호를 통해 목적지가 어떤 애플리케이션인지 구별함
  • 포트번호는 0~65535번 사용
    • 0~1023번 : 잘 알려진 포트 : 주요 프로토콜이 사용, 서버측 애플리케이션에서 사용
    • 1024 : 예약되어있지만 사용되지 않는 포트
    • 1025~65535 : 랜덤포트 : 클라이언트 측의 송신 포트
애플리케이션 포트번호
SSH 22
SMTP 25
DNS 53
HTTP 80
POP3 110
HTTPS 443
  • 애플리케이션은 각각 포트번호가 있어 다른 애플리케이션과 구분 됨
    • 데이터 전송 시 상대방의 IP 주소가 필요하지만 어떤 애플리케이션이 사용되고 있는지 구분하려면 TCP는 포트 번호 필요
    • 포트 번호 없이 통신 시 컴퓨터에 데이터 도착하더라도 애플리케이션까지 도착할 수 없음
  • 웹브라우저로 접속할 때 웹브라우저에는 임의의 포트가 자동 할당 됨
    • 서버측은 포트 번호를 정해둬야하지만 클라이언트 측은 정하지 않아도 됨

 

5. UDP의 구조

a. UDP란?

  • 비연결형 통신으로 데이터 전송할 때 확인 작업을 일일이 하지 않음
  • 데이터를 효율적으로 빠르게 보내기 때문에 스트리밍 방식으로 전송하는 동영상 서비스에 사용
  • 연결 맺을 필요가 없고 정보 보내거나 받는다는 신호도 불필요

b. UDP 헤더란?

b-1. UDP 데이터 그램과 UDP 헤더

  • UDP 데이터 그램 : UDP헤더가 붙은 데이터
  • UDP 헤더 : 올바른 목적지의 애플리케이션으로 데이터 전송하기 위해 필요한 정보 기록
UDP 헤더 데이터
출발지 포트 번호(16비트) 목적지 포트 번호(16비트) 길이(16비트) 체크섬(16비트)

 

b-2. UDP는 효율성과 빠른 속도가 중요해서 상대방 확인하지 않고 연속해서 데이터 보냄

b-3. 브로드캐스트에는 UDP 사용

  • 브로드캐스트 : 네트워크의 모든 컴퓨터와 장비에 같은 패킷 일괄 전송하는 방식
  • UDP 사용해 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보내는 것 가능
  • TCP는 데이터 전송할 때 확인 응답을 하나씩 보내야하기 때문에 불특정 다수에게 보내는 통신에는 부적합

 

 

 

참고 자료

모두의 네트워크 책

https://m.blog.naver.com/devks0228/221822189393

728x90