[Computer Science] [네트워크] 전송 계층

2025. 1. 27. 17:29·Computer Science/Network
728x90

전송계층

전송계층의 역할

  • 응용 계층의 어플리케이션 프로세스 식별 → 포트를 통해서 식별한다.
  • 네트워크 계층의 신뢰성/연결성 확립

포트

  • 네트워크 계층은 A호스트와 B호스트 어디있는지 IP 주소를 토대로 식별할 수 있다. 하지만 B 호스트한테 패킷이 도달한 후 어떤 응용 어플리케이션에게 패킷을 줘야할지 알 수 없다.
  • 포트번호를 어떤 어플리케이션에게 패킷을 전달해야하는지 알려준다.
  • 어플리케이션 프로세스를 식별해주는 고유한 문자열
  • 16비트로 표현 가능 65536개
  • 포트 범위 : 0번부터 65535번까지

웰 노운 포트, 시스템 포트,대중적인 포트

  • HTTP, HTTPS 등 대중적인 프로토콜을 할당해주는 포트

등록된 포트

  • 잘 알려진 포트에 비해서는 덜 범용적이지만 흔히 사용되는 애플리케이션

동적포트, 사설 포트, 임시포트

  • 사용자가 자유롭게 할당 가능한 포트
  • 서버는 일반적으로 잘 알려진 포트와 등록된 포트로 동작
  • 클라이언트는 일반적으로 동적 포트로 동작

NAT

  • 공인 IP 주소와 사설 IP 주소간의 변환 기능
  • 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유 가능하다. 포트를 활용하여 공인 주소를 공유한다.

TCP 세그먼트

  • MSS
    • TCP 세그먼트로 보낼 수 있는 최대의 크기

TCP 세그먼트 구조 중 중요한 부분

  • 출발지 포트
  • 목적지 포트
  • 순서 번호
    • 송수신되는 세그먼트 데이터 첫 바이트에 부여되는 번호
  • 확인 응답 번호(ACK)
    • 순서번호에 대한 응답(다음으로 수신받길 기대하는 바이트 번호)
  • 제어비트
    • ACK: 세그먼트 승인을 나타내는 비트
    • SYN: 연결 수립을 위한 비트
    • FIN: 연결을 끝내기 위한 비트
    • RST: 연결을 리셋하기 위한 비트
  • 윈도우
    • 수신지 윈도우 크기, 한번에 수신 받고자 하는 양
     

  • 확실하게 전송하는 프로토콜 TCP

UDP

  • IP 패킷을 감싸는 껍데기이다.
  • 비연결성/비신뢰성 프로토콜
  • TCP의 재전송/흐름 제어/혼잡 제어 등의 기능 없음

[2025.01.24] [컴퓨터공학] [네트워크] 전송계층

전송계층

전송계층의 역할

  • 응용 계층의 어플리케이션 프로세스 식별 → 포트를 통해서 식별한다.
  • 네트워크 계층의 신뢰성/연결성 확립

포트

  • 네트워크 계층은 A호스트와 B호스트 어디있는지 IP 주소를 토대로 식별할 수 있다. 하지만 B 호스트한테 패킷이 도달한 후 어떤 응용 어플리케이션에게 패킷을 줘야할지 알 수 없다.
  • 포트번호를 어떤 어플리케이션에게 패킷을 전달해야하는지 알려준다.
  • 어플리케이션 프로세스를 식별해주는 고유한 문자열
  • 16비트로 표현 가능 65536개
  • 포트 범위 : 0번부터 65535번까지

웰 노운 포트, 시스템 포트,대중적인 포트

  • HTTP, HTTPS 등 대중적인 프로토콜을 할당해주는 포트

등록된 포트

  • 잘 알려진 포트에 비해서는 덜 범용적이지만 흔히 사용되는 애플리케이션

동적포트, 사설 포트, 임시포트

  • 사용자가 자유롭게 할당 가능한 포트
  • 서버는 일반적으로 잘 알려진 포트와 등록된 포트로 동작
  • 클라이언트는 일반적으로 동적 포트로 동작

