CS 31

[컴퓨터네트워크/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

[소프트웨어공학/Software Engineering] 시스템 설계와 구조 - system design and architecture

이번 글에서는 시스템 설계와 구조에 대해서 글을 작성해보고자 한다. 소프트웨어 아키텍처(software architeture)서브시스템과 컴포넌트를 찾아서 이들 사이의 관계(인터페이스)를 정의해야 한다.서브시스템을 나누었을 때의 장점독립적인 개발 단위가 줄어들고, complexity가 작아진다.(재사용성이 높아지고, 유지보수에 용이하며, 이식성이 높아진다.)서브시스템은 Layering & Partitioning 과 MVC 두 가지 방법으로 나뉜다.Layering & PartitioningLayering : 서브시스템을 수직으로 나누는 것Partitioning : 같은 레이어 안에서 기능별로 서브시스템을 나누는 것Layering은 두 가지로 또 나뉘는데closed architecture인접한 레이어에 메세..

[컴퓨터네트워크/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

[프로그래밍 언어론/Programming Language] 정규 표현식(Regex)이란?

정규 표현식을 정리한 글은 굉장히 많지만, 공부한 것을 쉽게 정리해보려고 한다. 정규 표현식(Regular Expression)정규 표현식은 검색에서 문자열을 일치시키는 데 사용되는 특수 문자 패턴을 말한다.UNIX 환경의 편집기나 각종 유틸리티(grep, sed, awk 등)에서 텍스트를 효율적으로 다루기 위해 필수적인 개념이다. 정규 표현식은 메타문자(Metacharacters)라고 불리는 기호들을 조합하여 복잡한 문자열 규칙을 정의하는 것이다.규칙을 정의한 것인데 사용하는 환경에 따라서 표기법 버전이 다를 수 있어서 사용 전 확인이 불가피하다. 우리는 정규 표현식을 쉽게 찾아볼 수 있다.가장 대표적인 활용 사례는 이메일 검증 정규식이다.^[a-zA-Z0-9_.±]+@[a-zA-Z0-9-]+\.[a-..

[소프트웨어공학/Software Engineering] 형상 관리(CM: Configuration Management)란?

이번 글에서는 소프트웨어 공학에서 말하는 형상 관리에 대해 알아보고자 한다. 소프트웨어 시스템은 개발과 사용 중에 끊임없이 변경된다. 시스템 요구사항이 변경되고 시스템의 새로운 버저네서 이런 변경이 구현되어야 한다는 것이다. 하드웨어가 변경되면 소프트웨어가 변경되어야 한다. 경쟁사가 새로운 기능을 도입하면 그것에 대응해야 하는 것도 포함이다. 그렇기 때문에 대부분의 시스템은 버전들의 집합(set)으로 생각될 수 있으며, 각각의 버전들은 유지되고 관리되어야 한다.형상 관리형상 관리(CM : Configuration Management)는 변화하는 소프트웨어 시스템을 관리하기 위한 정책, 프로세스, 그리고 도구들과 관련된다. 각각의 시스템 버전에 어떤 변경들이 있고 컴포넌트 버전들이 포함되어 있는지를 놓치기..

[컴퓨터네트워크/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