[CS] 트랜스포트 레이어(UDP, TCP)

2025. 6. 1. 18:19·컴퓨터 네트워크

📎  UDP 체크섬과 오류 검출

UDP 체크섬

UDP(User Datagram Protocol) 체크섬(checksum)은 데이터 전송 과정에서 발생할 수 있는 오류를 검출하기 위한 기본적인 메커니즘입니다. UDP는 신뢰성보다 속도와 효율성을 중시하는 프로토콜로, TCP와 달리 데이터의 재전송이나 흐름 제어 기능이 없습니다. 대신, 데이터의 무결성을 간단하게 점검하기 위해 체크섬을 사용합니다.
 

UDP 오류 검출

checksum은 단순한 오류를 검출하는데 효과적이며, 수신 측에서 checksum이 다르면 해당 패킷은 손상된 것으로 판단되어 버려진다. UDP는 오류를 발견하더라도 복구는 하지 않는다
 
 
 

📎  신뢰적 데이터 전송 원리(SR, GBN)

 

신뢰적 데이터 전송

데이터가 전송 중에 손실/손상 되더라도 정확히 목적지에 도착하도록 하는 전송방식이다.
 

대표적인 프로토콜

송신자와 수신자 간에 데이터를 정확하게 수신했는지 관리한다. 
 
1. GBN

  • 송신자는 N개까지 데이터를 연속으로 보낼 수 있다.(N = 윈도우 크기)
  • 수신자는 패킷 번호가 순서대로 온 것만 받는다.
  • 중간에 하나라도 문제가 생기면, 송신자는 손실된 번호부터 전부 재전송해야 한다. 
  • 위 특징 때문에 다른 방법에 비해 비효율적이다

 
 

예시
송신자가 패킷 1, 2, 3, 4를 보냄.
수신자가 1, 2는 받았는데, 3보다 4가 먼저 도착한다 (3번 패킷 손실)
이 경우 수신자는 4번 패킷을 무시한다. (3을 아직 못 받았기 때문)
송신자는 3부터 다시 보낸다.

 
 
 
2. SR

  • 수신자는 패킷 순서가 안 맞아도 패킷을 임시 저장한다.
  • 송신자는 오류가 발생한 패킷만 재전송하기 때문에 GBN보다 훨씬 효율적이다. 
  • 하지만 효율적인 만큼, 수신자가 복잡해지고 구현이 어렵다는 단점이 있다. 

예시
송신자가 1 2 3 4 5 순서로 전송한다.
3번 패킷만 손실된 경우
수신자는 1, 2, 4, 5를 버퍼에 저장
송신자는 3만 다시 보낸다.
수신자는 3을 받은후 받은 패킷들을 재조립한다.

 
 
 
 

📎  TCP  3-way handshake, 4-way handshake

 

3-way handshake : 연결확립을 위해 진행

 
 

  1. Client가 Server에게 접속을 요청하는 SYN 플래그를 보낸다.
  2. Server는 Listen상태에서 SYN이 들어온 것을 확인하고 SYN+ACK 플래그를 Client에게 전송한다.
  3. SYN+ACK상태를 확인한 Client는 서버에게 ACK를 보내고 연결 성립이 된다.

 
 

4-Way Handshake : 세션을 종료하기 위한 절차

 

  1. Client가 연결을 종료하겠다는 FIN 플래그를 전송한다.  보낸 후에 FIN-WAIT-1 상태로 변한다. 
  2. FIN 플래그를 받은 Server는 확인메시지인 ACK를 Client에게 보낸다. Client도 마찬가지로 Server에서 종료될 준비가 됐다는 FIN을 받기 위해 FIN-WAIT-2상태가 된다.
  3. Close준비가 다 된 후 Server는 Client에게 FIN 플래그를 전송한다.
  4. Client는 해지 준비가 되었다는 정상 응답인 ACK를 Server에게 보내준다. 이 때, Client는 TIME-WAIT 상태로 변경된다.

 
 