NAT

  • 공인 IP 주소와 사설 IP 주소간의 변환 기능
  • 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유 가능하다. 포트를 활용하여 공인 주소를 공유한다.

TCP 세그먼트

  • MSS
    • TCP 세그먼트로 보낼 수 있는 최대의 크기

TCP 세그먼트 구조 중 중요한 부분

  • 출발지 포트
  • 목적지 포트
  • 순서 번호
    • 송수신되는 세그먼트 데이터 첫 바이트에 부여되는 번호
  • 확인 응답 번호(ACK)
    • 순서번호에 대한 응답(다음으로 수신받길 기대하는 바이트 번호)
  • 제어비트
    • ACK: 세그먼트 승인을 나타내는 비트
    • SYN: 연결 수립을 위한 비트
    • FIN: 연결을 끝내기 위한 비트
    • RST: 연결을 리셋하기 위한 비트
  • 윈도우
    • 수신지 윈도우 크기, 한번에 수신 받고자 하는 양
  • 확실하게 전송하는 프로토콜 TCP

UDP

  • IP 패킷을 감싸는 껍데기이다.
  • 비연결성/비신뢰성 프로토콜
  • TCP의 재전송/흐름 제어/혼잡 제어 등의 기능 없음
  • 체크섬 필드는 신뢰성과는 관련이 없다. 받은 데이터에 오류가 있는 지 검사해주는
  • UDP는 빠르게 전송하는 프로토콜

최근 각광받는 UDP

  • HTTP/3, NTP, RIP, DNS, DHCP

TCP 연결혈 프로토콜

  1. 연결 설정

Three-way handshake

3개의 단계를 거쳐 데이터 송수신

액티브 오픈, 패시브 오픈 호스트

아래 액티브 오픈: 호스트 A, 패시브 오픈: 호스트 B

연결 종료

액티브 클로즈 호스트

  • 처음 연결을 종료하는 호스트
  • 마지막 ACK을 보낸뒤 일정 시간을 기다린 뒤 연결을 종료한다.
  • 마지막 ACK 세그먼트의 유실 대비
  • 또 다른 연결 과정에서 패킷 혼선 방지

TCP 상태

  • TCP는 연결형 프로토콜이자 스테이트폴(stateful) 프로토콜이라고 한다.
  • 현재 연결 상태를 나타내기 위해 다양한 상태 활용

가능한 상태 목록

  • CLOSED
    • 아무런 연결이 없는 상태
  • LISTEN
    • 연결 수립 도중 사용되는 상태
    • SYN 세그먼트를 기다리는 상태
  • SYN-SENT
    • 연결 수립 도중 사용되는 상태
    • SYN 세그먼트를 보낸뒤 SYN+ACK 세그먼트 대기
  • SYN-RECEIVED
    • 연결 수립 도중 사용되는 상태
      • SYN+ACK 세그먼트를 보낸 뒤 그에 대한 ACK 대기하는 상태
  • ESTABLISHED
    • Three-way handshake 끝났을 경우
    • 연결되어 있는 상태
    • 언제든지 데이터 송수신이 가능한 상태
  • FIN-WAIT-1
    • 연결 해제시 사용되는 상태
  • FIN-WAIT-2
    • 연결 해제시 사용되는 상태
  • CLOSE-WAIT
    • 연결 해제시 사용되는 상태
  • CLOSING
    • 연결 해제시 사용되는 상태
  • LAST-ACK
    • 연결 해제시 사용되는 상태
  • TIME-WAIT
    • 연결 해제시 사용되는 상태
    • 일정시간동안 기다리는 상태
     

  • CLOSING
    • 상대 FIN 세그먼트에 ACK 세그먼트를 보냈지만 자신의 FIN 세그먼트에 대한 ACK 세그먼트를 받지 못한 상태 (보통 동시에 연결을 종료하려 할 때)
     

TCP 재전송 기능

