UDP 패킷도 사이즈가 중간에 짤릴수 있나요?

trymp의 이미지

가령 PC A --> PC B 로 UDP 패킷을 보낸다고 할때

A에서 400byte(1개) 를 보냈는데 B에서 recvfrom() 했는데 150byte 만 읽어지는 경우가 있나요?

제가 테스트할때는 이런 경우를 못 봐서요

이런 경우가 발생할수 있는지 알려주시면 감사하겠습니다.

라스코니의 이미지

MTU 보다 작은 것은 짤리지 않을 것 같은데요.
chatGPT에 물어보시는 것이 ^^

라스코니의 이미지

아래는 chatGPT 답변입니다.

Q) Can a UDP packet be shortened as original length during transmission?
A) No, it is not possible to shorten a UDP (User Datagram Protocol) packet's original length during transmission. UDP is a connectionless protocol that does not provide any mechanism for retransmission of lost or corrupted packets or flow control to regulate the rate at which packets are sent. As a result, UDP packets are sent as-is and cannot be modified during transmission.

However, it is possible for UDP packets to be fragmented during transmission if they are larger than the maximum transmission unit (MTU) size of the network. In this case, the UDP packet is broken up into smaller fragments that can be transmitted across the network and reassembled at the receiving end. But this fragmentation process does not involve shortening the original length of the packet.

익명 사용자의 이미지

질문을 잘못 던지신 것 같습니다.

Q) Can a UDP packet be truncated during the transmission?

A) Yes, a UDP (User Datagram Protocol) packet can be truncated during transmission.

UDP is a connectionless protocol that doesn't provide any guarantees about delivery or order of packets. It also doesn't have any built-in mechanisms for flow control or error correction. As a result, UDP packets can be lost or corrupted during transmission, and there's no way to detect or recover from these errors.

When a UDP packet is truncated, it means that some portion of the packet's data has been lost or cut off. This can happen if the packet is too large to fit within the Maximum Transmission Unit (MTU) of a particular network segment, or if there's congestion or other network issues that cause data to be dropped.

When a receiving application receives a truncated UDP packet, it may not be able to process the incomplete data and may have to discard it. In some cases, the receiving application may be able to detect that the packet is truncated and request a retransmission from the sender. However, this is not a built-in feature of UDP, and it would need to be implemented at the application layer.

질문자님의 상황은 여기에 더 맞는 것 같습니다.

익명 사용자의 이미지


UDP 패킷 손실 가능성

Model: GPT-4

Kiyoung Park
UDP 패킷도 사이즈가 중간에 짤릴수 있나요? 가령 PC A --> PC B 로 UDP 패킷을 보낸다고 할때

A에서 400byte(1개) 를 보냈는데 B에서 recvfrom() 했는데 150byte 만 읽어지는 경우가 있나요?

제가 테스트할때는 이런 경우를 못 봐서요

이런 경우가 발생할수 있는지 알려주시면 감사하겠습니다.

네, UDP 패킷은 전송 중에 손실되거나 순서가 뒤바뀌거나 중간에 잘릴 수 있습니다. 하지만, 패킷의 일부분이 손실되는 경우는 드물고, 대부분 전체 패킷이 손실되거나 무결성이 손상되는 경우가 일반적입니다.

그러나, recvfrom() 함수를 사용하여 데이터를 수신할 때, 지정한 버퍼 크기보다 패킷이 클 경우 일부 데이터만 읽힐 수 있습니다. 예를 들어, A에서 400바이트를 보내고 B에서 recvfrom() 함수를 사용하여 150바이트의 버퍼로 데이터를 수신하면, 150바이트만 읽히고 나머지 250바이트는 손실됩니다.

이런 경우를 피하려면, 수신측에서 충분한 크기의 버퍼를 사용하여 데이터를 받아야 합니다. 또한, TCP와 같은 연결형 프로토콜을 사용하여 데이터 전송의 신뢰성을 높일 수 있습니다. TCP는 데이터가 손실되거나 중간에 잘리는 것을 방지하기 위해 재전송 메커니즘과 순서 보장 기능을 제공합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.