[네트워크] 혼자 공부하는 네트워크 4주차

gunny·2024년 7월 28일
0

[CS] OS, Network

목록 보기
5/5

서론

바쁘다 바빠 현대사회라서 이번주가 쉬는 주간인 줄 알았다가 기분이 이상해서 다시 들어와서 다급하게 해결하는 4주차

혼공학습단 12기 4주차

혼자 공부하는 네트워크

2024.07.22 ~ 2024. 07.28

  • 진도: Chapter 04
  • 기본 숙제(필수): Ch.04(04-1) 확인 문제 1번(p.206), (04-2) 확인 문제 2번(p.225) 풀고 설명하기
  • 추가 숙제(선택): 작업 관리자에서 프로세스별 PID 확인해 보기

숙제(과제)

기본숙제(필수)

  • 기본 숙제(필수): Ch.04(04-1) 확인 문제 1번(p.206), (04-2) 확인 문제 2번(p.225) 풀고 설명하기

(04-1) 확인 문제 1번(p.206)

IP는 신뢰할 수 없는 비연결 전송을 수행함.
전송 계층은 이를 보완하면 프로토콜(TCP)를 제공함

(04-1) 확인 문제 2번(p.225)

TCP는 SYN 세그먼트, SYN+ACK 세그먼트, ACK 세그먼트를 주고받는 쓰리 웨이 핸드셰이크를 통해 연결을 수립함

추가숙제

  • 추가 숙제(선택): 작업 관리자에서 프로세스별 PID 확인해 보기

맥 기준 작업 관리자에서 프로세스별 PID 확인하는 방법

ps -ax

정리

04. 전송 계층

04-1. 전송 계층의 개요 : IP의 한계와 포트

네트워크 계층과 응용 계층 사이에 위치한 전송 계층은 신뢰할 수 있는 통신과 연결형 통신을 가능하게 해서 이러한 IP의 한계를 극복하고, 포트 번호를 통해 응용 계층의 애플리케이션 프로세스들을 식별하는 역할을 수행함

  • 네트워크 계층의 핵심 프로토콜 IP는 신뢰할 수 없는 프로토콜 이자 비연결형 프로토콜

신뢰할 수 없는 통신 은 IP 프로토콜이 패킷이 수신지까지 제대로 전송되었다는 보장을 하지 않는 특징. 최선형 전달
비연결형 통신 은 송수신 호스트 간의 사전 연결 수립 작업을 거치지 않는 특징

IP의 한계를 보완하는 전송 계층

[1] 전송 계층은 연결형 통신을 가능하게 함
[2] 전송 계층은 신뢰성 있는 통신을 가능하게 함

응용 계층과의 연결다리, 포트

응용 계층과의 연결 다리 역할로서의 전송 계층을 살펴보면, 포트가 무엇인지 부터 이해해야 함

포트

  • 어떤 패킷을 수신할 애플리케이션에 대한 정보가 패킷에 포함되어 있지 않다면 패킷을 어떤 애플리케이션에 전달해야 할지 알 수 없음. 패킷이 실행 중인 애플리케이션까지 전달되려면 패킷에 특정 애플리케이션을 식별할 수 있는 정보가 포함되어 있음. 이러한 정보 포트(port)
  • 포트의 분류 : 포트 번호를 통해 특정 애플리케이션을 식별함
    0~1023번까지의 포트 번호는 잘 알려진 포트, 1024번~49151번까찌 등록된 포트 번호
    49152번~65535번 동적 포트, 사설 포트, 임시 포트
  • 특정 호스트에서 실행 중인 특정 애플리케이션 프로세스를 식별할 수 있음. IP주소:포트 번호

포트 기반 NAT

NAT : IP 주소를 변환하는 기술.
NAT 변환 테이블 : 변환을 위해 주로 사용되는 것

NAPT

포트 기반의 NAT를 NAPT라고 하고 APT 라고 부르기도 함
NAPI는 포트를 활용해 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유할 수 있도록 하는 NAT 일종

04-2. TCP와 UDP

  • 전송 계층에서 가장 중요한 프로토콜은 TCP와 UDP
    TCP : 신뢰할 수 있는 통신을 위한 연결형 프로토콜
    UDP : TCP보다 신뢰성은 떨어지지만 비교적 빠른 통신이 가능한 비연결형 프로토콜

TCP 통신 단계와 세그멘트 구조

TCP는 통신(데이터 송수신)하기 전에 연결을 수립하고 통신이 끝나면 연결을 종료함. TCP의 연결 수립과 종료를 이해하려면 가장 먼저 MSS 단위와 TCP의 세그먼트 구조를 이해해야 함

  • MSS(Maximum Segment Size) : TCP로 전송할 수 있는 최대 페이로드 크기를 의미함. MSS의 크기를 고려할 때 TCP 헤더 크기를 제외함
    -송신지 포트와 수신지 포트 : 필트 이름 그대로 송신지 또는 수신지 애플리케이션 식별하는 포트 번호가 명시되는 필드
    순서 번호 : 순서 번호가 명시되는 필드
    확인 응답 번호 : 상대 호스트가 보낸 세그먼트에 대한 응답
    제어 비트 : 현재 세그먼트에 대한 부가 정보
    윈도우 : 수신 위도우의 크기

제어 비트
기본적으로 8비트로 구성

  • ACK : 세그먼트의 승인을 나타내기 위한 비트
  • SYN : 연결을 수립하는 비트
  • FIN : 연결을 종료하기 위한 비트

순서 번호와 확인 응답 번호
순서 번호 필드와 확인 응답 번호 필드는 TCP의 신뢰성을 보장하기 위해 사용되는 종요한 필드

