컴퓨터 네트워크 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 | UDP |
연결 방식 | 연결형 | 비연결형 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 보장X |
수신 여부 확인 여부 | 확인함 | 안함 |
통신 방식 | 1:1 | 1:1 1:N N:N |
신뢰성 | 높음 | 낮음 |
속도 | 느림 | 빠름 |
'CS 공부 > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 07 : 네트워크 계층, IP 주소의 구조, 서브넷 (0) | 2023.04.07 |
---|---|
컴퓨터 네트워크 06 : TCP 흐름제어, 혼잡 제어 (0) | 2023.03.31 |
컴퓨터 네트워크 04 : IPv4 IPv6 (0) | 2023.03.24 |
컴퓨터 네트워크 03 : DNS 정리 (0) | 2023.03.24 |
컴퓨터 네트워크 02 : 네트워크 응용의 구조(Client-Server, P2P), 프로세스 종류, 프로토콜 종류, 인터넷 전송계층, FTP, HTTP (0) | 2023.03.17 |