TCP는 무엇인가를 확실히 전송했다는 보장이 있어야 한다.

  • 재전송 기반의 오류 제어: 잘못 전송된 경우 재전송
  • 흐름 제어: 받을 수 있는 만큼만 받기
  • 혼잡 제어: 보낼 수 있는 상황에서 보내기

언제 잘못되었음을 인지하는가

  • 중복된 ACK 세그먼트를 수신 했을 때
  • 타임아웃이 발생했을 때
  • 올바른 예시

  • 잘못된 예시

  • 타임아웃 기반의 재전송

ARQ

  • 재전송을 기반으로 잘못된 전송을 바로잡는 것
  • Stop and Wait ARQ
    • 제대로 보냈음을 확인하기 전까지는 보내지 않음.
    • 전송하고 확인하고 전송하고 확인하고
    • 네트워크 이용 효율이 낮아지는 문제
  • Go Back N ARQ
    • 파이프라인 방법
    • 올바른 세그먼트에 대해서 확인 응답 보냄
    • 올바르지 않은 세그먼트가 확인되면 손실 이후 모든 세그먼트를 폐기한다.
    • 누적 확인 응답
     

  • Selective Repeat ARQ
    • 올바른 세그먼트에 대해서만 확인 응답 보냄
    • 각세그먼트에대한확인응답:개별확인응답
     

  • 빠른 재전송(fast retranmit)
    • 빠른 재전송이 없는 경우
      • 재전송 타이머가 만료되어야 비로소 재전송이 된다.
    • 빠른 재전송이 있는 경우
      • 재전송 타이머가 만료되지 않아도 중복 세그먼트가 수신되면 재전송함.

TCP 흐름/혼잡 제어

  • 파이프라이닝 전송: 송수신 입장에서 무엇을 고려해야 할까
  • 송신버퍼와 수신버퍼
    • 송신버퍼: 어플리케이션 계층에서 전송할 데이터 임시 저장
    • 수신버퍼: 네트워크 계층에서 수신할 데이터 임시 저장

TCP 흐름제어

  • 송신호스트가 수신호스트가 처리할수있는 수신버퍼보다 더 많은데이터를전송하면
  • 버퍼 오버플로우: 일부 데이터가 처리되지 않을 수 있음
728x90

'Computer Science > Network' 카테고리의 다른 글

[Computer Science] [네트워크] 네트워크 거시적으로 보기  (0) 2025.01.20
'Computer Science/Network' 카테고리의 다른 글
  • [Computer Science] [네트워크] 네트워크 거시적으로 보기
bulmang
bulmang
모바일 개발자 도전
  • bulmang
    bulmang
    bulmang
  • 전체
    오늘
    어제
    • 분류 전체보기 (208)
      • 알고리즘 (68)
        • List (3)
        • Two Pointer (6)
        • Binary Search (4)
        • Prefix Sum (3)
        • Sort (4)
        • Brute Force (5)
        • Array (2)
        • String (4)
        • 프로그래머스 (12)
        • 백준 (9)
        • Queue (2)
        • Stack (2)
        • Recursion (12)
      • Computer Science (16)
        • Computer Architecture (6)
        • Operating System (5)
        • Network (2)
        • 기타 (2)
        • System Programming (1)
      • Swift (70)
        • 개발 (24)
        • 정리 (25)
        • 문법 (20)
      • Flutter (24)
      • 기타 (12)
        • 후기 (12)
      • Git (6)
      • Ios 오픈소스 (5)
      • UI 디자인 (5)
      • AppleScript (2)
  • 링크

    • Notion
    • Github
  • 태그

    riverpod
    Swift
    til
    백준
    코딩테스트
    today i learned
    협업
    Apple Developer Academy
    재귀
    IOS
    알고리즘
    Xcode
    FLUTTER
    자료구조
    Java
    SwiftUI
    컴퓨터구조
    문법
    피플
    개발
  • 최근 댓글

  • 최근 글

  • 인기 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.2
bulmang
[Computer Science] [네트워크] 전송 계층
상단으로

티스토리툴바