TCP (Transmission Control Protocol) / IP (Internet Protocol)
TCP/IP는 OSI7계층중 4계층인 트랜스포트 레이어의 TCP프로토콜과 3계층인 네트워크 레이어의 IP프로토콜을 합쳐서 불리는 네트워크 프로토콜 스위트로, TCP의 특징인 다른기기로 데이터를 전송을 담당하는것과, IP의 특징인 데이터조각들을 최대한 빨리 목적지로 보내는 역할을 담당하는것을 TCP/IP라고 명칭하여 부릅니다.
TCP(Transmission Contorl Protocol)
TCP는 OSI 7계층 중 4계층에 있는 트랜스포트 레이어에 속한 네트워크 프로토콜 중 하나이며 연결지향형 프로토콜 이라고 불리우기도 합니다.
해당 프로토콜의 특징은 높은 신뢰성, 순서 보장, Three-Way Handshaking등이 있습니다.
TCP의 장점으로는 높은신뢰성, 혼잡제어, 흐름제어, 높은 신뢰성, 순서보장 등이 있지만, 아래에 작성할 Three-Way HandShaking방법을 통한 전송으로 인한 다른 프로토콜(UDP 등)에 비하여 상대적으로 느린속도, TCP 헤더에 담긴 정보로 인한 데이터의 크기가 더 높은 단점이 있습니다.
Three-Way Handshaking
3-Way Handshaking이란 로컬 호스트/클라이언트와 서버 간의 연결을 생성하기 위해 TCP/IP 네트워크에서 사용하는 방법입니다. 해당 방법에서는 SYN(Synchronize)와, SYN-ACK(Synchronize-Acknowledgment), ACK(Acknowledgment)의 세단계로 이루어져 있으며 이것을 방법을 통해 클라이언트와 서버간의 신뢰성 있는 연결이 성립됩니다.
1. SYN : 서버와 클라이언트 간의 연결을 설정합니다. 클라이언트가 서버A에게 패킷을 통해 첫번째 세그먼트를 보내 연결을 시작합니다. 해당 세그먼트에는 SYN 의 시퀀스(Ex:1000)번호가 설정되어있으며, 서버A에게 시퀀스 번호 1000에 대한 TCP 접속 요청을 합니다.
2. SYN-ACK : 1번의 단계를 거쳐 서버A에서 연결이 가능하다면, 서버에서 연결 요청을 수락하는 플래그를 설정한 ACK를 클라이언트에게 패킷을 통하여 자신의 SYN을 포함하여 전달합니다. 이때, ACK의 번호는 클라이언트의 SYN 시퀀스의 +1인 번호의 상태로 전송됩니다. (Ex: 클라이언트의 SYN가 1000이라면, ACK은 1001이된다. / 전송되는 SYN:2000, ACK : 1001)
3. ACK : 클라이언트에서 SYN-ACK 패킷을 받으며, 서버A에서 연결 요청에 대한 수락을 확인하기 위해 ACK 패킷을 전송하여 응답을 합니다. 이때, ACK패킷의 시퀀스는 서버A에서 보낸 SYN의 +1 값이 됩니다.
TCP의 통신은 해당 3단계와 시퀀스 번호를 사용하여 순서를 보장해주며, ACK를통하여 요청의 응답을 서로 확인하기 때문에 높은 신뢰성을 가진 프로토콜이라고 할 수 있습니다.
IP(Internet Protocol)
IP는 컴퓨터 네트워크에서 데이터를 전송하기 위한 프로토콜이며, OSI계층에서는 네트워크 레이어에 해당합니다.
해당 프로토콜은 데이터의 라우팅과 주소지정 등을 담당하여 데이터를 패킷을 통해 전달하는것을 담당합니다.
네트워크 계층에서 하는 역할인 논리 주소 체계 인프라를 구축하여 서브 네트워크로 격리하거나 물리적으로 떨어진 네트워크 사이에 서로 통신을 할 수 있는 역할을 담당합니다.
UDP(User Datagram Protocol)
UDP는 데이터를 신속하게 전송하기 위한 비연결형 프로토콜중 하나입니다. UCP의 특징으로는 빠른 데이터 전송속도,
낮은 신뢰성, 데이터 수신 여부를 확인하지 않는다는것, 등이 있습니다.
연결 지향적 프로토콜 : 클라이언트와 서버가 서로 연결된 상태에서 데이터를 주고받는 프로토콜
비연결형 프로토콜 : 연결을 위해 할당하는 논리적인 경로가 없으며, 각각의 패킷은 서로 다른 경로로 전송되어 독립적인 관계를 가지고 있다.
TCP vs UDP
TCP | UDP | |
서비스 유형 | 연결 지향형 프로토콜 | 비연결형 프로토콜 |
스트림 유형 | 바이트 스트림 | 메시지 스트림 |
헤더 | 20-60바이트의 가변성 헤더 | 8바이트 고정 헤더 |
통신 방식 | 1:1 통신 | 1:1, 1:N, N:N 통신 |
신뢰성 | 라우터로의 데이터 전달을 보장한다 | 목적지로의 데이터 전달을 보장할 수 없다. |
전송 순서 및 수신여부 확인 |
데이터 시퀀싱 및 핸드셰이크를 사용한 수신 여부 확인 | 없음 |
용도 | 이메일 보내기, 파일 전송, 웹 브라우징 | 게임, 동영상 스트리밍, 온라인 채팅 |
TCP / IP의 4계층
1. Network Access Layer
- OSI 7계층에서 물리계층과 데이터링크 계층의 역할을 담당하는 계층이다.
- 해당 계층에서는 물리적 연결을 책임진다. (전화선, 동축케이블, 광섬유케이블, WI-FI등)
- 해당 계층의 송수신 단위는 프레임(Frame)이며, 의도된 호스트가 수신할 수 있도록 프레임을 물리적인 신호로 변환한다.
- 해당 프레임은 패킷을 캡슐화하고, MAC주소를 사용하여 소스와 대상을 식별한다.
2. Internet Layer
- IP, ARP, IGMP, ICMP등의 프로토콜을 담당한다.
- 전송단위는 패킷(Packet)이며, 송신측에서 수신측까지 데이터를 전달하기위해 논리적 주소를 설정한다.
- 상위 계층(전송 계층)의 데이터를 작은크기의 패킷으로 분할하여 전송한다.
- 데이터를 목적지까지 가장 빠르게 전달하도록 하며, 패킷의 송수신 전달 여부를 보증하지 않는다.
3. Transport Layer
- TCP / UDP를 담당하는 계층이다.
- 안정적인 연결을 원할시에는 TCP / 빠른 연결을 원할시에는 UDP를 사용한다.
- 포트 번호를 할당하여 상위 응용프로그램에서 실행중인 프로세스를 연결해서 통신한다.
- 네트워크 양단의 송수신 호스트 사이에서 신뢰성 있는 전송기능을 제공한다.
4. Application Layer
- 네트워크 통신이 필요한 어플리케이션(이메일, 웹 브라우저 등)이 존재하는 계층이다.
- Transport Layer를 통하여 원격 호스트에 연결하라는 요청을 보낸다.
- 데이터의 단위는 Message를 가지고 있다.
데이터 전송 순서의 예시
1. Application Layer
- 특정 어플리케이션에서 웹 페이지를 다운로드 요청을 하는 웹 브라우저의 요청(Message)를 전송 계층으로 전송합니다.
2. Transport Layer
- 어플리케이션 계층에서 받은 메시지를 대상 포트 주소를 포함하는 TCP / UDP 헤더를 추가합니다.
- 해당 과정에서 TCP는 세그먼트, UDP는 데이터그램으로 분할하여 헤더를 추가합니다.
3. Network Layer
- 해당 계층에서 소스 및 목적지 IP주소를 포함하는 헤더를 추가하여 패킷을 생성합니다.
4. Data Link Layer
- 데이터 링크 계층에서 MAC 주소를 포함하는 헤더를 추가하여 프레임을 생성합니다.
- 그 후 프레임을 물리계층으로 보내 비트를 전송합니다.
해당 1 ~ 4번의 송신측에서 보내는 과정을 캡슐화 라고하며, 캡슐화를 하는동안 해당 계층에서의 정보가 담겨있는 헤더가 추가됩니다.
물리 계층을 통하여 비트단위로 분할한 데이터들을 전달하며, 수신측에서는 캡슐화된 데이터를 전달받아
DataLink Layer로 넘어가며, 해당 계층에 맞는 헤더들을 읽고 상위 계층으로 전송합니다.
데이터가 Application Layer에 도착한다면, 송신측에서 발신했던 요청에 대하여 응답할 수 있습니다. 해당과정을 역 캡슐화 라고 합니다.
출처 및 참고내역
https://dev-coco.tistory.com/144
https://www.geeksforgeeks.org/differences-between-tcp-and-udp/
https://www.techopedia.com/definition/10339/three-way-handshake
https://ming9mon.tistory.com/11
https://microchipdeveloper.com/tcpip:tcp-ip-five-layer-model
'OS , 네트워크' 카테고리의 다른 글
동기, 비동기, 블로킹, 논블로킹 (1) | 2025.03.11 |
---|---|
OSI 7계층 (0) | 2025.03.10 |
TCP 와 UDP의 특징 및 차이점 (0) | 2025.01.06 |
프로세스 동기화 - 세마포어, 뮤텍스, 임계영역 (1) | 2025.01.03 |