이더넷의 CSMA/CA 변형은 반복적인 충돌로 인한 과도한 전송 실패를 처리합니다.현재 프레임을 버리고 재전송을 위해 상위 레이어에 의존합니다.:
16번의 시도 후에 Bilibili는 충돌 카운터를 재설정하여 다시 더욱 공격적으로 경쟁할 수 있게 됩니다. 그러나 전송하려는 프레임도 삭제하므로 소프트웨어가 전송을 위해 해당 프레임을 다시 대기열에 넣어야 합니다.
최신(예: 전환형) 이더넷에서는 CSMA/CA가 더 이상 사용되지 않으며 소스에 언급된 채널 캡처 효과가 발생하지 않는다는 것을 알고 있지만 이 경우 Linux 커널을 통해 달성된 네트워크 계층 분리 및 상호 작용을 이해하려고 노력하고 있습니다. 실행.
Linux에서는 이러한 재전송이 어느 계층에서 처리됩니까? IP 계층에서 수행됩니까, 아니면 이더넷 프레임이 삭제되어 네트워크 계층 패킷과 TCP 세그먼트 또는 UDP 데이터그램이 삭제되는 원인이 됩니까?
두 방법의 차이점은 두 번째 경우 과도한 재시도가 혼잡으로 해석되어 TCP 혼잡 창 크기가 줄어드는 것으로 보입니다. 이런 일이 발생합니까, 아니면 삭제된 프레임이 TCP에 투명합니까?
답변1
IP는 전달을 보장하지 않으며 실제로 IP 위에 구축된 많은 프로토콜(아마도 가장 눈에 띄는 UDP)은 그러한 보장을 제공하지 않습니다.
TCP/IP의 배달 보장은 TCP에 의해 처리됩니다.TCP는 배달 보장 프로토콜에서 작동할 수 있지만 설계된 방식에서는 이를 요구하지 않습니다. 기본 프로토콜이 전달을 보장하지 않으면 TCP가 전달을 보장합니다.
따라서 TCP/IP의 정상적인 조건에서 이더넷 프레임이 손실되면 IP 패킷이 손실되거나 손상되고, 이는 다시 손실되거나 손상된 TCP 또는 UDP 패킷으로 변환됩니다. TCP(또는 배달 보장을 제공하는 다른 프로토콜)의 경우 TCP는 실패를 감지하고 전송을 다시 시도하는 역할을 담당합니다.
이는 프로토콜 자체를 포함하므로 운영 체제나 IP 스택 구현과는 아무런 관련이 없습니다. 하위 수준(IP 이하) 전송 실패를 감지하지 못하는 모든 TCP 구현은 사양을 위반합니다.
또한 완전한 충돌은 패킷이 손상되거나 손상되는 한 가지 방법일 뿐이며 TCP는 이를 방지할 수 없으며 감지(및 대응)만 할 수 있습니다. IP는 이더넷이 아닌 통신사에서도 작동합니다.RFC 1149예를 들어.