CS/Computer Network 8

[컴퓨터네트워크/Computer Network] 전송계층 - TCP(Transmission Control Protocol)란?

이번 글에서는 TCP에 대해서 정리해보고자 한다. TCP(Transmission Control Protocol)란?인터넷에서 데이터를 전송할 때 사용하는 대표적인 전송 계층 프로토콜은 TCP와 UDP이다.TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 제공하기 위해 설계된 연결 지향(Connection-Oriented) 프로토콜이다. 단순히 데이터를 보내는 것이 아니라, 데이터가 손실 없이 순서대로 도착했는지 확인하며 전송한다.웹 브라우징(HTTP/HTTPS), 이메일(SMTP), 파일 전송(FTP) 등 대부분의 인터넷 서비스는 TCP를 기반으로 동작한다. TCP의 특징TCP는 다음과 같은 특징을 가진다.1. 연결 지향(Connection-Oriented)데이터..

CS/Computer Network 2026.06.03

[컴퓨터네트워크/Computer Network] 신뢰적인 데이터 전송 원리 완벽 정리 (rdt 3.0)

앞서 rdt 1.0부터 2.2까지, 비트 에러(Bit Errors)가 발생하는 환경에서 데이터를 안전하게 주고받는 방법에 대해 공부했었다. 이번에는 rdt 3.0, 즉 네트워크의 또 다른 골칫거리인 '패킷 유실(Packet Loss)'까지 해결하는 과정에 대해 정리하고자 한다. 앞선 프로토콜들(rdt 2.x)에서는 채널에 비트 에러는 있지만, 패킷이 아예 사라지는 경우는 없다고 가정했다. 하지만 현실의 네트워크는 패킷을 중간에 잃어버리기도 하고, ACK 응답 자체가 소멸하기도 한다. 이를 해결하기 위해 등장한 것이 바로 rdt 3.0이다.1. 패킷 유실(Packet Loss)의 문제와 해결책송신자가 데이터를 보냈는데 패킷이 네트워크에서 사라지거나, 수신자가 보낸 ACK가 사라지면 어떻게 될까? 송신자는..

CS/Computer Network 2026.05.23

[컴퓨터네트워크/Computer Network] 네트워크 기술 LAN, MAN, WAN (2)

지난 글에서 LAN(근거리 통신망)을 다뤘다면, 이번에는 그 범위를 넓혀 도시 단위의 MAN과 국가 이상의 규모를 연결하는 WAN에 대해 정리해보고자 한다.1. MAN (Metropolitan Area Network)MAN은 LAN보다 넓은 지역(도시 단위)을 지원하는 네트워크 구조다.하드웨어와 소프트웨어 구성은 LAN과 유사하지만, 연결 규모가 훨씬 크다는 차이점이 있다.MAN의 표준 : DQDB (Distributed Queue Dual Bus)MAN의 국제 표준안으로 채택된 것이 바로 DQDB다.본래 광 LAN을 위해 개발되었으나 MAN 환경에 적합하여 표준으로 자리 잡았으며, 케이블 TV 산업의 발전에 따라 함께 성장했다. DQDB의 3가지 핵심 특징:분산 데이터 큐 : 데이터 대기열을 분산하여 ..

CS/Computer Network 2026.05.07

[컴퓨터네트워크/Computer Network] 네트워크 기술 LAN, MAN, WAN (1)

이번 글에서는 네트워크 기술 중 가장 기본이 되는 LAN(근거리 통신망)에 대해 정리해 보고자 한다.네트워크를 분류하는 기준은 다양하지만, 가장 직관적인 기준인 '크기(거리)'를 중심으로 LAN의 특징과 구성 형태를 살펴보자.1. 컴퓨터 시스템 vs 네트워크네트워크를 이해하기 전, 우리가 사용하는 컴퓨터 내부와 외부 네트워크의 차이를 먼저 이해할 필요가 있다.그 핵심은 '전송 매체의 성능'에 있다.밀접한 연결 (Tightly Coupled) : 컴퓨터 내부의 CPU, 메모리, I/O 장치들은 시스템 버스라는 매우 빠른 통로로 연결되어 있다. 지연 시간이 거의 없어 유기적으로 작동한다.느슨한 연결 (Loosely Coupled) : 반면, 네트워크는 물리적으로 떨어진 호스트들을 연결한다. 전송 매체의 속도..

