[네트워크] TCP / UDP

할거면제대로·2023년 6월 1일
0

네트워크

목록 보기
2/2
post-thumbnail

전송 계층

TCPUDP는 TCP/IP 4계층 중 전송계층에서 사용하는 프로토콜로서 TCP는 세그먼트, UDP는 데이터그램을 기반으로 데이터를 쪼개고 데이터가 오류없이 순서대로 전달되도록 도움을 주는 층입니다.

TCP(Transmission Control Protocol)

TCP의 특징

연결형 프로토콜

TCP는 가상회선 패킷 교환 방식을 통해서 데이터를 보내기 전에 데이터를 패킷 단위로 나누어 논리적 연결을 설정합니다.
그 다음 논리적 연결이 성립된 가상회선을 따라 패킷을 보내게 됩니다.
이 때 각 패킷에는 가상회선 식별번호(VCI. Virtual Circuit Identifier)가 포함되어 있어서 패킷들은 전송된 순서대로 도착하게 됩니다.
가상회선 방식은 경로를 설정할 때 한번만 수행이 됩니다.

  • 3 way-handshaking 과정으로 연결을 수립
  • 데이터 전송
  • 4 way-handshaking 과정으로 연결을 해제

신뢰성

연결 수립 과정이 존재하기 때문에 신뢰성이 높습니다.

재전송

송신 측은 일정 시간 동안 수신 측으로부터 확인 응답(ACK)을 받지 못하면, 패킷을 재전송합니다. 하지만 송신 측에서 재전송을 했는데 패킷이 소실된 경우가 아니라 버퍼에 남는 공간이 없는 경우라면 문제가 생깁니다.
그래서 이 문제를 해결하기 위해 수신 측은 확인 응답(ACK)을 보내면서 남은 버퍼의 크기도 함께 보내줍니다.

흐름제어

수신측이 송신 측보다 데이터 처리 속도가 빠르다면 문제가 없지만, 송신 측의 속도가 빠를 경우 문제가 생깁니다.
수신 측에서 제한된 저장 용량을 초과한 이후에 도착하는 패킷은 손실패킷으로 취급되며 그에 따라 추가 패킷 전송이 발생합니다.
흐름 제어는 위와 같이 송신 측과 수신 측의 TCP 버퍼 크기 차이로 인해 생기는 데이터 처리 속도 차이를 해결하기 위한 방법입니다.

tcp 버퍼 : 송신 측은 버퍼에 tcp 세그먼트를 보관한 후 순차적으로 전송하고, 수신 측은 도착한 tcp세그먼트를 애플리케이션이 읽을 때까지 버퍼에 보관합니다.

혼잡제어

데이터의 양이 라우터가 처리할 수 있는 양을 초과하면 초과된 데이터는 라우터가 처리하지 못합니다.
이 때 처리하지 못한 데이터는 손실 데이터로 간주되고 계속 재전송하여 네트워크를 혼잡하게 합니다.
이런 상황은 송신 측의 전송 속도를 적절히 조절하여 예방할 수 있습니다.

흐름제어와 혼잡제어 비교
흐름제어 : 호스트와 호스트 간의 데이터 처리를 효율적으로 하기 위한 기법, end to end
혼잡제어 : 호스트와 네트워크 상의 데이터 처리를 효율적으로 하기 위한 기법

체크섬

체크섬을 통해 무결성을 평가합니다. 즉, 송신된 데이터의 체크섬과 수신된 데이터의 체크섬 값을 비교해서 올바르게 왔는지 확인합니다.

1:1 통신

TCP는 데이터 통신 전에 송신 측과 수신 측의 세션을 설정해야 하고 이를 위해 수신 측의 주소와 포트 번호를 명시적으로 지정해야합니다. 멀티캐스팅과 브로드캐스팅은 여러 대상에게 동시에 데이터를 전송하기 때문에 1대1 통신을 하는 TCP와는 적합하지 않고 유니캐스트만 지원합니다.

헤더

20바이트에서 60바이트의 가변적인 헤더를 가지고 있습니다.

UDP(User Datagram Protocol)

UDP 특징

비연결형 프로토콜

UDP는 데이터그램 패킷 교환 방식을 통해서 데이터를 전송합니다.
데이터그램 패킷 교환 방식은 데이터를 전송하기 전에 논리적 연결이 설정되어 있지 않으며 패킷이 독립적으로 전송이 됩니다.
패킷을 수신한 라우터는 최적의 경로를 선택하여 패킷을 전송하는데 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있습니다.
그렇기 때문에 송신 측에서 전송한 패킷의 순서와 수신 측에서 도착한 패킷의 순서가 다를 수 있습니다.
가상회선 방식과 다르게 패킷마다 라우터가 경로를 선택하게 됩니다.

신뢰성 낮음

데이터를 보내는 작업만 하기 때문에 신뢰성은 낮습니다.

데이터 수신 여부 확인 x

데이터를 보내는 작업만 수행하기 때문에 데이터 수신 여부를 확인하지 않습니다.

속도가 빠름

연결 수립이나 해제의 과정이 없기 때문에 TCP에 비해서 속도가 빠릅니다.

1:1 & 1:N & N:M 통신이 가능

데이터를 보내는 작업만 수행하기 때문에 다대일 통신까지 가능합니다.
즉 멀티캐스팅과 브로드캐스팅을 지원합니다.

헤더

8바이트로 고정적인 헤더를 가지고 있습니다.

TCP와 UDP 비교

그림으로 비교

TCP는 송신측과 수신측이 서로 소통하면서 데이터를 받았는지 확인하면서 보냅니다.
반면에 UDP는 수신측과 소통하지 않고 송신측에서 데이터를 보내기만 합니다.

표로 비교

TCPUDP
연결 방식연결 지향형비연결 지향형
패킷 교환 방식가상 회선 방식데이터그램 방식
전송 순서 보장OX
수신 여부 확인OX
통신 방식1:1 통신만 가능1:1 & 1:N N:M 통신 모두 가능
신뢰성높음낮음
속도느림빠름
오류검사재전송, 체크섬체크섬
헤더 길이20~60 바이트로 가변적8바이트로 고정적

참고
https://jsonsang2.tistory.com/17
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4#%EA%B7%B8%EB%A6%BC%EC%9C%BC%EB%A1%9C-%EB%B9%84%EA%B5%90%ED%95%98%EB%8A%94-tcp-vs-udp
https://mangkyu.tistory.com/15
https://dev-coco.tistory.com/144#head3
https://coding-factory.tistory.com/614
https://woovictory.github.io/2018/12/28/Network-Packet-Switching-Method/

0개의 댓글