[CS] - TCP/UDP

박진우·2022년 8월 9일
0

Computer Science

목록 보기
4/7
post-thumbnail

💡 TCP /UDP

앞서 " [CS] - 네트워크 " 포스팅에서 말했던 Transport layer(전송 계층)에서 사용하는 프로토콜인 목적지 장비까지 전송한 패킷 상위의 특정 응용 프로토콜에게 전달하는 것에 목적이 있습니다.

전송방식으로는 TCPUDP가 있으며,이 TCP,UDP 에 대해서 알아보려고 한다.

전송계층은 송신자 수신자 를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당한다. 그리고 데이터를 보내기 위해 사용하는 프로토콜이 있는데, 그 프로콜들이 바로 TCPUDP이다.




💡 TCP

◽ TCP(Transmission Control Protocol)

인터넷상에서 데이터 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

  • TCP는 인터넷에서 가장 흔하고, 많이 쓰이는 프로토콜 방식으로 일반적으로 TCP와 IP를 함께 사용하는데, IP 는 데이터의 배달을 처리하고 ,TCP패킷추적관리한다.
  • TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용.

  • TCP 또는 전송 제어 프로토콜은 TCP / IP 모델의 전송 계층에서 발견되는 연결 지향 프로토콜 이며, 통신을 시작하기 전에 원본 컴퓨터와 대상 컴퓨터 사이에 연결을 설정한다.



◽ TCP 특징

  • 연결형 서비스로 가상 회선 방식을 제공한다.

  • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.

  • 흐름 제어혼잡 제어.

  • 높은 신뢰성 을 보장해 신뢰성있는 데이터를 전송한다.

  • UDP보다 속도가 느리다.

  • 전이중(Full-Duplex), 점대점(Point to Point) 방식.




◽ 3-way / 4-way

  • 3-way

  • 연결 과정

  1. Client에서 Server에 연결 요청을 하기위해 SYN 데이터를 보낸다.

  2. Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다.
    그리고 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.

  3. Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK 를 전송한다.

  4. ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다.



  • 4-way

    1. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
    1. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)
    1. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
    1. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)
  • 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)

  • TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)




◽ TCP 서버의 특징

  • 서버소켓은 연결만을 담당하며, 연결지향이다.

    ➡ 연결지향이란말은 데이타를 전송하는 측과 데이타를 전송받는 측에서 전용의 데이타 전송 선로(Session) 을 만든다는 의미이다.

  • 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다형 서비스로 가상 회선 방식을 제공한다.

  • 서버와 클라이언트는 1대1로 연결된다.

  • 스트림 전송으로 전송 데이터의 크기무제한이다.

  • 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮다.

  • Streaming 서비스즉 실시간 전송불리하다.

    ➡ 손실된 경우 재전송 요청을 하므로 실시간 전송에 불리하다.



패킷(Packet)

인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 한다. 이 때 조각들을 패킷이라고 부른다.




💡 UDP

◽ UDP(User Datagram Protocol)

데이터를 데이터그램 단위로 처리하는 프로토콜

데이터그램 독립적인 관계 를 지니는 패킷이라는 뜻

비연결형 서비스를 지원하는 전송계층 프로토콜로써, 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호 OR 받는다는 신호 절차를 거치지 않고, 보내는 쪽에서 일방적 으로 데이터를 전달하는 통신 프로토콜이다.




◽ UDP 특징

  • 1. 비연결형 서비스 연결 없이 통신이 가능하며 데이터그램 방식 을 제공한다.

  • 2. 데이터 경계구분한다. [데이터그램(datagram) 서비스]

  • 3. 정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.

  • 4. 신뢰성 없데이터를 전송하며, 데이터 재전송 데이터 순서 유지 를 위한 작업을 하지 않는다.

  • 5. 패킷관리가 필요하다.

  • 6. 패킷 오버헤드가 적어 네트워크 부하감소되는 장점을 가진다.

  • 7. 상대적으로 TCP보다 전송속도가 빠르다.


단점신뢰성있는 데이터의 전송을 보장하지는 못한다. 따라서 TCP와 반대로 신뢰성보다는 연속성 이 중요한 서비스, 예를 들면 실시간 서비스(streaming) 에 자주 사용됩니다.



◽ UDP 서버의 특징

  • UDP에는 연결 자체가 없어서 서버 소켓 클라이언트 소켓 의 구분이 없다.

    	➡ 연결 대기 중인 서버로 실제 연결을 맺는 함수인 Connect 함수가 필요X
  • 소켓 대신 IP를 기반으로 데이터를 전송한다.

  • 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.

  • 데이터그램(메세지) 단위 로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.

  • 흐름제어(flow control) 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.

  • 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능, 속도가 중요시 되는 경우에 사용된다.



본 게시물에 포함된 내용은 https://mangkyu.tistory.com/15에 근거한 것임을 밝힙니다.

0개의 댓글