[혼공네트]4주차_chapter04. 전송 계층

hyewoon·2024년 7월 26일
0

4주차(7/22 ~ 7/28) :chapter04. 전송계층

네트워크 계층과 비교

🔗 네트워크 계층의 목표 & 역할
네트워크 간 패킷을 빠르게 목적지로 전달하는 역할을 수행한다.

  1. 이때 IP(인터넷 프로토콜)를 통해 네트워크간 통신을 하는데 IP주소라는 개념을 이용해 송수신지의 주소를 지정하고--> 목적지로 전달
  2. 라우터라는 통신장비는 라우터프로토콜을 통해서 최적의 경로를 설정한다.
    --> 빠르게 전달

🔗 네트워크 계층의 한계
1. 패킷이 중간에 손상되었는지, 중복 전달되었는지 등의 오류 검증 하지 않는다. --> 비신뢰성, 비안정성
2. 호스트간 사전 연결 수립 작업이 없다. --> 비 연결성

즉, 네트워크 계층의 목표는 패킷을 목적지까지 빠르게 전달하는 것이지, 패킷의 안정성과 신뢰성까지 보장하지는 않는다.

전송 계층

➡️전송계층은 신뢰할 수 있는 연결형 통신이 가능한 프로토콜(TCP)를 제공하기에 네트워크계층의 한계를 보완할 수 있고, 포트를 통해 응용 계층의 애플리케이션을 식별함으로써 응용계층과의 연결 다리 역할을 수행한다.

포트(PORT)

➡️ 특정 애플리케이션을 식별할 수 있는 정보

친구가 보낸 사진이 내 카톡으로 도착하기까지 대략적인 과정을 생각해보면 다음과 같은 과정을 거칠것이다.

친구의 카톡(애플리케이션)-> 친구의 핸드폰(호스트)-> 네트워크 통신 -> 내 핸드폰(호스트)-> 나의 카톡(애플리케이션)

지금까지 IP주소를 통해서 호스트를 특정한다고 했는데, 결국 패킷의 최종 수신 대상은 특정 애플리케이션 프로세스(카톡)인데, 패킷이 특정 애플리케이션까지 전달되려면 패킷에 특정 애플리케이션을 식별할 수 있는 정보가 포함되어야 하고, 이러한 정보를 PORT라고 한다.

일반적으로 IP주소 : 포트번호 형식으로 IP주소와 함께 표기되는 경우가 많다.

TCP와 UDP

📌 TCP(Transmission Control Protocal)
: 신뢰할 수 있는 통신을 위한 연결형 프로토콜
: 연결 수립 & 연결 종료 과정 필요
: 데이터 송수신 시 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어 기능 수행

📌 UDP(User Datagram Protocal)
: TCP 보다는 신뢰성은 떨어지지만 비교적 빠른 통신이 가능한 비연결형 프로토콜
: UDP는 TCP에 비해 적은 오버헤드로 패킷을 빠르게 처리함. 그래서 실시간 스트리밍 서비스, 인터넷 전화처럼 실시간이 강조되는 상황에서 자주 사용

💡 UDP는 신뢰할 수없는 통신 & 비연결형통신
그렇다면 IP사용하면 되는데 왜 UDP를 사용할까? UDP만의 특징은 무엇일까?

  • 이번에도 chatGPT에 질문해서 답변을 얻음.
    IP와 차이점과 함께, TCP와 비교해 UDT의 장점도 알려주었습니다.

TCP 통신 단계와 세그먼트 구조 : 연결형 프로토콜

🔗 TCP 통신 단계

🔗 TCP 세그먼트 구조

✔️ MSS(Maximum Segment Size) TCP로 전송할 수 있는 최대 페이로드 크기

✔️ 알아둬야 할 필드
제어비트

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

순서번호

  • 세그먼트의 올바른 송수신 순서를 보장하기 위한 번호
  • 세그먼트 데이터의 첫 바이트에 부여되는 번호
  • SYN (연결 수립위한 비트)

응답 확인 번호

  • 순서 번호에 대한 응답
  • 일반적으로 '수신한 순서 번호 + 1'로 설정
  • ACK (승인 나타내는 비트)

🔗 TCP 연결 수립과 종료

✔️ 연결 수립 : 쓰리 웨이 핸드셰이크

  • 쓰리 웨이 핸드셰이크(three-way handshake) 세 단계로 이루어진 TCP 연결수립 과정

  • 이 과정을 거친 후 본적격인 송수신 시작됨

  • 액티브 오픈
    : 처음 연결을 시작하는 호스트의 연결 수립 과정 (호스트 A)
    : 주로 클라이언트에 의해 수행(요청)
    : SYN(연결 수립위한 비트)

  • 패시브 오픈
    : 연결 요청을 받고 나서 연결 수립해 주는 호스트(호스트 B)
    : 주로 서버에 의해 수행(응답)
    : ACK(세그먼트 승인 비트)

✔️ 연결 종료

  • 송수신 호스트가 각자 한 번씩 FINACK를 주고 받음

  • 액티브 클로즈
    : 먼저 연결을 종료하려는 호스트에 의해 수행(호스트 A)
    : FIN (연결 종료 비트)

  • 패시브 클로즈
    : 연결 종료 요청을 받아들이는 호스트에 의해 수행(호스트 B)
    : FIN (연결 종료 비트)

🔗 TCP 상태

✔️ 연결 수립되지 않은 상태

  • CLOSED
    : 아무런 연결 없는 상태
  • LISTEN
    : 연결 대기 상태
    : 일반적으로 패시브 오픈 호스트가 LISTEN상태 유지
    :SYN (연결 수립 위한 비트)

