OSI 7계층 - (4계층)

Sb_chi·2025년 4월 23일
post-thumbnail

🔍 Intro

	이전에 살펴본 네트워크 계층은 한 번에 하나의 통신만 처리할 수 있었고, 

	패킷의 순서를 보장하거나 유실에 대응하는 기능이 부족했다.
    
	이제 이러한 한계를 보완하는 전송 계층에 대해 알아보자.

전송 계층

주요 단위 : 세그먼트

주요 구성요소 : TCP/UDP

🔍 주요 특징 

	1. 여러 애플리케이션 간의 동시 통신 지원

	2. 패킷의 순서 및 신뢰성 보장

 	3. 오류 검출 및 재전송 기능 제공

TCP란?

  • 패킷의 전달 과정에서 순서를 보장하고 유실되지 않도록 하는 통신 규약
    패킷 안에 세그먼트를 담아서, 주고 받으며 로직 처리

  • 지속적으로 무결성 확인

  • 사용사례 : 웹 페이지(HTTP/HTTPS) , 이메일, 파일 전송, SSH 등등...


세그먼트란?

🌟 TCP/UDP의 데이터 전달 단위

주요 구성

- Port : 소스/목적

- Sequence / Acknowledgement Number : 통신 주체끼리 데이터 주고 받았는지 확인하는 용도

- Flags : 세그먼트의 목적 등을 정의(ACK,SYN,FIN) 

- Window Size : 세그먼트를 만든 주체가 얼마만큼의 데이터를 받을지 전달

- Urgent Pointer : 세그먼트의 중요도 설정 (먼저 처리해야 하는 세그먼트는 무엇인가 등등)

- 기타 (checksum 등등)

- 실제 데이터

💻 port ~ CheckSum 까지를 TCP 헤더라고 부른다.

🧑‍ 세그먼트는 그 밑 계층에 있는 3계층의 패킷에 담기게 된다.

🧑‍ 패킷은 프레임에 담기게 된다.


TCP 세그먼트 동작방식

🎯 클라이언트와 서버 간에 세션을 먼저 설정한 뒤, 데이터를 주고받는다. 클라이언트는 여러 연결을 처리하기 위해 동적으로 할당되는 임시 포트 번호를 사용하고 , 서버는 고정된 서비스 포트 번호를 사용한다. 연결 설정 과정은 3-Way Handshake로 구성한다.


3-Way Handshake


  1. SYN

    클라이언트가 서버에 연결 요청을 보낼 때, 자신의 초기 시퀀스 번호(CS)를 포함한 SYN 패킷을 전송한다.

    [클라이언트] → [서버]

    (CS = 13)


  1. SYN-ACK

    서버는 클라이언트의 SYN에 응답하면서, 자신의 초기 시퀀스 번호(SS)를 포함한 SYN과
    클라이언트의 시퀀스 번호 + 1 을 ACK로 포함한 SYN-ACK 패킷을 보낸다.

    [서버] → [클라이언트]

    (SS = 4431, ACK = 14)


  1. ACK

    클라이언트는 서버의 시퀀스 번호(SS)에 +1 (4431 + 1 = 4432) 한 값을 ACK로 설정하여 ACK 패킷을 전송한다.

    클라이언트 → 서버

    (CS = 14, ACK = 4432)


UDP란?

- 빠르고 간단하게 데이터를 주고 받음

- Connectionless

	> 데이터의 무결성,순서,전달여부 체크
	> 패킷이 순서대로 오지 않거나, 중복되거나, 아예 전달되지 않을 수 있음
    > 대신에 빠르고 간단함
    
- 주요 사용 사례

	> 스트리밍
    > 보이스톡
    > 온라인게임
    
    패킷 하나 정도 유실해도 상관없고, 빠른 처리를 요구할 때 주로 쓰인다.

UDP의 세그먼트는 TCP에 비해 훨씬 간단한게 보인다.

TCP/UDP의 통신 구조

특징TCPUDP
연결 방식연결지향 (Connection-Oriented)비연결지향 (Connectionless)
통신 방식양방향 (Full-Duplex) 지원단방향 구조에 가까움 (응답 구현 가능)
신뢰성높음 (재전송, 순서 보장 등)낮음 (신뢰성 보장 X)

0개의 댓글