TCP란?(Transmission Control Protocol)
- 인터넷을 경유해 통신하는 연결 지향성 프로토콜
- 에러 체킹을 지원
- 데이터의 완전한 전송을 보장
- 패킷의 전송 순서를 보장
- TCP는 FLOW CONTROL을 제공함
Flow control
- 리시버가 데이터를 전송하는 센더를 컨트롤 하는 권한
- 이는 리시버가 빠르고 연속적인 데이터 전송으로 인해 과부하가 걸리는 것을 막기 위함
UDP란(User Datagram Protocol)?
- 작동방식은 TCP와 동일
- 데이터그램을 연속해서 목적지로 전송
- 전송된 데이터의 신뢰성은 보장되지 않음
UDP와 TCP의 차이점?
- TCP는 연결지향 프로토콜 vs. UDP는 비연결지향 프로토콜
- TCP는 전송 전 센더와 리시버 사이의 연결을 성립 vs. UDP는 그딴 거 없음
Reliability
- TCP는 안정적
- TCP로 전송된 데이터는 리시버에게 완전히 전달되는 것이 보장됨
- 데이터 손실이 있으면 데이터는 다시 보내짐
- UDP는 불안정적
- UDP는 데이터 전송의 완정성을 보장하지 않음
- UDP로 전송되는 데이터는 전송 중 데이터가 오염될 수도 누락될 수도 있음
Flow control
- TCP는 Flow control을 제공함
- 리시버는 센더에게 가용할 수 있는 남은 리시브 버퍼의 사이즈를 알려줌
- 리시버가 패킷을 받을 때마다, 센더에게 가용할 버퍼 사이즈를 알리는 메세지가 날아감
- UDP는 플로우 프로토콜 미사용.
- UDP는 스트림에 통째로 실려오거나 그 중 몇개가 없음
Ordering
- TCP는 신뢰도 높은 전송을 위해 패킷의 순서를 정하고 시퀀싱 과정을 거침
- UDP는 그딴 거 없음
Speed
- TCP가 연결하고, 에러체크하고, 패킷이 보낸 순서대로 잘 갔는지 확인할 게 많아 느림
- UDP는 그런 과정이 없기 때문에 데이터 전송이 빠름
Usage
- TCP는 타이밍가 속도가 중요하지 않으면서 높은 신뢰도와 보안이 중요한 곳에 쓰임
- World Wide Web (HTTP, HTTPS)
- Secure Shell (SSH)
- File Transfer Protocol (FTP)
- Email (SMTP, IMAP/POP)
- UDP는 속도와 효율성이 중시되는 곳에 쓰임
- VPN tunneling
- Streaming videos
- Online games
- Live broadcasts
- Domain Name System (DNS)
- Voice over Internet Protocol (VoIP)
- Trivial File Transfer Protocol (TFTP)