✔️ 연결 수립 상태

  • SYN -SENT
    : 액티브 오픈 호스트(호스트 A, 클라이언트)
    : SYN 세그먼트 보낸 후 응답 기다리는 상태
  • SYN-RECEIVED
    : 패시브 오픈 호스트(호스트 B,서버)
    : SYN + ACK 보낸 뒤 그에 대한 ACK 기다리는 상태
  • ESTABLISHED
    : 연결 확립되었음 나타내는 상태

✔️ 연결 종료 상태

  • FIN-WAIT-1
    : 연결 종료의 첫 단계
    : 액티브 클로즈 호스트(호스트 A)
    : FIN (연결 종료 비트)
  • CLOSE-WAIT
    : 패시브 클로즈 호스트(호스트 B)
    :ACK (세그먼트 승인 비트) 보낸 후 대기상태
  • FIN-WAIT-2
    :액티브 클로즈 호스트(호스트 A)
  • LAST-ACK
    : 패시브 클로즈 호스트(호스트 B)
    : FIN (연결 종료 비트)
  • TIME-WAIT
    : 액티브 클로즈 호스트(호스트 A)

TCP의 오류, 흐름, 혼잡 제어 : 신뢰성있는 프로토콜

🔗 오류 제어 : 재전송 기법

💡오류 제어 방식 : 오류 확인 (원인 파악) ➡️ 재전송 (해결책)

✔️ 오류 확인 방식

  • 송신 호스트가 중복 ACK 세그먼트 수신 시
  • 송신 호스트가 타임 아웃 발생할 때까지 ACK 세그먼트 받지 못할 때

✔️ ARQ : 재전송 기법

  • Stop-and-Wait ARQ
    : 제대로 전달했음을 확인하기 전까지(ACK) 새로운 메시지 보내지 않는 방식
    : 신뢰성 높으나 네트워크 호율 낮음

  • 파이프라이닝 방식
    : 연속해서 메시지 전송할 수 있는 방식
    : ACK (세그먼트 승인 비트) 도착하기 전이더라도 여러 세그먼트 보낼 수 있음
    : 오늘날 TCP는 파이프라이닝이 사용되는 Go-Back-N ARQ 와 Selective Repeat ARQ를 기반으로 작동

  1. Go-Back-N ARQ

: 여러 세그먼트 전송 가능
: 문제 발생한 세그먼트 있으면 그 후에 전송한 모든 세그먼트 다시 재전송
: 누적 확인 응답

  1. Selective Repeat ARQ

: 문제 발생한 세그먼트 있으면 해당 세그먼트만 다시 재전송
: 개별 확인 응답

🔗 (수신 호스트의) 흐름 제어 : 슬라이딩 윈도우

윈도우 (Window)
➡️ 송신 호스트가 파이프라이닝할 수 있는 최대량

송신 호스트는 파이프라이닝 기법을 사용한다고해서 무작성 많은 세그먼트를 보내는 것이 아니라 수신 호스트가 수용할 만큼의 세그먼트를 알고 그에 적합한 세그먼트를 보내야 한다.

  • TCP 세그먼트 내 윈도우 필드에 윈도우를 명시함
  • 윈도우 크기에 따라 전송할 수 있는 데이터의 양이 달라짐
  • 윈도우 크기만큼 확인 응답을 받지 않고도 한 번에 전송 가능함

🔗 (송신 호스트의) 혼잡 제어

  • 혼잡(congstion)
    트래픽으로 인해 패킷의 처리 속도가 늦어지거나 유실될 우려가 이는 네트워크 상황

➡️ 혼잡 윈도우
: 송신 호스트가 혼잡 없이 전송할 수 있을 법한 데이터 양

  • 송신 호스트가 네트워크 혼잡도 판단하고 혼잡한 정도에 맞춰 유동적으로 전송량을 조절하며 전송함
  • 혼잡 윈도우의 크기를 결정하는 알고리즘으로는 느린시작 알고리즘, 혼자 호피 알고리즘, 빠른 회복 알고리즘 등이 있다.

🏅 기본 숙제

Ch.04(04-1) 확인 문제 1번(p.206) 풀고 설명하기

IP와 연관된 통신 특성으로 알맞은 단어는?
: 비신뢰성 -> 패킷 전송 시 패킷의 중복, 누락, 오류 등의 안정성 보장하지 않음
: 비연결성 -> 송수신 호스트간에 사전 연결 수립 작업을 거치지 않는 통신 특성

--> 즉 , IP는 목적지까지 패킷을 빠르게 전달하는 목적에 집중된 프로토콜로, '목적지까지 패킷이 잘 도착했는지는'는 확인하지 않는다.

이러한 IP의 한계를 보완하는 것이 전송계층의 TCP이다.
'목적지까지 패킷이 잘 도착했는지를 확인하는 (패킷 중복, 누락, 오류 확인, 흐름제어 등) 신뢰성과 송수신 호스트간에 사전 연결 수립하는 연결성은 전송계층 프로토콜인 TCP의 특징이다.

Ch.04(04-2) 확인 문제 2번(p.225) 풀고 설명하기

정답 : ACK 세그먼트 : 세그먼트 승인을 나타내기 위한 비트
TCP의 쓰리웨이 핸드셰이크연결 수립 단계에서 거치는 과정

  1. 호스트 A : 액티브 오픈 연결 수립 요청 하는 SYN 세그먼트 보냄
  2. 호스트 B: 패시브 오픈 호스트 A의 요청에 대한 호스트 B의 응답(ACK세그먼트)와 연결수립 SYN 세그먼트 보냄
  3. 호스트 A : 호스트 B의 SYN에 대한 응답(ACK 세그먼트)

🎁 선택 숙제

작업 관리자에서 프로세스별 PID 확인해 보기

profile
곰곰

0개의 댓글