# TCP/IP (Transmission Control Protocol/Internet Protocol)

TCP/IP는 인터넷과 다른 네트워크에서 데이터를 전송하는 데 사용되는 프로토콜 스위트이다. 이 프로토콜 스위트는 다양한 네트워킹 기능을 지원하며, 인터넷을 포함한 현대 네트워크의 기초를 이루고 있다.

#### TCP/IP 모델

TCP/IP 모델은 네트워킹을 4개의 계층으로 나누어 설명한다. 각 계층은 특정한 기능을 담당하며, 하위 계층의 서비스에 의존하여 상위 계층의 기능을 제공한다.

* **네트워크 인터페이스 계층(Network Interface Layer):** 물리적 네트워크를 통해 데이터를 전송하는 기능을 담당한다. 이 계층은 이더넷, Wi-Fi 등 다양한 네트워크 기술을 포함한다.
* **인터넷 계층(Internet Layer):** 데이터를 패킷으로 나누고, 출발지에서 목적지까지의 경로를 결정하는 역할을 한다. 주요 프로토콜로는 IP(Internet Protocol), ICMP(Internet Control Message Protocol), ARP(Address Resolution Protocol)가 있다.
* **전송 계층(Transport Layer):** 종단 간의 통신을 담당하며, 데이터의 신뢰성 있는 전송을 보장한다. 주요 프로토콜로는 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 있다.
* **응용 계층(Application Layer):** 네트워크 응용 프로그램 간의 데이터 교환을 지원한다. HTTP, FTP, SMTP, DNS 등 다양한 프로토콜이 이 계층에서 동작한다.

#### IP(Internet Protocol)

IP는 데이터를 패킷 형태로 전송하며, 패킷의 출발지와 목적지를 지정하는 주소 체계를 제공한다. IP 주소는 네트워크 상의 장치를 식별하는 데 사용된다.

* **IPv4:** 32비트 주소 체계를 사용하며, 약 43억 개의 고유한 주소를 제공한다. 주소 형식은 192.168.1.1과 같이 점으로 구분된 10진수 네 부분으로 구성된다.
* **IPv6:** 128비트 주소 체계를 사용하여 거의 무한한 수의 고유한 주소를 제공한다. 주소 형식은 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같이 콜론으로 구분된 16진수 여덟 부분으로 구성된다.

#### TCP(Transmission Control Protocol)

TCP는 신뢰성 있는 데이터 전송을 보장하는 전송 계층 프로토콜이다. 데이터의 순서 보장, 오류 검출 및 복구, 흐름 제어 등을 제공한다.

* **연결 지향성:** TCP는 통신을 시작하기 전에 출발지와 목적지 간의 연결을 설정한다. 이를 위해 3-way handshake 과정을 사용한다.
* **데이터 스트림:** TCP는 데이터를 스트림으로 취급하며, 송신자가 보낸 데이터의 순서와 무결성을 보장한다.
* **오류 검출 및 복구:** TCP는 패킷 손실이나 손상을 감지하고, 손실된 패킷을 재전송함으로써 데이터를 신뢰성 있게 전달한다.

#### UDP(User Datagram Protocol)

UDP는 전송 계층에서 비연결형 통신을 제공하는 프로토콜이다. TCP와 달리 신뢰성 있는 전송을 보장하지 않으며, 주로 실시간 데이터 전송에 사용된다.

* **비연결성:** UDP는 데이터를 전송하기 전에 연결을 설정하지 않으며, 각 패킷은 독립적으로 처리된다.
* **낮은 오버헤드:** TCP보다 간단한 헤더 구조를 가지며, 추가적인 오류 검출 및 복구 메커니즘이 없으므로 오버헤드가 낮다.
* **실시간 전송:** 신뢰성보다는 속도가 중요한 응용 프로그램, 예를 들어 스트리밍, 온라인 게임 등에 적합한다.

#### 주요 프로토콜

TCP/IP 스위트에는 다양한 프로토콜이 포함되어 있으며, 각 프로토콜은 특정한 네트워킹 기능을 제공한다.

* **HTTP/HTTPS (HyperText Transfer Protocol/Secure):** 웹 브라우징을 위한 프로토콜로, HTTP는 암호화되지 않은 텍스트를 전송하고 HTTPS는 암호화된 텍스트를 전송한다.
* **FTP (File Transfer Protocol):** 파일 전송을 위한 프로토콜로, 파일 업로드 및 다운로드 기능을 제공한다.
* **SMTP (Simple Mail Transfer Protocol):** 이메일 전송을 위한 프로토콜로, 주로 메일 서버 간의 이메일 전송에 사용된다.
* **DNS (Domain Name System):** 도메인 이름을 IP 주소로 변환하는 프로토콜로, 사람이 읽기 쉬운 도메인 이름을 네트워크 장치가 이해할 수 있는 IP 주소로 변환한다.

***

관련 자료:

1. Tanenbaum, A. S., & Wetherall, D. J. (2011). Computer Networks. Prentice Hall.
2. Stevens, W. R., & Wright, G. R. (1994). TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley.
3. Forouzan, B. A. (2002). TCP/IP Protocol Suite. McGraw-Hill.
4. Kurose, J. F., & Ross, K. W. (2016). Computer Networking: A Top-Down Approach. Pearson.
5. Comer, D. E. (2013). Internetworking with TCP/IP Volume One: Principles, Protocols, and Architecture. Prentice Hall.