📎  TCP 혼잡제어(AIMD, 슬로우 스타트)와 흐름제어

 
흐름제어

  • 수신측이 송신측보다 데이터 처리 속도가 빠르면 문제없지만, 송신측의 속도가 빠를 경우 문제가 생긴다. 
  • 수신측에서 제한된 저장 용랴을 초과한 이후에 도착하는 데이터는 손실 될 수 있으며, 만약 손실 될 수 있으며, 만약 손실 될 수 있으며, 만약 손실 된다면 불필요하게 응답과 데이터 전송이 송/수신 측간에 빈번하게 발생한다. 
  • 이러한 위험을 줄이기 위해 송신 측의 데이터 전송량을 수신측에 따라 조절해야 한다. 

 해결방
stop and wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방식


 sliding window
수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법

동작방식 : 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는대로 이 윈도우를 옆으로 옮김으로써 그 다음 패킷들을 전송






혼잡제어

네트워크 내에 패킷의 수가 과도하게 증가하는 현상을 혼잡이라 하며, 혼잡 현상을 방지하거나 제거하는 기능을 혼잡제어라고 한다.

 

 

해결방법

 

AIMD
AIMD 방식은 처음에 패킷을 하나씩 보내고 문제 없이 도착하면 윈도우의 크기를 1씩 증가시켜가며 전송한다. 만약, 전송에 실패하면 윈도우 크기를 반으로 줄인다. 윈도우 크기를 너무 조금씩 늘리기 때문에 네트워크의 모든 대역을 활용하여 제대로 된 속도로 통신하기까지 시간이 오래 걸린다는 단점이 있다.

slow start
위에서 이야기했듯이 AIMD 방식은 윈도우 크기를 선형적으로 증가시키기 때문에, 제대로된 속도가 나오기까지 시간이 오래 걸린다. 반면, Slow Start는 윈도우의 크기를 1, 2, 4, 8, ...과 같이 지수적으로 증가시키다가 혼잡이 감지되면 윈도우 크기를 1로 줄이는 방식이다.


빠른재전송
패킷을 받는 수신자 입장에서는 세그먼트로 분할된 내용들이 순서대로 도착하지 않는 경우가 생길 수 있다. 이런 상황이 발생했을 때 수신 측에서는 순서대로 잘 도착한 마지막 패킷의 다음 순번을 ACK 패킷에 실어서 보낸다. 그리고 이런 중복 ACK를 3개 받으면 재전송이 이루어진다. 송신 측은 자신이 설정한 타임 아웃 시간이 지나지 않았어도 바로 해당 패킷을 재전송할 수 있기 때문에 보다 빠른 재전송률을 유지할 수 있다.

 
 
 
 
 
 
 
 
 

반응형

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

[네트워크] 네트워크 레이어(IP)  (1) 2025.05.31
[네트워크] 애플리케이션 레이어 2  (0) 2025.05.26
[네트워크] 애플리케이션 레이어 1 (HTTP)  (0) 2025.05.21
TCP  (1) 2023.04.09
06 멀리 았는 컴퓨터끼리는 이렇게 데이터를 주고받는다  (2) 2023.04.09
'컴퓨터 네트워크' 카테고리의 다른 글
  • [네트워크] 네트워크 레이어(IP)
  • [네트워크] 애플리케이션 레이어 2
  • [네트워크] 애플리케이션 레이어 1 (HTTP)
  • TCP
알리시아코
알리시아코
  • 알리시아코
    CODiary
    알리시아코
  • 전체
    오늘
    어제
    • 분류 전체보기 (162)
      • Spring (5)
      • 프론트엔드 (2)
      • KT에이블스쿨 (37)
      • 졸업프로젝트 (4)
      • JAVA (24)
      • 파이썬 기초 (13)
      • 데이터베이스 (7)
      • 알고리즘 (3)
      • git (0)
      • Fastapi (0)
      • 취업준비(원서) (0)
      • 컴퓨터 네트워크 (27)
      • 안드로이드 앱 (1)
      • 운영체제 (0)
      • LINUX (4)
      • 시스템프로그래밍 (13)
      • 엑셀 (1)
      • 책 (1)
      • 컴퓨터구조+운영체제 (4)
      • 자료구조+알고리즘 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
알리시아코
[CS] 트랜스포트 레이어(UDP, TCP)
상단으로

티스토리툴바