TCP & UDP

참새·2023년 4월 3일
0

TCP(Transmission Control Protocol)

  • 인터넷 프로토콜 스택에서 사용되는 전송 계층 프로토콜 중 하나로 데이터 전송의 신뢰성과 순서를 보장하기 위한 연결 기반 프로토콜.
  • 3-way handshake 방식을 사용하여 연결을 설정하는데 클라이언트가 서버에게 SYN(Synchronize) 패킷을 보내고 서버는 클라이언트의 SYN에 대한 ACK(Acknowledgment)와 SYN 패킷을 보내서 클라이언트와 연결을 설정.
  • 연결이 설정되면 데이터를 전송하고 수신 측에서는 데이터의 순서가 바뀌지 않고 중복되지 않도록 패킷을 재조립하고 확인 응답(ACK)을 보내며 만약 패킷이 손실되면 재전송을 수행.
  • 데이터 전송이 끝나면 클라이언트가 서버에게 FIN(Finish) 패킷을 보내서 연결을 종료. 서버는 클라이언트의 FIN에 대한 ACK를 보내고 자신의 FIN을 보내서 연결을 완전히 종료합니다.
  • 데이터 전송의 신뢰성을 보장하고 순서를 보장하므로 웹 서버 이메일 파일 전송 등 데이터 신뢰성이 중요한 프로토콜에서 사용.

UDP(User Datagram Protocol)

  • 인터넷 프로토콜 스택에서 사용되는 전송 계층 프로토콜 중 하나로 데이터 전송의 신뢰성을 보장하지 않고 연결을 설정하지 않는 비연결 기반 프로토콜.
  • 패킷의 오버헤드가 적어서 TCP보다 빠른 속도를 가지고 있으나 데이터 전송의 신뢰성과 순서를 보장하지 않으므로 패킷이 순서대로 도착하지 않을 수 있고 중복 패킷이 전송될 수도 있으며 수신 측에서는 패킷을 재조립하고 확인 응답을 보내지 않음.
  • 연결 설정이 필요하지 않기 때문에 데이터 전송 속도가 빠르고 DNS(Domain Name System) DHCP(Dynamic Host Configuration Protocol) 스트리밍 등 데이터 전송 속도가 중요한 프로토콜에서 사용.

공통점

  • TCP와 UDP 모두 IP 프로토콜 위에서 동작하는 전송 계층 프로토콜.
  • 데이터를 쪼개서 전송하고 패킷 헤더에 정보를 추가하여 수신 측에서 데이터를 재조립.
  • 둘 다 포트 번호를 사용하여 송수신하는 어플리케이션을 구분.

차이점

  • TCP는 신뢰성 있는 데이터 전송을 보장하기 위해 연결 기반 프로토콜로 3-way handshake 방식을 통해 연결을 설정하고 데이터 전송 후 4-way handshake를 통해 연결을 해제합니다. 패킷 손실 시 재전송을 수행하며 패킷의 순서를 보장하고 중복 패킷을 제거합니다. 이러한 특징 때문에 FTP HTTP Telnet 등 데이터 신뢰성이 중요한 프로토콜에서 사용.
  • UDP는 비연결 기반 프로토콜로 데이터를 전송할 때 연결 설정과 같은 과정이 필요하지 않음. 패킷의 신뢰성을 보장하지 않으며 순서가 바뀔 수 있고 중복된 패킷도 전송될 수 있어 DNS DHCP 스트리밍 등 데이터 전송 속도가 중요한 프로토콜에서 사용.
profile
응애 나 아기 개발자

0개의 댓글