Dlise
시원한 냉장고
Dlise
전체 방문자
오늘
어제
  • 시원한 냉장고 (136)
    • Java (31)
      • Java (26)
      • Spring (5)
    • Algorithm & PS (25)
      • Algorithm (14)
      • Problem Solving (11)
    • Network (12)
    • Database (2)
    • Data Structure (4)
    • OOP & CleanCode (5)
    • Web (0)
    • Git (2)
    • AI (2)
    • Project (1)
      • Discord Bot (1)
    • Error (19)
    • Tools (5)
    • 수학 (5)
      • 확률과 통계(기초) (5)
    • 컴퓨터 구조 (3)
    • 활동 (20)
      • 행사 & 여행 (10)
      • 자격증 (4)
      • 회고 (6)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 중위 표기법
  • 백준
  • 열혈강의자료구조
  • 통계학
  • 네트워크
  • spring security in action second edition
  • java
  • CleanCode
  • 후위 표기법
  • 가장쉬운알고리즘책

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dlise

시원한 냉장고

Network

Network - OSI 7 Layer: 전송 계층(4 Layer)

2024. 4. 1. 22:58

OSI 7계층 중 4계층(전송 계층)을 알아보자.

 

전송 계층(Transport Layer)

전송 계층은 오류 없이 데이터를 전달하기 위한 단계로 데이터가 제대로 넘어갔는지, 오류는 없는지, 데이터를 어떤 애플리케이션으로 전달해야 하는지 등을 식별하는 기능을 담당한다.

 

 

오류 제어

혼잡 제어(Congestion Control)

네트워크로 들어가는 정보량을 조절하여 네트워크가 혼잡해지지 않게 조절하는 방법

 

송신자는 가장 먼저 하나의 데이터를 보낸 후 정상적으로 ACK이 오면 전송량을 2배씩 증가시킨다.

이후 Time Out이 발생하거나 동일한 ACK을 여러 번 받으면 정상적이지 않은 상황으로 보고 보내는 데이터를 줄이는 형태로 데이터 전송량을 조절한다.

 

흐름 제어

정지-대기 방식과 동일하게 동작한다. 하나의 데이터를 전송한 후 다음 데이터를 전달하기 전에 ACK을 기다린다.

 

오류 제어

오류를 검출하기 위해 확인 응답과 시간 초과 방법을 사용한다.

  • 확인 응답: 수신자 측으로부터 ACK를 받아야 하는데 이를 받지 못하면 오류로 판단
  • 시간 초과: 특정 시간 내에 ACK를 받지 못하면 오류가 있다고 판단

오류가 발생하는 경우는 아래와 같다.

  • 데이터가 중간에 손실될 때
  • 데이터 순서가 바뀌었을 때
  • 데이터가 훼손되었을 때

위와 같은 이유로 오류가 발생하면 데이터를 재전송한다.

 

 

3-Way Handshake

전송 계층에서의 데이터 전달은 연결형 통신과 비연결형 통신으로 구분된다.

  • 연결형 통신: 데이터를 정확하게 전달하는 것을 목표로 하는 통신. TCP 사용
  • 비연결형 통신: 효율적으로 데이터를 보내는 통신. UDP 사용

TCP(Transmission Control Protocol)는 3 Way Handshake 방법으로 통신한다.

3 Way Handshake는 TCP 통신을 하는 장치 간에 서로 통신할 준비가 되었는지 확인하는 과정이다.

과정은 아래와 같다.

  1. 송신자가 수신자에게 SYN(Synchronize Sequence Number)라는 임의의 숫자를 보낸다.
  2. 수신자는 ACK과 SYN을 송신자에게 보낸다. 이때의 ACK는 받은 SYN + 1이다.
  3. 송신자는 다시 ACK을 수신자에게 보낸다. 이때의 ACK는 받은 SYN + 1이다.

이 과정이 정상적으로 마무리되면 양쪽 장치가 TCP 통신할 준비가 된 것이다.

 

 

TCP의 구조

TCP의 헤더에 담긴 정보를 살펴보자.

1. port 번호

전송 계층은 어떤 애플리케이션과 통신하는 것인지 식별하는 기능이 있다고 하였는데 여기서 port번호를 활용한다. 즉, 프로그램의 주소가 port번호인 것이다.

 

