인프라를 운영 및 구축 혹은 어떠한 이슈를 해결함에 있어서 TCP/IP를 아느냐 모르냐는 차이가 매우 크다고 말할 수 있다.
OSI 7 Layer와 더불어 TCP/IP는 개발자, 엔지니어를 가리지 않고 나오는 단골소재이다.

1. TCP/IP란?
인터넷 프로토콜 스위트(Internet Protocol Suite는 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약(프로토콜)의 모음이다.
이 프로토콜 스택은 다양한 계층의 프로토콜로 구성되어 있으며, 그 중에서도 IP와 TCP가 가장 많이 쓰이고 핵심적이다.
IP는 데이터를 목적지까지 전달하는 주소 지정 및 라우팅 기능을 담당하고
TCP는 그 위에서 데이터의 신뢰성과 순서 보장을 책임진다.
비록 TCP와 IP는 서로 독립적인 프로토콜이지만, IP의 한계점을 TCP가 보완하는 구조로 함께 사용되기 때문에
통상적으로 TCP/IP라는 통합된 이름으로 부른다.
2. IP 프로토콜의 한계
IP는 데이터를 보낼 때, 수신 측의 상태를 확인하지 않기 때문에 다음과 같은 중요한 한계점들이 존재한다.
💠1. 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송되고, 이에 대해서 알 수 없는 문제가 발생함

💠비신뢰성 : IP는 데이터(패킷)의 정확한 도착 여부나 순서를 보장하지 않음
→ 패킷이 중간에 사라지거나, 패킷이 순서대로 오지 않을 수 있는 문제점이 발생함

네트워크 경로가 유동적으로 변하기 때문에 패킷들이 순서대로 도착하지 않을 수 있음

💠그 외에도 프로그램 구분의 문제
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 2개 이상이라면?
IP는 호스트(컴퓨터)의 주소만 식별할 수 있을 뿐, 같은 컴퓨터에서 실행되는 여러 개의 애플리케이션을 구분할 수 없음.
예를 들어, 동일한 서버에서 웹 서버와 메일 서버가 동시에 동작 중일 경우, IP만으로는 어떤 애플리케이션과 통신해야 하는지 알 수 없다.
3. 인터넷 프로토콜 스택의 4계층
| 1. 네트워크 인터페이스 계층(Network Interface Layer) | - 물리적 전송 담당- IP 패킷을 실제 네트워크로 보내거나 수신함- MAC 주소 기반 통신 | - 랜카드 (NIC)- 랜 드라이버- Ethernet, Wi-Fi, 이더넷 프레임, MAC 주소 |
| 2. 인터넷 계층 (IP) | - 패킷 전달 및 라우팅- IP 주소 기반으로 목적지까지 전달 | - IP(Internet Protocol)- ICMP, ARP- IP 주소 (예: 192.168.0.1) |
| 3. 전송 계층(TCP, UDP) | - 송신자와 수신자 간의 데이터 전송 신뢰성 보장- 포트 번호 사용 | - TCP (신뢰성 보장)- UDP (속도 우선)- 포트 번호 (예: 80, 443) |
| 4. 애플리케이션 계층 (Application Layer) |
- 사용자와 직접 상호작용하는 데이터 처리- 애플리케이션 프로토콜 사용 | - HTTP, HTTPS- FTP, SMTP, DNS, SSH 등 |

4. IP 프로토콜 vs TCP 프로토콜? 무슨차이인가?
TCP/IP는 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말이며 TCP/IP를 사용하겠다는 말의 의미는 IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하여 TCP의 특성을 활용해 송신자와 수신자가 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 의미이다.
여기서 말하는 IP(Internet Protocol)은 데이터 패킷을 한컴퓨터에서 다른 컴퓨터 전송하는 방법을 정의한 것이다.
IP 프로토콜은 아래와 같은 작동방식을 수행한다.
1. 데이터 패킷 생성
: 인터넷을 통해 데이터를 전송할 때 패킷이라는 단위로 전송되는데 이 때 각 패킷에는 Header(헤더)가 존재한다.
헤더에는 패킷의 출발지 IP, 도착지 IP, 패킷의 크기, 패킷의 순서와 같은 정보들이 존재한다.
이러핸 패킷은 전송되는 동안에 여러개의 중간 노드(라우터, 스위치 등)을 거칠 수 있으며 이러한 노드들은 패킷을
전달하고 경로를 결정하는데 도움을 준다.
2. 패킷전송
: 패킷이 생성되면 이를 인터넷에 전송하는데 이 전송과정은 바로 라우터를 통해 이루어진다.
각 라우터는 IP 헤더를 확인하고, 패킷을 목적지로 가장 효율적으로 이동시킬 수 있는다음 라우터로 전송한다.
3. 패킷 재조립
: 패킷이 목적지에 도착하면, 패킷의 순서를 기반으로 원래의 데이터를 재조립한다. 이 과정에서 TCP 프로토콜에 의해 수행되며 그래서 TCP/IP를 같이 묶어서 말한다.
4. 오류처리
: 패킷이 전송과정에서 손실되거나, 오류가 발생한 경우, IP는 이를 직접처리하지 않고 TCP와 같은 더 높은 계층의 프로토콜에 의해 처리한다.
5. TCP(Transmission Control Protocol) 특징
1. 연결지향 - TCP 3 way handshake

클라이언트와 서버 모두 syn을 보내고 양쪽 모두 ack(니 syn 잘 받았어)가 되면 서로의 연결 상태를 믿을 수 있는 구조를 만들어 놓고 데이터를 전송한다.
2. 데이터 전달 보증

3. 순서 보장

4. 신뢰할 수 있는 프로토콜

위와 같이 TCP안에는 전송 제어, 순서, 검증정보 등이 있기 때문에 1~3의 내용이 보장되고 그렇기에 신뢰할 수 있는 프로토콜이라고 할 수 있다.
'네트워크' 카테고리의 다른 글
| 리눅스에서 특정 서버 포트 확인 : nmap 활용 가이드 (0) | 2023.03.28 |
|---|---|
| Open SSL? TLS? 무슨 차이일까? (0) | 2023.01.28 |
| WebSocket vs WEBRTC 개념정리 (0) | 2022.08.27 |
| [네트워크] - 내부망과 외부망 개념 (0) | 2020.08.19 |
| [네트워크] - 프로토콜(protocol) (0) | 2020.08.19 |