Computer Science/Network

[Network] TCP와 UDP

by Donghwan 2021. 8. 9.

TCP와 UDP는 OSI 표준모델과 TCP/IP 모델의 전송계층에서 사용되는 프로토콜입니다. 전송계층은 송신자(Client)와 수신자(Server)를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하는 계층입니다. 쉽게 말해 데이터의 전달을 담당한다고 생각하시면 됩니다. TCP와 UDP는 포트 번호를 이용하여 주소를 지정하는것과 데이터 오류검사를 위한 체크섬 존재하는 두가지 공통점을 가지고 있지만 정확성(TCP)을 추구할지 신속성(UDP)을 추구할지를 구분하여 나뉩니다.

데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 ‘TCP(Transmission Control Protocol)’를 사용합니다. TCP는 통신할 컴퓨터끼리 3-way-handshake라는 것을 통해 ‘보냈습니다’, ‘도착했습니다’라고 서로 확인 메시지를 보내면서 데이터를 주고받음으로써 통신의 신뢰성을 높입니다. 웹이나 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스는 TCP를 사용하고 있습니다.

그에 반해 데이터의 신뢰성은 제쳐두고 어쨌든 빨리 보내고 싶을 때는 ‘UDP(User Datagram Protocol)’를 사용합니다. UDP는 데이터를 보내면 그것으로 끝이므로 신뢰성은 없지만 확인 응답과 같은 절차를 생략할 수 있으므로 통신의 신속성을 높입니다. VoIP(Voice over IP)나 시간 동기, 이름 해결 등과 같이 무엇보다 속도를 필요로 하는 서비스는 UDP를 사용하고 있습니다. 

 

TCP ( 전송 제어 프로토콜 Transmission Control Protocol )

패킷안에 TCP 세그먼트라는 정보를 넣습니다.

출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등등을 넣어서 보냅니다.

특징

  • 연결지향적
  • 데이터 전달 보증을 합니다.
  • 순서를 보장합니다.
  • 신뢰할 수 있는 프로토콜이고 현재 대부분의 애플리케이션에서 TCP를 사용합니다.

 

1. 연결지향적 ( 3 way handshake - 가상연결 )

  1. 클라이언트에서 서버로 SYN를 보냅니다.
  2. 서버가 SYN을 받으면 SYN + ACK를 클라이언트로 보냅니다.
  3. 클라이언트가 SYN + ACK을 받으면 다시 ACK를 보냅니다.
  4. 데이터 전송

SYN은 접속 요청, ACK은 요청 수락입니다. 현재는 마지막 ACK와 함께 데이터 전송이 가능합니다.

 

2. 데이터 전달 보증

 

3. 순서보장

TCP 세그먼트의 정보(출발지 Port, 목적지 Port, 순서 등등)들을 종합하여 중간에 잘못된 순서나 데이터를 받으면 서버는 클라이언트에게 잘못온 순서부터 다시 보내달라고 요청합니다.

 

UDP ( 사용자 데이터그램 프로토콜 User Datagram Protocol )

특별한 기능이 없습니다.

데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠릅니다.

IP와 거의 동일하지만 PORT가 있어서 애플리케이션 구분과 메세지를 검증해주는 체크썸이 추가되어있습니다.


출처

728x90
반응형

'Computer Science > Network' 카테고리의 다른 글

[Network] URI ( Uniform Resource Identifier )  (0) 2021.08.09
[Network] DNS  (0) 2021.08.09
[Network] Port  (0) 2021.08.09
[Network] IP ( Internet Protocol )  (0) 2021.08.09
Http통신과 Socket통신  (0) 2020.09.08

댓글