port번호는 0 ~ 65,535까지 총 65,536개가 있으며 목적에 따라 번호가 구분된다.

  • 0 ~ 1023: 잘 알려진 포트(well-known port). 특정한 쓰임을 위해 사용되는 포트
  • 1024 ~ 49151: 사전 등록된 포트(registered port). 기관 혹은 기업들이 사용하는 포트
  • 49151 ~ 65535: 다이내믹 포트(dynamic port). 일반 사용자들이 자유롭게 사용할 수 있는 포트

 

2. 일련번호 & 확인 응답 번호

일련번호: 송신자가 수신자에게 보내려는 데이터가 몇 번째인지 알려주는 것

확인 응답 번호: 수신자가 송신자에게 몇 번째 데이터를 받았는지 알려주는 것

 

예를 들어 총 1500byte의 데이터를 보내야 하고 패킷의 크기가 500byte라면 내용은 아래와 같다.

 

3. 윈도우 크기

윈도우 크기(Window Size): 송신자가 한 번에 보낼 수 있는 데이터의 최대 크기. 수신자가 한 번에 데이터를 얼마나 받을 수 있는지 확인한 후 이를 고려해 데이터를 보내겠다는 의도이다.

수신자의 윈도우 크기 정보는 3 Way Handshake에서 알게 되는데, 실제로는 SYN, ACK과 더불어 Window Size 정보도 주고받는다.

 

4. 코드 비트

코드 비트(Code Bit)는 아래의 항목이 있으며 default는 0, 활성화되면 1이 된다.

  • TURG: 긴급 처리 데이터가 있음
  • ACK: 확인 응답 번호 사용
  • RSH: TCP가 받은 데이터를 상위 계층에 전달
  • RST: 연결 재설정
  • SYN: 연결을 초기화하기 위해 순서 번호를 동기화
  • FIN: 데이터 송신 종료

만약 3 Way Handshake 연결 중이라면 코드 비트는 아래와 같다.

 

UDP의 구조

UDP(User Datagram Protocol)는 오류 상관없이 데이터를 보내기만 한다. 따라서 TCP와 비교했을 때 신뢰성을 보장하진 못하지만 전송 속도가 빨라 실시간 방송, 브로드캐스트 등에 사용한다

 

TCP와 달리 헤더가 매우 간단하다.

  • 송신 측 Port Number: 데이터를 보낼 때 사용되는 애플리케이션의 포트 번호
  • 수신 측 Port Number: 데이터를 받을 애플리케이션의 포트 번호
  • 헤더 길이: UDP 헤더와 데이터를 합한 길이
  • Checksum: 데이터 무결성 검사 용도

 

로드 밸런서

로드 밸런서(Load Balancer)는 여러 대의 서버를 두고 사용자가 한쪽으로 몰리는 것을 분산시키는 장치이다. 

분산시키는 작업을 로드 밸런싱(Load Balancing),

1대의 서버에서 여러 대로 늘리는 것을 스케일 아웃(Scale Out)이라고 한다.

분산 방법은 아래와 같은 것들이 있다.

  • 라운드 로빈(Round Robin): 분배의 가장 기본적인 방식으로 각 서버별로 돌아가며 연결을 처리한다.
  • 가중 라운드 로빈(Weighted Round Robin): 서버가 돌아가며 연결을 처리하는데 일부 서버는 큰 트래픽을 몰아 받는다.
  • 랜덤(Random): 트래픽을 무작위로 처리한다.
  • 해시(Hash): 특정 Client는 특정 Server에서만 처리한다.
  • 포트: 포트 번호를 기준으로 구분해 처리한다.

'Network' 카테고리의 다른 글

Network - OSI 7 Layer: 네트워크 흐름 정리 및 이해  (0) 2024.04.14
Network - OSI 7 Layer: 응용 계층(7 Layer)  (0) 2024.04.04
Network - OSI 7 Layer: 네트워크 계층(3 Layer)  (0) 2024.03.25
Network - OSI 7 Layer: 데이터 링크 계층(2 Layer)  (1) 2024.03.18
Network - OSI 7 Layer: 물리 계층(1 Layer)  (1) 2024.03.14
    'Network' 카테고리의 다른 글
    • Network - OSI 7 Layer: 네트워크 흐름 정리 및 이해
    • Network - OSI 7 Layer: 응용 계층(7 Layer)
    • Network - OSI 7 Layer: 네트워크 계층(3 Layer)
    • Network - OSI 7 Layer: 데이터 링크 계층(2 Layer)
    Dlise
    Dlise

    티스토리툴바