네트워크/개념

Network - TCP / UDP의 개념과 특징, 차이점

bok01 2022. 4. 18. 14:55
728x90

전송 계층에서 사용되는 프로토콜 ( TCP / UDP )

 

-> TCP와 UDP는 OSI 표준모델과 TCP/IP 모델의 전송계층에서 사용되는 프로토콜

  • TCP와 UDP는 포트 번호를 이용하여 주소를 지정하는것과 데이터 오류검사를 위한 체크섬 존재하는 두가지 공통점을 가지고 있다
  • 정확성(TCP)을 추구할지 신속성(UDP)을 추구할지를 구분하여 나뉜다.
    1. 데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 ‘TCP(Transmission Control Protocol)’를 사용
      • TCP는 통신할 컴퓨터끼리 ‘보냈습니다’, ‘도착했습니다’라고 서로 확인 메시지를 보내면서 데이터를 주고받음으로써 통신의 신뢰성을 높인다.
      • 웹이나 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스
    2. 데이터의 신뢰성은 제쳐두고 어쨌든 빨리 보내고 싶을 때는 ‘UDP(User Datagram Protocol)’를 사용
      • UDP는 데이터를 보내면 그것으로 끝이므로 신뢰성은 없지만 확인 응답과 같은 절차를 생략할 수 있으므로 통신의 신속성을 높인다.
      • VoIP(Voice over IP)나 시간 동기, 이름 해결 등과 같이 무엇보다 속도를 필요로 하는 서비스

포트 번호로 서비스를 식별

  • ‘0~1023’은 ‘잘 알려진 포트(well-known port)’ : 웹 서버나 메일 서버 등과 같이 일반적인 서버 소프트웨어가 클라이언트의 서비스 요청을 대기할 때 사용
  • ‘1024~49151’은 ‘등록된 포트(registered port)’ : 제조업체의 독자적인 서버 소프트웨어가 클라이언트의 서비스 요청을 대기할 때 사용
  • ‘49152~65535’는 ‘동적 포트(dynamic port)’ : 서버가 클라이언트를 식별하기 위해 사용

TCP의 개념과 특징

->TCP(Trasmission Control Protocol)는 연결 지향적 프로토콜

*연결 지향적 프로토콜 : 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미

  1. 클라이언트가 연결 요청(SYN 데이터 전송)을 하고,
  2. 서버가 연결을 수락하면 통신 선로가 고정되고,
  3. 모든 데이터는 고정된 통신 선로를 통해서 순차적으로 전달

=> 따라서 TCP는 데이터를 정확하고 안정적으로 전달

  • TCP는 호스트간 신뢰성 있는 데이터 전달과 흐름제어를 한다.
    • 신뢰성 있는 데이터의 전송을 위해 확인작업
  1. TCP는 패킷을 성공적으로 전송하면(ACK) 라는 신호를 날리고 
  2. 만약에 ACK 신호가 제 시간에 도착하지 않으면 Timeout이 발생하여 패킷 손실이 발생한 패킷을 다시 전송
  3. TCP는 이렇게 데이터를 송신할때마다 확인 응답을 주고받는 절차가 있으므로 통신의 신뢰성이 올라간다.

 

TCP의 단점

  • 데이터로 보내기 전에 반드시 연결이 형성되어야함.
  • 1 : 1 통신만 가능함.
  • 고정된 통신 선로가 최단선(네트워크 길이)이 아닐경우 상대적으로 UDP보다 데이터 전송속도가 느림.

 

TCP의 특징

  1. 연결형 (connnection-oriented) 서비스로 연결이 성공해야 통신이 가능
  2. 데이터의 경계를 구분하지 않는다. (바이트 스트림 서비스)
  3. 데이터의 전송 순서를 보장 (데이터의 순서 유지를 위해 각 바이트마다 번호를 부여)
  4. 신뢰성있는 데이터를 전송 (Sequence Number, Ack Number를 통한 신뢰성 보장)
  5. 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(패킷 수가 과도하게 증가하는 현상 방지)
  6. 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
  7. 전이중(Full-Duplex), 점대점(Point to Point) 서비스
  8. UDP보다 전송속도가 느리다.

 

3 way handshake 방식 (SYN, ACK)

  • TCP 통신을 위한 네트워크 연결은 3 way handshake 이라는 방식으로 연결

-> 3 way handshake 방식은 서로의 통신을 위한 관문(port)을 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결이 되는 것을 뜻한다.(이 과정에서 가장 많은 시간이 소요되어 UDP방식보다 속도가 느려지는 주요 원인으로 지목됩니다.)

 

연결 과정

  1. Client에서 Server에 연결 요청을 하기위해 SYN 데이터를 보낸다.
  2. Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경
  3. 그리고 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.
  4. Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK 를 전송
  5. ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다. 

위와 같이 3번의 통신이 정상적으로 이루어지면, 서로의 포트가 ESTABLISHED 되면서 연결이 된다.

 

TCP state ( netstat 명령어를 통해 확인 가능 )

  • LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
  • SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
  • SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태
  • ESTABLISHED : 3 way-handshaking 이 완료된 후 서로 연결된 상태
  • FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
  • TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어두고 있는 상태
  • CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태 
  • CLOSED : 완전히 종료

 


UDP의 개념과 특징

-> UDP(User Datagram Protocol)는 전송계층의 비연결 지향적 프로토콜

*비연결 지향적 : 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식을 의미

  • 연결 과정이 없기 때문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어짐
  • 발신자가 데이터 패킷을 순차적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달 될 수 있다
    • 먼저 보낸 패킷이 느린 선로를 통해 전송될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있으며 최악의 경우 잘못된 선로로 전송되어 유실 
      • 이럴 경우 TCP와는 다르게 UDP는 중간에 패킷이 유실이나 변조가 되어도 재전송을 하지 않음

 

UDP의 단점

  • 데이터의 신뢰성이 없음
  • 의미있는 서버를 구축하기위해서는 일일이 패킷을 관리해주어야 함

 

UDP의 특징

  • 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공
  • 데이터 경계를 구분한다. (데이터그램(datagram) 서비스)
  • 정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
  • 신뢰성 없는 데이터를 전송한다. (데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.
  • 패킷관리가 필요
  • 패킷 오버헤드가 적어 네트워크 부하가 감소되는 장점.
  • 상대적으로 TCP보다 전송속도가 빠르다.

 


TCP / UDP 비교 

 

1. 공통점

  • 포트 번호를 이용하여 주소를 지정
  • 데이터 오류 검사를 위한 체크섬 존재

 

2. 차이점

 

  TCP UDP
연결방식 연결형 서비스  비 연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서 바뀔 수 있음
수신 여부 확인 수신 여부를 확인 수신 여부를 확인하지 않음
통신 방식 1:1 통신만 가능 1:1 / 1:N / N:N 통신 모두 가능
신뢰성 높음  낮음
속도 느림 빠름
반응형