<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Transport Layer on Kelly Dev</title><link>https://kelly-chui.github.io/tags/transport-layer/</link><description>Recent content in Transport Layer on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 31 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/transport-layer/index.xml" rel="self" type="application/rss+xml"/><item><title>Network. TCP Flow &amp; Congestion Control</title><link>https://kelly-chui.github.io/posts/cs-network-tcp-flow-congestion-control/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-network-tcp-flow-congestion-control/</guid><description>&lt;h2 id="개요"&gt;개요&lt;/h2&gt;
&lt;p&gt;TCP는 신뢰성 있는 데이터 전송을 위해 흐름 제어(Flow Control) 와 혼잡 제어(Congestion Control) 기능을 제공함.&lt;/p&gt;
&lt;p&gt;흐름 제어는 송신자와 수신자 사이의 데이터 전송량을 조절하고, 혼잡 제어는 네트워크 전체의 혼잡을 방지하기 위한 메커니즘이다.&lt;/p&gt;
&lt;h2 id="흐름-제어-flow-control"&gt;흐름 제어 (Flow Control)&lt;/h2&gt;
&lt;p&gt;송신자와 수신자의 처리 속도 차이로 인해 데이터가 손실되지 않도록 전송량을 조절하는 기능이다.&lt;/p&gt;
&lt;h3 id="정지-대기-stop-and-wait"&gt;정지-대기 (Stop-and-Wait)&lt;/h3&gt;
&lt;p&gt;수신 측의 ACK를 받은 후에 다음 패킷을 전송하는 방식, 한 번에 하나의 패킷만을 전송할 수 있음&lt;/p&gt;
&lt;h3 id="슬라이딩-윈도우-sliding-window"&gt;슬라이딩 윈도우 (Sliding Window)&lt;/h3&gt;
&lt;p&gt;ACK를 이용해서 송신 데이터의 양을 조절하는 방식, ACK를 받지 않더라도 미리 정해진 패킷의 수 만큼 연속적으로 전송하는 방식&lt;/p&gt;</description></item><item><title>Network. TCP vs. UDP</title><link>https://kelly-chui.github.io/posts/cs-network-tcp-vs-udp/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-network-tcp-vs-udp/</guid><description>&lt;h2 id="tcp-vs-udp"&gt;TCP vs. UDP&lt;/h2&gt;
&lt;p&gt;TCP와 UDP는 모두 전송 계층에서 동작하는 프로토콜이지만, 연결 방식과 데이터 전송 방식이 다르다.&lt;/p&gt;
&lt;p&gt;TCP는 신뢰성을 우선으로 하고, UDP는 속도와 실시간성을 우선으로 설계되었다.&lt;/p&gt;
&lt;h2 id="비교"&gt;비교&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;TCP&lt;/th&gt;
&lt;th&gt;UDP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;연결 방식&lt;/td&gt;
&lt;td&gt;연결 지향 (Connection-oriented)&lt;/td&gt;
&lt;td&gt;비연결형 (Connectionless)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;신뢰성&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;순서 보장&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터 전송 방식&lt;/td&gt;
&lt;td&gt;스트림(Stream)&lt;/td&gt;
&lt;td&gt;데이터그램(Datagram)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;흐름 제어&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;혼잡 제어&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;헤더 크기&lt;/td&gt;
&lt;td&gt;20~60 Byte&lt;/td&gt;
&lt;td&gt;8 Byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;속도&lt;/td&gt;
&lt;td&gt;상대적으로 느림&lt;/td&gt;
&lt;td&gt;상대적으로 빠름&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="언제-사용할까"&gt;언제 사용할까?&lt;/h2&gt;
&lt;h3 id="tcp"&gt;TCP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;웹 서비스 (HTTP, HTTPS)&lt;/li&gt;
&lt;li&gt;이메일 (SMTP)&lt;/li&gt;
&lt;li&gt;파일 전송 (FTP)&lt;/li&gt;
&lt;li&gt;데이터의 정확성이 중요한 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="udp"&gt;UDP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;li&gt;DHCP&lt;/li&gt;
&lt;li&gt;실시간 스트리밍&lt;/li&gt;
&lt;li&gt;VoIP&lt;/li&gt;
&lt;li&gt;온라인 게임&lt;/li&gt;
&lt;li&gt;빠른 응답이 중요한 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="선택-기준"&gt;선택 기준&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;데이터의 정확성과 순서가 중요하다면 TCP를 사용한다.&lt;/li&gt;
&lt;li&gt;일부 패킷 손실이 발생하더라도 실시간성이 더 중요하다면 UDP를 사용한다.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Network. TCP(Transmission Control Protocol)</title><link>https://kelly-chui.github.io/posts/cs-network-tcp/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-network-tcp/</guid><description>&lt;h2 id="소개"&gt;소개&lt;/h2&gt;
&lt;p&gt;TCP(Transmission Control Protocol)는 전송 계층(L4)에서 동작하는 연결 지향(Connection-oriented) 프로토콜이다.&lt;/p&gt;
&lt;p&gt;신뢰성 있는 데이터 전송을 위해 연결 설정, 순서 제어, 오류 제어, 흐름 제어, 혼잡 제어 등의 기능을 제공한다.&lt;/p&gt;
&lt;h2 id="특징"&gt;특징&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;신뢰성 있는 연결형 서비스 제공&lt;/li&gt;
&lt;li&gt;포트 번호를 이용한 다중화, 순서 제어, 오류 제어, 흐름 제어, 혼잡 제어 기능 제공&lt;/li&gt;
&lt;li&gt;애플리케이션에는 메시지 경계를 보존하지 않는 연속된 바이트 스트림을 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="tcp-헤더"&gt;TCP 헤더&lt;/h3&gt;
&lt;p&gt;TCP 세그먼트 앞부분에 위치한 데이터 전송을 위한 제어 정보를 포함하는 구조, 20바이트로 구성되며 최대 60바이트로 확장 가능&lt;/p&gt;</description></item><item><title>Network. UDP(User Datagram Protocol)</title><link>https://kelly-chui.github.io/posts/cs-network-udp/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-network-udp/</guid><description>&lt;h2 id="소개"&gt;소개&lt;/h2&gt;
&lt;p&gt;UDP(User Datagram Protocol)는 전송 계층(L4)에서 동작하는 비연결형(Connectionless) 프로토콜이다.&lt;/p&gt;
&lt;p&gt;연결 설정 없이 데이터를 빠르게 전송하며, 신뢰성보다 실시간성이 중요한 환경에서 주로 사용된다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;UDP: User Datagram Protocol&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;OSI 7계층에서 전송 계층(L4)에 해당&lt;/p&gt;
&lt;h2 id="특징"&gt;특징&lt;/h2&gt;
&lt;h3 id="장점"&gt;장점&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스
&lt;ul&gt;
&lt;li&gt;지연 시간이 낮음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단순한 프로토콜 구조
&lt;ul&gt;
&lt;li&gt;헤더 크기가 작고, 오버헤드가 적음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IP 계층의 유니캐스트, 브로드캐스트, 멀티캐스트 전송에 사용할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="단점"&gt;단점&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;신뢰성 부족
&lt;ul&gt;
&lt;li&gt;패킷 손실, 순서 오류, 중복이 발생해도 복구할 수 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;애플리케이션 수준의 보완 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="데이터그램-패킷-통신"&gt;데이터그램 패킷 통신&lt;/h3&gt;
&lt;p&gt;각 데이터그램은 다른 데이터그램과 독립적으로 전달된다. UDP 자체에는 순서 번호, 재전송, 중복 제거 기능이 없으므로 도착 순서나 전달 성공을 보장하지 않는다.&lt;/p&gt;</description></item></channel></rss>