프론트엔드를 위한 CS 지식 (2) - 네트워크

Junho Yun·2023년 3월 29일
0
post-thumbnail

OSI 7 계층

컴퓨터에서 네트워크를 사용해서 통신을 수행하는 과정을 7단계로 나눈 것
왜 나눴냐고? 고장났을 때 해당부분만 고치면되고, 문제가 생겼을 때 빠르게 판단을 할 수가 있기 때문에 기능별로 나눠서 구분

  • 물리 계층 - 실제 케이블, 커넥터 및 기타 하드웨어 구성 요소를 포함하여 네트워크를 통해 데이터의 물리적 전송을 처리하는 최하위 계층입니다.

  • 데이터 링크 계층 - 이 계층은 직접 연결된 장치 간에 안정적인 데이터 전송을 담당하며 오류 감지 및 수정과 같은 기능을 포함합니다.

  • 네트워크 계층 - 이 계층은 서로 다른 네트워크 간의 데이터 라우팅을 담당하고 주소 지정 및 라우팅 프로토콜을 사용하여 데이터 패킷이 올바른 목적지로 전달되도록 합니다.

  • 전송 계층 - 이 계층은 장치 간의 종단 간 통신을 제공하고 안정적인 데이터 전달을 보장합니다. 여기에는 TCP 및 UDP와 같은 프로토콜이 포함됩니다.

  • 세션 계층 - 이 계층은 서로 다른 장치에서 실행되는 응용 프로그램 간의 세션 설정, 유지 관리 및 종료를 관리합니다.

  • 프리젠테이션 계층 - 이 계층은 암호화 및 압축을 포함하여 데이터의 형식화 및 프리젠테이션을 담당합니다.

  • 응용 프로그램 계층 - OSI 모델의 최상위 계층으로, 응용 프로그램이 네트워크를 통해 서로 통신할 수 있도록 하는 서비스 및 인터페이스를 제공합니다. 여기에는 HTTP, FTP 및 SMTP와 같은 프로토콜이 포함됩니다.

• OSI 7계층은 참조 모델(reference model)로 사실상 이론적인 개념이다. → 국제표준화기구(ISO)가 참여하여 개발했다.
• 현재의 TCP/IP 계층이 더 실무적인 구조에 가깝다.

TCP/IP 프로토콜

흔히 TCP/IP라고 알려진 인터넷 프로토콜 스위트 (Internet Protocol Suite)는 인터넷과 이와 유사한 컴퓨터 네트워크 사이에서 정보를 주고받는 데 이용되는 통신 프로토콜의 모음입니다. 이 인터넷 프로토콜 스위트의 현재 기본 프로토콜은 전송 제어 프로토콜 (Transmission Control Protocol: TCP)과 인터넷 프로토콜 (Internet Protocol: IP) 있습니다.

  • 전송 제어 프로토콜(TCP)은 데이터를 패킷으로 분해하여 네트워크를 통해 안정적으로 전송되도록 하고 대상에서 올바른 순서로 다시 조립하는 역할을 합니다. 또한 혼잡 제어 및 흐름 제어를 처리하여 네트워크 혼잡을 방지합니다.
  • 인터넷 프로토콜(IP)은 네트워크의 장치 간에 데이터 패킷을 라우팅하고 고유한 IP 주소를 사용하여 장치 주소 지정을 담당합니다.

TCP 3-way, 4-way Handshake

TCP 통신 방식은 안전하고 정확한 데이터 전송을 목표로 한다.
1. 연결 성립을 위해 3 Way Handshake를 사용한다.
2. 연결 해제를 위해 4 Way Handshake를 사용한다.

3-way

  • 첫 번째 장치(클라이언트라고 함)는 SYN(동기화) 패킷을 두 번째 장치(서버라고 함)로 보냅니다. 이 패킷에는 시퀀스 번호와 초기 시퀀스 번호(ISN)라는 임의의 값이 포함됩니다.
  • 서버는 SYN-ACK(Synchronize-Acknowledge) 패킷으로 응답합니다. 이 패킷에는 자체 시퀀스 번호와 클라이언트의 ISN보다 하나 큰 승인 번호가 포함됩니다.
  • 클라이언트는 서버의 SYN-ACK 패킷을 수신했음을 확인하는 ACK(Acknowledge) 패킷을 서버로 다시 보냅니다. 이 패킷에는 서버의 ISN보다 하나 큰 승인 번호가 포함되어 있습니다.