TCP 연결 수립과 종료

연결 수립: 쓰리 웨이 핸드셰이크
세 개의 단계로 이루어진 TCP 연결 수립 과정
처음 연결을 시작하는 호스트의 연결 수립 과정 액티브 오픈

연결 종료
쓰리 웨이 핸드셰이크를 통해 연결을 수립한 뒤 데이터 송수신이 끝난 후 연결을 종료함. 송수신 호스트가 각자 한번씩 FIN과 ACK를 주고받으며 이루어짐

TCP 상태

상태(state)는 현재 어떤 통신 과정에 있는지를 나타내는 정보
TCP는 상태를 유지하고 활용한다는 점에서 스테이풀 프로토콜

연결이 수립되지 않은 상태
주로 CLOSED나 LISTEN 상태를 유지

연결 수립 상태

  • SYN-SENT :액티브 오픈 호스트가 SYN 세그먼트를 보낸 뒤 그에 대한 응답인 SYN + ACK 세그먼트를 기다리는 상태
  • SYN-RECEIVED : 패시브 오픈 호스트가 SYN + ACK 세그먼트를 보낸 뒤 그에 대한 ACK 세그먼트를 기다리는 상태
  • ESTABLISHED : 연결이 확립되었음을 나타내는 상태

연결 종료 상태

  • FIN-WAIT-` : 일반적인 TCP 연결 종료 과정에 있어 FIN-QAIT-1은 연결 종료의 첫 단계
  • CLOSED-WAIT : 종료 요청인 FIN 세그먼트를 받은 패시브 클로즈 호스트가 그에 대한 응답으로 ACK 세그먼트를 보낸 후 대기하는 상태
  • FIN-WAIT-2 : FIN-WAIT-1 상태에서 ACK 세그먼트를 받게 되면 FIN-WAIT-2 상태가 됨
  • LAST-ACK : CLOSED-WAIT 상태에서 FIN 세그먼트를 전송한 뒤 이에 대한 ACK 세그먼트를 기다리는 상태
  • TIME-WAIT : 액티브 클로즈 호스트가 FIN 세그먼트를 수신한 뒤 이에 대한 ACK 세그먼트를 전송한 뒤 접어드는 상태

UDP 데이터그램 구조

UDP는 TCP와 달리 비연결형 통신을 수행하는 신뢰할 수 없는 프로토콜

  • UDP 데이터그램 구조는 송신지 포트, 수신지 포트, 길이, 체크섬 필ㄷ의 네 개 필드로 구성됨

04-3. TCP의 오류 : 흐름, 혼잡 제어

TCP는 재전송을 기반으로 다양한 오류를 제어하고 흐름 제어를 통해 처리할 수 있을 만큼의 데이터만을 주고 받으며, 혼잡 제어를 통해 네트워크가 혼잡한 정도에 따라 전송량 조절

오류 제어: 재전송 기법

TCP의 재전송 기반 오류 제어

오류 검출과 재전송
TCP 세그먼트에 오류 검출을 위한 체크섬 필드가 있다고 하지만 신뢰성을 보장하기 부족함

(1) 중복된 ACK 세그먼트를 수신했을 때
(2) 타임 아웃이 발생했을 때

ARQ: 재전송 기법
**ARQ(자동 재전송 요구), ARQ의 종류는 다양한데 가장 대표적인 세 가지 방식인 Stop-and-Wait ARQ, Go-Back-NARQ, Selective Repeat ARQ

Stop-and-Wait ARQ
ARQ 중 가장 단순한 방식
메시지를 송신하고, 이에 대한 확인 응답을 받고 다시 메시지를 송신하고 이에 대한 확인 응답을 받는 것을 반복함.
단순하지만 높은 신뢰성을 보장

Go-Back-N ARQ
연속해서 메시지를 전송할 수 있는 파이프라이닝
파이프라이닝 방식을 활용해 여러 세그먼트를 전송하고 도중에 잘못 전송된 세그먼트가 발생할 경우 해당 세그먼트로부터 전부 다시 전송하는 방식

Selective Repeat ARQ
선택적으로 재전송하는 방법

흐름 제어:슬라이딩 윈도우

TCP의 두 번째 핵심 기능인 흐름 제어를 알아봄
수신 버피 : 수신된 세그머트가 애플리케이션 프로세스에 의해 읽히기 전에 임시로 저장되는 공간

혼잡 제어

혼잡제어 : 혼잡을 제어하기 위한 기능
혼잡 윈도우 : 혼잡 없이 전송할 수 있을 법한 데이터양을 의미함

  • 혼자 윈도우 크기는 어느 정도가 적당함 -> 혼잡 제어 알고리즘

[1] 느린 시간 알고리즘

  • 혼잡 윈도우를 1부터 시작해 문제없이 수신된 ACK 세그먼트 하나당 1씩 증가하는 방식
    느린 시작 알고리즘을 사용할 때 함께 사용하는 값으로 느린 시작 임계치라는 값이 정해져 있음

[2] 혼잡 회피 알고리즘

  • 혼잡 회피 알고리즘은 RTT마다 혼잡 윈도우를 1MSS 씩 증가시키는 알고리즘

[3] 빠른 회복 알고리즘

  • 세 번의 중복된 ACK 세그먼트를 수신하면 빠른 재전송과 더불어 빠른 회복 알고리즘 세 번의 중복 ACK 세그먼트를 수신했을 때 느린 시작은 건너뛰고 혼잡 회피를 수행하는 알고리즘

마무리

그래도 마무리했다.. 담주는 진짜 휴가라고 맞다고 그렇다고

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글