ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전송 계층
    네트워크 2024. 8. 11. 23:00

    혼공스터디 12기로 활동하며 공부한 내용을 요약, 정리 합니다.

     

    1. IP의 한계를 보완한다

    전송 계층 아래 네트워크 계층의 IP는 신뢰할 수 없는 통신과 비연결형 통신이라는 한계점이 있다. 즉, IP 프로토콜은 패킷이 수신지까지 제대로 전송되었다는 것을 보장하지 않는다. 전송 계층은 바로 이런 IP의 한계를 극복할 수 있게 해 준다. 전송 계층의 대표적인 프로토콜인 TCP는 두 호스트 간에 정보를 주고받기 전에 먼저 연결을 수립하는 과정을 거친다. 그리고 패킷의 도착 순서를 보장하기 위해 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어 등 여러 기능을 제공한다. (전송 계층에서도 성능을 위해 비연결형 통신을 지원하는 UDP 프로토콜이 존재한다.)

     

    2. 포트를 통해 응용계층에 닿을 수 있는 다리가 된다

    패킷을 전달할 최종 수신지는 결국 특정 호스트에서 실행 중인 특정 애플리케이션 프로세스다. 전송 계층에서는 '포트 번호'를 통해 응용계층에 해당하는 특정 애플리케이션을 식별해 패킷을 전달할 수 있다.

     

    3. TCP의 통신 단계와 세그먼트 구조

    TCP의 통신 단계는 아래와 같다.

    먼저 통신 전에 연결을 수립하고 끝나면 연결을 종료한다. 데이터 송수신 과정에서 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어 등의 기능을 제공한다. TCP 세그먼트의 구조는 아래와 같다.

    https://www.geeksforgeeks.org/tcp-ip-packet-format/

    여기서 Flags(제어 비트)는 기본적으로 8비트로 구성되며, 각 자리의 비트는 각기 다른 의미를 가지는데, TCP의 기본 동작을 이해하기 위해 간단히 세 가지만 추려보자면 세그먼트의 승인을 나타내기 위한 ACK, 연결을 수립하기 위한 SYN, 연결을 종료하기 위한 FIN이 그것이다. TCP의 연결 수립 시 다음 그림과 같이 three way handshake라는 세 단계를 거친다. 

    위 과정을 통해 연결을 수립한 뒤 데이터 송수신이 이루어진다. 그 이후에는 아래와 같이 연결을 종료하기 위한 과정을 거친다.

    이외에 TCP는 연결형 통신과 신뢰할 수 있는 통신을 유지하기 위해 다양한 상태(state)를 유지한다. 이런 특징으로 인해 TCP를 stateful protocol이라고도 한다. 이와 달리 UDP는 상태를 사용하지 않아 stateless protocol이라 하며, TCP처럼 연결 수립 및 해제, 재전송을 통한 오류 제어, 혼잡 제어, 흐름 제어 등을 수행하지 않는다.

     

    4. TCP의 오류 제어

    TCP는 신뢰성을 보장하기 위해 잘못된 세그먼트를 재전송하는 방법을 사용한다. 송신 호스트가 송신한 세그먼트에 문제가 있다는 것을 감지하는 방법은 크게 두 가지다. 첫째는 중복된 ACK 세그먼트를 수신했을 때, 둘째로 타임아웃이 발생했을 때이다. 세그먼트에 포함된 순서 번호(Sequence Number)로 인해 중복된 ACK 세그먼트를 수신했음을 알 수 있는데, 아래 그림과 같이 n+1번 세그먼트가 잘못 전송되어 수신 호스트 측에서 n+1번 ACK 세그먼트를 반복해서 전송하게 되는 것이다.

    TCP 세그먼트를 송신하는 호스트는 모두 재전송 타이머(retransmission timer)라는 값을 유지하며, 세그먼트 전송시마다 재전송 타이머를 시작한다. 이 타이머의 카운트다운이 끝난 상황이 '타임아웃'이다. 타임아웃이 발생할 때 까지 ACK 세그먼트를 받지 못하면 전송이 정상적으로 이루어지지 않았다고 판단하고 세그먼트를 재전송하는 것이다.

     

    5. TCP의 흐름 제어

    세그먼트 전송시, 수신 호스트 측에서 한 번에 처리할 수 있는 세그먼트의 양을 고려해야 한다. 세그먼트를 받았을 때 수신 호스트의 애플리케이션 프로세스에 의해 읽히기 전에 '수신 버퍼'에 임시로 저장되는데, 만약 송신 호스트가 수신 버퍼의 크기보다 많은 데이터를 전송하면 일부 세그먼트가 처리되지 못할 수 있다. 저장 가능한 공간보다 더 많은 데이터가 들어와 버퍼가 넘치는 이런 상황을 buffer overflow라고 한다. TCP의 흐름 제어는 이런 문제를 방지하기 위한 기능으로, 슬라이딩 윈도우라는 방법을 사용한다.

    수신 측에서 TCP 헤더를 통해 자신이 한 번에 수신하고자 하는 데이터의 양을 송신 측에 알리고, 송신 호스트는 이를 가지고 수신 호스트의 처리 속도에 맞춰 균일한 속도로 세그먼트를 전송하게 된다. 위 그림처럼 수신 호스트가 첫 번째 세그먼트를 제대로 수신했다면 윈도우를 오른쪽으로 한 칸씩 미끄러지듯 옮기며 데이터를 전송하는 것이다.

     

    6. TCP의 혼잡 제어

    네트워크에 많은 호스트가 있으면 트래픽이 많아져 패킷의 처리 속도가 늦어지거나 유실될 가능성이 있다. 이런 상황을 혼잡(congestion)이라 한다. TCP에서는 네트워크의 혼잡도를 판단하고 그 정도에 따라 전송량을 조절하는 '혼잡 제어' 기능을 수행한다. 여기에는 느린 시작, 혼잡 회피, 빠른 회복 등 다양한 혼잡 제어 알고리즘이 사용된다.

     

    과제

    1. IP와 연관된 통신 특성

    IP는 네트워크 계층의 프로토콜로, 패킷이 수신지까지 제대로 전송되었다는 보장을 하지 않는 신뢰할 수 없는 통신(비신뢰성)이며, 송수신 호스트 간에 사전 연결 수립 작업을 거치지 않는 비연결형 통신이다.

     

    2. TCP 쓰리 웨이 핸드셰이크 과정

     

    three way handshake는 TCP에서 호스트 간에 연결을 수립하기 위해 거치는 세 단계의 과정이다. 먼저 송신 호스트가 전송하는 SYN 세그먼트에는 송신 호스트의 초기 순서 번호와 1로 설정된 SYN 비트가 포함된다. 다음으로 SYN + ACK 세그먼트에는 수신 호스트의 초기 순서 번호, 송신 측에서 전송한 세그먼트에 대한 확인 응답 번호, 1로 설정된 SYN, ACK 비트가 포함된다. 마지막으로 송신 측에서 ACK 세그먼트를 보내는데, 여기에는 송신 측의 다음 순서 번호, 수신 측에서 전송한 세그먼트에 대한 확인 응답 번호, 1로 설정된 ACK 비트가 포함된다.

    '네트워크' 카테고리의 다른 글

    응용 계층  (0) 2024.08.16
    네트워크 계층  (6) 2024.07.23
    물리 계층과 데이터 링크 계층  (0) 2024.07.10
    컴퓨터 네트워크 시작하기  (0) 2024.07.02

    댓글

Designed by Tistory.