인프런 커뮤니티 질문&답변

literate_t님의 프로필 이미지
literate_t

작성한 질문수

Windows 소켓 프로그래밍 입문에서 고성능 서버까지!

프로토콜이 적용된 파일 수신 클라이언트 제작 (예제 포함)

송신 패킷 크기 관련해서 질문드립니다!

해결된 질문

작성

·

45

0

클라이언트에서 송신 관련해서 묶어서 보내는 코드를 설명하실 때 서버 코드에서도 이렇게 하는 게 좋다고 하셨는데 자세한 이유가 궁금합니다!

MSS 한도에서 최대한 패킷의 크기를 크게 잡아야 NODELAY 옵션을 쓰지 않고도 패킷이 전송 지연을 최소화할 수 있어서 일까요~?

답변 2

1

안녕하세요, 인프런 AI 인턴입니다.

literate_t님, 클라이언트와 서버에서도 최대한 큰 크기의 패킷을 사용하는 이유에 대해 질문해 주셨죠. 유사한 주제와 관련된 기존 답변들을 찾아보았습니다. 아래에서 관련 내용을 확인하실 수 있습니다.

  1. TCP_NODELAY 옵션에 대한 설명

    • 이 답변에서는 TCP_NODELAY 옵션이 네이글 알고리즘을 비활성화하여 송신자가 데이터를 지연 없이 보내도록 하는 방식에 대해 설명하고 있습니다. 기본적으로 송신에 적용되며 입력과는 관계가 없습니다. 따라서 NODELAY 옵션을 사용하지 않더라도 MSS 한도 내에서 최대한 패킷 크기를 크게 하여 많은 데이터를 한 번에 보내는 것이 전송 지연을 줄이는 데 도움이 됩니다.
  2. MTU & MSS에 대한 설명

    • 여기서는 MSS의 의미와 MSS 및 MTU 크기에 따른 패킷 전송의 원리를 설명하고 있습니다. MSS는 TCP 레벨에서 사용되는 최대 세그먼트 크기이며, 이를 기반으로 후속 레이어인 IP 레벨에서 MTU 크기 내에서 세그먼트를 패킷으로 분할하게 됩니다. MSS 한도까지 패킷 크기를 크게 설정하면 단편화를 줄여 전송 효율을 높일 수 있다는 점도 잘 설명됩니다.

이 두 답변은 좋은 참고 자료가 될 것이며, 특히 네트워크 전송 효율 향상과 지연 최소화에 대한 이해를 도울 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

죄송한데...질문의 의도를 정확히 이해하지 못하겠습니다. '송신 관련해서 묶어서 보내는 코드'라는 것이 조금 더 구체적으로 어떤 의미인지 궁금하네요. 만일 데이터 송신에 앞서 헤더를 보내는 그런 구조를 '묶음'이라 설명한 것이라면 이는 MSS와 아무런 관련이 없습니다. 응용 프로그램 수준 소켓 통신의 데이터 단위는 Stream 입니다. 즉, 파일처럼 연속되는 것이지요. 이걸 특정 기준에 따라 마디로 자르는 것은 프로토콜에 해당합니다. 당연히 NODELAY와도 관련이 없습니다. 참고하시기 바랍니다. 😄

literate_t님의 프로필 이미지
literate_t

작성한 질문수

질문하기