Network Edge : Connectionless Service
hosts ( Clients & Server ), 단말기
컴퓨터들 간의 '대화'가 가능하도록 하는
통신서비스, TCP와 UDP 의
특징과 차이점에 대해 자세히 알아보기
TCP, UDP란 ?
네트워크의 계층들 중 '전송 계층'에서 사용하는 프로토콜, = 데이터를 보내기 위한 프로토콜!
TCP란 ?
Transmission Control Protocol (Internet's connection-oriented service)
인터넷 상의 컴퓨터들 사이에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용되는 프로토콜이다. IP가 실제로 데이터의 배달처리를 진행하는 동안, TCP는 데이터 패킷을 추적 관리한다. Client 컴퓨터 내의 TCP는 각 패킷들을 재조립하고 사용자에게 보낼 하나의 완전한 파일이 될 때까지 기다린다.
TCP는 연결 지향 프로토콜. ( Connection-oriented service )
* Protocol이란 ?
-> All communication in Internet coordinated by protocols 즉, 사람으로 생각하면 대화! 컴퓨터로 생각하면 서로 대화하기위한 통신 규약! ( = 대화의 약속)
* 패킷, Packet 이란?
-> 인터넷 내에서 데이터를 보내기 위한 라우팅(경로 배정)을 효율적으로 하기 위해 데이터(정보)를 여러개의 조각들로 나누어 전송, 이때 나눠진 조각이 = 패킷
TCP의 특징
1. Reliable, in-order byte-stream data transfer -> loss: acknowledgements and retransmissions
[ 높은 신뢰성있는, 내가 보낸 순서를 지키는 전송 ]
2. Flow control -> sender won't overwhelm receiver
[ 흐름제어 가능, 받는 receiver가 받을 수 있는 능력 성능, 속도에 맞춰 전달 ]
3. Congestion control -> senders slow down sending rate when network congested
[ 혼잡제어 가능, 네트워크가 막히면 그게 맞춰 속도 조절 ]
4. 제공해주는 기능이 많은 만큼 자원 소모가 ↑↑
[ Computing resource, Network resource ↑↑ ]
5. 연결형 서비스 (Connection-oriented service) 로 가상 회선 방식을 제공
[ 발신지, 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정 ]
6. 3-way handshaking 과정을 통해 연결 설정하고 4-way handshaking을 통해 해제
[ 3-way handshaking -> 목적지와 수신지를 확실히 하여 정확한 정보 전송을 보장 ]
7. UDP에 비해 많은 기능(CPU 사용), 하지만 같은 이유(CPU사용)로 느린 속도
8. 전이중 (Full-Duplex), 점대점(Point to point) 방식
=> 연속성보다 신뢰성이 있는 전송이 중요할 때 사용한다.
Congestion control, 혼잡 제어란 ?
네트워크 내 패킷의 수가 넘치지 않게 방지하는 것. 패킷의 수가 너무 많으면 보내는 패킷의 수를 줄이며
= 혼잡 붕괴 현상을 방지
흐름 제어란 ?
데이터를 송신하는 곳과 받는 곳의 데이터 처리 속도를 제어하여 수신자의 성능, 속도에 맞춰 잘 정보를 수신하도록 만드는 것
= 수신자의 버퍼 오버플로우 방지
TCP 사용 예시
1) HTTP Web : 웹 브라우저
2) FTP (File transfer) : 파일 전송
3) Telnet (remote login) : 원격 로그인
4) SMTP (Simple Mail Transfer Protocol) : email 서비스
UDP란?
User Datagram Protocol
IP를 사용하는 네트워크 내에서 컴퓨터들 간에 메세지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜, 데이터를 '데이터그램 단위'로 처리하는 프로토콜이다. TCP와 달리 UDP는 비연결형 프로토콜로 연결을 위해 할당되는 논리적인 경로가 없다. 때문에 각각의 패킷은 다른 경로로 전송되고 이 때 패킷은 독립적인 관계를 가지게 되어 '다른 경로'로, '독립적으로 처리'가 됩니다.
TCP의 대안이며 IP와 함께 쓰일 때는 UDP/IP 라고도 불린다.
UDP는 TCP와 다르게 메세지들을 Datagram(패킷)으로 나누고 상대방에게 도착할 때 재조립하는 등의 서비스를 제공하지 않으며 순서 또한 제각각이다.
* 데이터그램이란?
-> 독립적인 관계를 지니는 패킷
TCP의 특징
1. Connectionless
[ 비연결형 : 연결이 없다, 데이터그램 방식을 제공 ]
2. Unreliable data transfer
[ 신뢰가지않는 데이터 전송, 유실 가능 ]
3. No flow control
[ 흐름 제어가 없다. 받는 쪽의 성능, 속도 고려 X -> 속도는 빠르긴 하다. ]
4. No congestion control
[ 네트워크 상황 고려 X ]
5. 데이터 전송 시 서로 주고 받는다는 신호 절차가 없다.
[서로 다른 경로로 패킷을 독립적으로 처리 -> 패킷에 부여하는 순서도 없다. ]
6. UDP header의 CheckSum 필드를 통해 최소한의 오류만 검출
7. TCP에 비해 빠른 속도 (기능이 적어서)
=> 신뢰성 보다는 '연속성'이 중요한 서비스에 적합하다. ex) 실시간 스트리밍 서비스
UDP 사용 예시
1) Streaming media
2) teleconferencing
3) DNS ( Domain Name System ) -> 숫자로 이루어진 네트워크 IP주소를 사람이 이해하기 쉬운 명칭인 도메인 이름으로 상호 매칭시켜주는 시스템. 도메인은 a-z, 숫자, 특수문자인 - 의 조합으로 가능하다.
4) Internet telephony -> 음성전화 (voice call), fax, sms, voice-messaging etc..
실시간 오디오같은 건 전송되는 데이터가 간간히 유실되어도 티가 많이 안난다.
TCP vs UDP 최종 비교
프로토콜 종류 | TCP | UDP |
연결 방식 connected or not |
연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 packet |
가상 회선 방식 | 데이터그램 방식 |
전송 순서 in order or not |
전송 순서 보장 O | 전송 순서 보장 X |
흐름 제어 Flow control |
제어함 O | 제어 안함 X |
혼잡 제어 Congestion control |
제어함 O | 제어 안함 X |
수신 여부 확인 receiver check |
수신 여부 확인 O | 수신 여부 확인 X |
통신 방식 commucation |
1 : 1 통신 | 1 : 1, 1 : N, N : N 모두 가능 |
신뢰성 reliable or not |
좋음 | 좋지 않음 |
속도 speed |
느림 | 빠름 |
기능 및 자원 소모 | 기능 많다 -> 자원 소모 많음 |
기능 적다 -> 자원 소모 적음 |
사용되는 예시 examples in reality |
파인 전송, 영화 다운, 웹 브라우저 사용, email | 실시간 스트리밍, 음성전화(보이스 콜), 보이스 메세지, FAX, SMS |
결론 | 중요한 정보, 신뢰성이 필요한 전송 시 TCP를 사용! | 조금 유실되도 괜찮다 싶고 연속성이 더 중요하다면 UDP를 사용 ! |
TCP vs UDP 결론
TCP는 우편 등기, UDP는 우체통과 비슷하다.
우편 등기 : 100% 상대방을 찾아 전달
우체통 : 100% 보장은 아니다.
중요한 내용, 잃어버리면 안되는 정보는 TCP,
유실 되어도 영향이 크지않는 정보는 UDP
왠만해서 우리가 사용하는 것은 TCP
ex) 파일 전송, 영화 다운 등
References: http://www.kocw.net/home/search/kemView.do?kemId=1169634
https://mangkyu.tistory.com/15
'CS' 카테고리의 다른 글
MVC, MVP란? 그림과 함께 개념 및 차이점 이해하기 (0) | 2023.02.10 |
---|---|
[네트워크] TCP/IP Model & OSI Layer Model 7 계층 구조 (0) | 2022.01.12 |
[CS] SSR vs CSR & SPA vs MPA (0) | 2021.09.02 |
The Network Core : Packet switching vs Circuit switching (0) | 2021.07.23 |
[CS] Data Structure, 자료 구조란 무엇일까? (0) | 2021.06.26 |
댓글