본문 바로가기
일반 네트워크

TCP/IP, UDP

by [Akashic Records] 개발의선지자 2024. 6. 19.

지난 시간 네트워크 규격 가장 기초인 ISO 7 계층에 대해 포스팅 하였다.

 

이번 포스트에서 TCP/IP와 UDP에 대해 자세히 알아보고자 한다.

 

TCP/IP란?

 

TCP(Transmisiion Control Protocol) : 전송 제어 프로토콜로써, 전송 계층(4 layer)를 따른다.

가상 회선 방식 제(클라이언트와 서버를 연결하여 패킷을 전송하기위한 논리적 경로 배정)

수신 패킷에 대한 승인을 제공하고,  보낸 순서대로 패킷을 수신할수 있도록 한다.

만약 에러가 발생하였거나 패킷이 손실되었다면 패킷 재전송을  요청하기에 신뢰성이 보장된 프로토콜이다.

IP(Internet Protocol) :    인터넷 통신 프로토콜로써,  네트워크 계층(3 layer)를 따른다.

호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.

IP 주소 체계를 따르고, IP Routing을 통해 경로를 찾고 목적지에 도착하는 프로토콜

IP의 특징은 비신뢰성과 비연결성

TCP의 특징은 연결 지향성과 신뢰성 데이터 전송 보장

전송과 수신을 동시에 수행하는 전이중 방식, 호스트와 스스트 간 점대점(Point to Point) 연결을 제공

 

TCP/IP(TCP + IP)를 사용한다는 뜻은 송신 호스트가 수신 호스트에게 IP 주소(IPv4, IPv6)를 사용하여 데이터를 전송하고 , TCP 프로토콜에서 수신 받은 데이터 신뢰성 있는 연결 담당하여 데이터 손실 시  재송신을 요청하는 신뢰성을 보장하는 프로토콜이다.

 

TCP/IP 4 layer 와 OSI 7 layer는 위와 같이 대응된다.

OSI 모델은 장비 개발과 통신 자체를 표준  개념으로 사용,  실제 통신 기기에서는 TCP/IP 프로토콜을 사용한다.

OSI 7 layer TCP/IP 계층 역할
Application Layer(전송 계층) Application Layer 사용자가 응용프로그램과 소통할 수 있게 UI 제공.

TCP/IP 기반의 응용 프로그램을 구분할 때 사용
Presentation Layer(표현 계층)
Session Layer(세션 계층)
Transport Layer(전송 계층) Transport Layer 데이터의 송수신을 담당하고 통신 노드 간의 연결을 제어

네트워크 양단의 송수신 호스트 사이에서 신뢰성 있는 전송
Network Layer(네트워크 계층) Network Layer
논리적 주소인 IP를 이용한 노드간 데이터 전송과 라우팅 담당
Data Link Layer(데이터 링크 계층) Network Access Layer 운영체제의 하드웨어적인 요소와 관련되는 모든 것을 지원

물리적으로 데이터가 네트워크를 통해 전송되는 형식 정의

에러 검출 기능과 패킷의 프레임화.
Physical Layer(물리 계층)

 

TCP는 데이터 스트림으로부터 데이터를 얻은 후 일정 단위로 분할한 뒤 TCP 헤더를 덧붙여 TCP 세그먼트를 생성

TCP 프로토콜의 작동은 크게 세 가지 흐름으로 구분한다.

  1. 연결 생성 (Connection establishment)
  2. 자료 전송 (Data transfer)
  3. 연결 종료 (Connection termination)

신뢰성 있는 연결이 생성되어야 하며, 그 후 자료를 전송하고, 마지막으로 연결을 종료하면서 할당된 자원을 반납한다.

 

연결 생성

연결을 생성하기 위해, 3방향 핸드셰이크를 사용한다.

SYN: 클라이언트가 서버에게 SYN 메시지를 보낸다. 이 메시지에 포함된 시퀀스 번호는 클라이언트가 임의 설정 값 A

이 때 포트는 열려있는 상태이다.

SYN-ACK: 서버가 클라이언트에게 SYN-ACK 메시지로 응답한다. 이 메시지에 포함된 시퀀스 번호는 서버가 임의로 설정한 값 B, 응답 번호는 (A + 1).

ACK: 클라이언트가 서버에게 ACK 메시지를 보낸다. 이 메시지에 포함된 응답 번호는 (B + 1)

이 밖에 주로 사용하는 Flag는 RST, FIN, FIN/ACK, PUSH 등이 있다.

연결 종료

연결을 종료하기 위해, 4방향 핸드셰이크를 사용한다.

흐름 제어(Flow control)

데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지

 

수신자도 Window Size를 통해 수신량을 정할 수 있다.

혼잡 제어(Congestion control)

네트워크 내의 패킷 수가 넘치지 않도록 방지

 

데이터의 소통량이 과하면 패킷을 조금만 전송해서 붕괴현상을 막는다.

신뢰성 높은 전송

Dupack-based retransmission: ACK 값이 중복으로 올 경우 패킷 이상을 감지하고 재전송 요청

 

Timeout-based retransmission: 일정시간동안 ACK 값이 수신을 못할 경우 재전송 요청

 

웹 페이지 로딩, 이메일 전송, 파일 전송 등 정확한 데이터 전송이 중요한 경우에 사용

왜냐하면 TCP는 데이터 패킷이 손실될 경우 재전송을 요청하고, 보내진 순서대로 데이터가 도착하도록 보장하기 때문입니다. 따라서, 데이터의 정확성을 요구하는 애플리케이션에서 주로 사용됩니다.

UDP란?

비연결형 서비스로 데이터그램 방식(데이터그램이란, 독립적인 관계를 지니는 패킷 )

연결형이 아니라서 데이터를 송수신 시 신호절차가 필요없고 데이터의 경계가 없다(서버 소켓과 클라이언트 소켓 구분x)

또한 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다.

 

특징 

1. 데이터 신뢰성이 낮다(데이터 전송 순서 보장x)

2. 3-way handshaking과정을 거치지 않기 때문에 TCP보다 속도가 빠르다.

3. 패킷 오버헤드가 적어 네트워크 부하가 감소된다.
4. UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.

 

UDP는 실시간 통신이나 스트리밍 서비스에 주로 사용됩니다. 데이터의 빠른 전송이 중요하고,

일부 데이터의 손실이 허용되는 환경에 적합

왜냐하면 UDP는 연결 성립에 걸리는 시간이 없고, 전송하는 데이터의 크기가 작아 네트워크 지연이 적기 때문입니다. 

실시간 비디오 스트리밍이나 온라인 게임에서 빠른 데이터 전송이 중요.

 

마지막으로 아래 표와 사진으로 정리하고자 한다.

  TCP UDP
연결 방식 연결형 비연결형
패킷 교환 방식 가상 회선 데이터그램
데이터 경계 데이터 경계X 데이터 경계O
전송 순서 전송 순서 보장 전송 순서 보장되지 않는다
수신 여부 확인 수신 여부 확인O 수신 여부 확인X
통신 방식 일대일 통신 일대일,일대다,다대다통신
신뢰성 높다 낮다
속도 느리다 빠르다.
사용 예시 HTTP통신, Email, 파일전송, 메일전송,
터미널접속(Telnet/SSH)
DNS, Broadcasting( 실시간 동영상 서비스),온라인 게임, 음성 통화