4-way

  • 클라이언트는 FIN(완료) 패킷을 서버로 전송하여 데이터 전송이 완료되었음을 나타냅니다.
  • 서버는 ACK 패킷으로 응답하여 클라이언트의 FIN 패킷을 수신했음을 확인합니다.
  • 서버는 자신의 FIN 패킷을 클라이언트에 전송하여 데이터 전송이 완료되었음을 나타냅니다.
  • 클라이언트는 ACK 패킷으로 응답하여 서버의 FIN 패킷을 수신했음을 확인합니다. 4방향 핸드셰이크가 완료되면 연결이 종료되고 더 이상 데이터를 교환할 수 없습니다.

TCP, IP 흐름제어 & 혼잡제어

TCP(Transmission Control Protocol)는 인터넷을 통한 데이터 전송을 위한 흐름 제어, 혼잡 제어 및 오류 감지 메커니즘을 제공하는 안정적인 연결 지향 전송 계층 프로토콜입니다.

흐름 제어

stop and wait

전송자가 한 번에 하나의 패킷을 전송하고 다음 패킷을 전송하기 전에 수신자의 승인을 기다리는 흐름 제어 메커니즘입니다. 이렇게 하면 패킷이 올바른 순서로 수신되고 데이터 손실이 발생하지 않습니다. 그러나 대기 시간이 많기 때문에 느리고 비효율적일 수 있습니다.

sliding window

송신자가 수신자로부터 승인을 받기 전에 여러 패킷을 보낼 수 있는 흐름 제어 메커니즘입니다. 수신기는 한 번에 받을 수 있는 패킷 수를 나타내는 window 크기를 지정합니다. 수신자가 패킷을 처리할 때 발신자에게 승인을 다시 보내어 발신자가 창 크기 제한까지 더 많은 패킷을 보낼 수 있습니다. 이 메커니즘을 통해 데이터를 더 빠르고 효율적으로 전송할 수 있습니다.

혼잡 제어

Slow Start

TCP가 연결을 시작하는 동안 정체 창(cwnd) 크기를 점진적으로 늘리기 위해 사용하는 메커니즘입니다. 느린 시작에서 cwnd 크기는 작은 값으로 시작하여 수신자로부터 새로운 승인(ACK)을 받을 때마다 두 배가 됩니다. 느린 시작은 네트워크의 정체를 방지하고 네트워크 리소스 사용을 최적화하는 데 사용됩니다.

AIMD

발신자는 작은 cwnd 값으로 시작하여 혼잡 이벤트가 발생할 때까지 추가로 증가시킵니다. 발신자가 중복 ACK 또는 시간 초과를 수신하면 정체 이벤트가 발생합니다. 정체 이벤트가 발생하면 발신자는 cwnd를 곱셈으로 줄이고 슬로우 스타트 단계를 다시 시작합니다.

Fast Recovery

시간 초과를 기다리지 않고 정체 이벤트에서 복구하기 위해 TCP에서 사용하는 메커니즘입니다. 보낸 사람이 세 개의 중복 ACK를 받으면 패킷이 손실되었다고 가정하고 빠른 복구 단계에 들어갑니다. 빠른 복구 단계에서 보낸 사람은 cwnd 크기를 절반으로 줄이고 패킷을 계속 보냅니다. 보낸 사람이 손실된 패킷에 대한 ACK를 받으면 빠른 복구 단계를 종료하고 혼잡 회피 단계로 들어갑니다.

UDP

TCP(전송 제어 프로토콜) 및 UDP(사용자 데이터그램 프로토콜)는 인터넷을 통한 데이터 전송에 사용되는 서로 다른 두 가지 프로토콜입니다.

UDP는 비연결형 프로토콜입니다. 데이터를 전송하기 전에 연결을 설정하지 않으며 모든 데이터가 수신되거나 올바른 순서로 수신된다는 것을 보장하지 않습니다. UDP는 오버헤드가 낮고 흐름 제어 또는 오류 감지 메커니즘을 사용하지 않기 때문에 TCP보다 빠른 프로토콜입니다. 비디오 스트리밍이나 온라인 게임과 같이 데이터의 실시간 전송이 필요한 애플리케이션에 일반적으로 사용됩니다.

TCP vs UDP

요약하면 TCP는 데이터를 효율적으로 전송하는 신뢰할 수 있는 연결 지향 프로토콜인 반면 UDP는 안정성보다 속도를 우선시하는 더 빠르고 연결 없는 프로토콜입니다. 프로토콜의 선택은 애플리케이션 또는 사용 사례의 특정 요구 사항에 따라 다릅니다.

profile
의미 없는 코드는 없다.

0개의 댓글