컴퓨터 네트워크 05 : TCP UDP

728x90

컴퓨터 네트워크 05 : TCP UDP


 

1. TCP

Transmission Control Protocol

연결 지향적 프로토콜 = 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜

장치들 사이에 논리적인 접속을 성립하기 위해 연결을 설정하여 신뢰성을 보장하는 연결형 서비스

네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메시지, 세그먼트라는 블록 단위)을 안정적이고 순서대로 에러없이 교환할 수 있도록 한다.

 

특징

1. 연결형 서비스로 가상 회선 방식(발신지와 수신지 사이에 논리적 접속을 성립하는 과정)을 제공

 

2. 3-way handshaking 과정을 통해 연결을 설정, 4-way handshaking 과정을 통해 연결을 해제

 

3. 연속성보다 신뢰성있는 전송을 중요시하는 프로토콜. UDP보다 느림.

 

4. 흐름제어

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

 

5. 혼잡제어

네트워크 내 패킷 수가 과도하게 증가하지 않도록 방지

 

6. 높은 신뢰성 보장

신뢰성이 높은 전송을 하기 때문에 UDP보다 속도가 느림

 

7. 전이중, 점대점 방식

전이중: 전송이 양방향으로 동시에 일어남

점대점: 각 연결이 정확히 2개의 종단점을 가지고 있음

 

TCP의 연결 과정: 3-way handshake

1. client가 SYN(synchronize sequence numbers)을 보내고 SYN-SENT 상태로 대기

2. server는 SYN-RECEIVED 상태로 바꾸고 SYN과 그의 응답 ACK를 보냄

3. SYN+ACK를 받은 client가 ESTABLISHED 상태로 변경하고 server에게 응답 ACK를 보냄

4. ACK를 받은 server가 ESTABLISHED 상태로 변경함

 

상태 설명
CLOSED 연결 전 기본 상태
LISTEN 포트가 열린 상태로 연결 요청 대기
SYN-SENT SYN 요청 상태
SYN-RECEIVED SYN 요청을 받고 상대방의 응답 기다림
ESTABLISHED 연결 수립 완료, 데이터 교환 가능

 

TCP의 연결 해제 과정: 4-way handshake

1. close된 client가 FIN(종료 요청)을 보내고 FIN-WAIT-1상태로 대기

2. server가 CLOSE-WAIT로 바꾸고 응답 ACK를 전달. 동시에 해당 포트에 연결된 애플리케이션에게 close를 요청

3. ACK를 받은 클라이언트는 상태를 FIN-WAIT-2로 변경

4. close 요청을 받은 서버 애플리케이션은 종료 프로세스를 진행하고 FIN을 client로 보내 LAST_ACK 상태로 바꿈

5. FIN을 받은 클라이언트는 ACK를 서버에 다시 전송하고 TIME-WAIT로 상태를 바꿈

TIME-WAIT에서 일정 시간이 지나면 CLOSW된다. ACK를 받은 서버도 포트를 CLOSED로 닫는다.

 

*TIME-WAIT: 먼저 연결을 끊는 쪽에서 생성되는 소켓. 혹시 모를 전송 실패에 대비하기 위해 존재함.

패킷의 손실이나 통신자 간 연결 해제가 되지 않는 문제를 예방함.

상태 설명
ESTABLISHED 연결 수립 완료. 데이터 교환 가능 상태.
FIN-WAIT-1 자신이 보낸 FIN에 대한 ACK 혹은 상대방의 FIN을 기다림.
FIN-WAIT-2 자신이 보낸 FIN에 대한 ACK를 받았고 상대의 FIN을 기다림.
CLOSE-WAIT 상대방의 FIN을 받은 상태. 상대방 FIN에 대한 ACK를 보내고 어플리케이션에 종료를 알림.
LAST-ACK CLOSE-WAIT 상태를 처리 후 자신의 FIN 요청을 보내고 FIN에 대한 ACK를 기다림.
TIME-WAIT 모든 FIN에 대한 ACK를 받고 연결 종료가 완료된 상태. 새 연결과 겹치지 않도록 일정 시간 기다린 후 CLOSED로 전이.
CLOSED 연결 수립을 시작하기 전 기본 상태(연결 없음)

 

 

2. UDP

User Datagram Protocol

비연결형 프로토콜: 연결을 위해 할당되는 논리적인 경로가 없고, 각각의 패킷은 다른 경로로 전송되며, 독립적인 관계를 지님.

특징

비연결형 서비스. 데이터그램 방식 제공: 데이터 전송 순서 바뀔 수 있음

데이터 수신 여부 확인X:

신뢰성 낮음

흐름 제어, 혼잡 제어 기능이 없어서 TCP보다 빠름

1:1, 1:N, N:N 통신 가능

실시간 서비스(스트리밍)에 적합

 

 

3. TCP와 UDP의 차이 정리

TCP vs UDP

프로토콜 종류 TCP UDP
연결 방식 연결형 비연결형
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 보장X
수신 여부 확인 여부 확인함 안함
통신 방식  1:1 1:1 1:N N:N
신뢰성 높음 낮음
속도 느림 빠름

 

728x90