CS/Computer Network 2026.05.07

[컴퓨터네트워크/Computer Network] 신뢰적인 데이터 전송 원리 완벽 정리 (rdt 1.0 ~ 2.2)

이번 글에서는 네트워크 레이어 중 전송 계층(Transport Layer)의 핵심 기능 중 하나인 Principles of Reliable Data Transfer(rdt, 실뢰적인 데이터 전송 원리)에 대해 정리해보고자 한다. 데이터를 보낼 때 중간에 패킷이 손실되거나 에러가 발생하지 않도록 보장하는 것은 매우 중요하다. 하지만 우리가 사용하는 하위 네트워크 계층 (IP 등)은 기본적으로 Unreliable channel(비신뢰적 채널)이기 때문에, 전송 계층에서는 이를 극복하기 위한 복잡한 매커니즘이 요구된다. 신뢰적인 데이터 전송우리가 구현하고자하는 서비스의 추상적인 구조는 다음과 같다.Reliable service abstraction (신뢰적인 서비스 추상화)상위 애플리케이션 계층에서는 데이터..

CS/Computer Network 2026.05.05

[컴퓨터네트워크/Computer Network] 파일 분배 : client-server vs. P2P

이번 글에서는 client-server 와 P2P의 파일 분배에 대해서 알아보고자 한다.어려운 개념은 아니지만 컴퓨터 네트워크 과목을 수강하면서 이 부분이 은근히 이해가 안 갔다. 이 글에서 핵심 질문은 다음과 같다.인터넷에서 파일을 다운로드할 때, 사람이 많아지면 느려지는 게 당연할까? 네크워크의 client-server와 P2P(Peer-to-Peer) 방식의 차이에 대해 알아보고자 한다."누가 일을 도와주는가" 가 핵심이다. 비유를 통해 알아보자.여기서 사용할 단위는 다음과 같다. F (File): 나눠줄 파일의 크기 (피자 한 판)u (Upload): 파일을 보내는 속도 (서빙 속도)d (Download): 파일을 받는 속도 (먹는 속도)N (Number): 파일을 받으려는 사람 수 (손님 수)C..

CS/Computer Network 2026.04.20

[컴퓨터네트워크/Computer Network] DNS란?

지난 글에서는 애플리케이션 계층의 TCP와 UDP의 소켓 프로그래밍에 대해 정리하였다.이번에는 Domain Name System이라고 알려져있는 DNS에 대해 정리해보고자 한다. DNS (Domain Name System)우리는 DNS를 익히 알고 있다. DNS라는 명칭은 몰라도 매일 마주한다.예를 들어서 우리는 브라우저에 google.com 같은 주소를 입력한다.하지만 컴퓨터는 0과 1로 이루어진 형태만 이해할 수 있지 이러한 문자 형태의 주소는 이해할 수 없다. 컴퓨터는 IP 주소라고 하는 형태만 이해 가능하다.그렇다면 우리는 아래와 같은 의문이 생기게 된다.사람이 이해하는 주소를, 컴퓨터가 이해하는 주소로 누가 바꿔주는 걸까? 이 역할을 하는 것이 DNS이다. DNS(Domain Name Syste..

CS/Computer Network 2026.04.14

[컴퓨터네트워크/Computer Network] 소켓 프로그래밍이란?

이번 글에서는 Application Layer에서 이루어지는 소켓 프로그래밍(Socket Programming)에 대해서 알아보고자 한다.소켓을 이용하여 커뮤니케이션 하는 클라이언트와 서버 애플리케이션을 어떻게 만들 수 있는지에 대해 집중적으로 공부하고자 한다. Socket (소켓)소켓이란 애플리케이션 프로세스와 end-end transport 프로토콜 사이의 문(door)이다.즉, 네트워크상에서 프로세스 간 데이터를 주고받기 위한 실제적인 창구(해당 글에서는 door라고 함)라고 볼 수 있다. Socket programming소켓 프로그래밍에는 두 가지 유형이 있다.TCP : 신뢰할 수 있는 바이트 스트림(byte stream) 지향UDP : 신뢰할 수 없는 데이터그램(datagram)응용 예시:1...

CS/Computer Network 2026.04.12