소켓에서의 적정 전송량

김대원의 이미지

소켓에서의 적정 전송량 이라는 부분에 대해 설명 부탁합니다.

참고한 글 : TCP SOCKET 에서 적정 전송량은?...
http://bbs.kldp.org/viewtopic.php?t=23760&highlight=tcp

>1024가 좋습니다.
>보통 패킷사이즈를 정할때는 MTU ,즉, 하드웨어가 한번에 보낼수 있는 최대 크기,
>를 참고하게 됩니다. Ethernet의 경우 1500바이트이고, TCP헤더, IP헤더, Ethernet헤더등을 고려하면 1024가 정답이 되는 경우가 많습니다.
>MTU보다 커지거나, 너무 작으면, 자르거나 붙여야 하는 오버헤드가 생기는데,
>이를 최소화한다는 생각이 보통은 그 기준이 됩니다

위에 참고한 글이 잘 이해가 안되서 그럽니다.
응용계층에서 보내는 데이터는 크기에 상관없이 버퍼링되고
패킷을 만든는것은 ip 레이어의 일 아닌가요?

버퍼에서 MSS 만큼 꺼내서 사용되는게 아닌가요?

프로그래머가 저렇게 크기를 지정해줘야 하나요?

미리 감사드립니다.
.. 언제쯤 고수가 될까나:D

Necromancer의 이미지

어플리케이션 간에 전송하는데는 아무 문제 없지만,
패킷 분할, 합성 과정에서 OS 네트웍 처리부나 드라이버쪽에서 오버헤드가 걸리죠.

거기다 작은 패킷 여러개보다 큰 패킷 하나가 효율적이죠. 작은 패킷은 패킷마다
전부다 헤더가 붙어야 되니까. 물론 꼭 적은양의 데이터를 보내야 할 때는 어쩔
수 없지만, 큰 패킷 보낼때는 가급적이면 거기에 맞춰주라는

Written By the Black Knight of Destruction

김대원의 이미지

답변주셔서 고맙습니다~
답해주신 내용을 아직도 이해를 못해서 요리저리 찾다가
이렇게 늦었네요;;

그렇다고 답을 얻은것도 아닙니다. -_-;;

제가 아직 네트웍 i/o 처리부에 대해 개념을 못잡고
있는게 아닌가 합니다.

- tcp 에서의 윈도우크기 : 요것도 버퍼(send/rec 용 두개)
- 소켓에서의 버퍼 : 요것도 버퍼

개념을 좀 잡고 다시 질문을 올려야 곘네요 ㅜ.ㅜ

bw001730의 이미지

생각해볼만한 내용으로는 두가지로 생각됩니다.

1. 애플리케이션 상의 버퍼
즉, 우리가 char buf[1024] ;
이런식으로 소켓 프로그래밍에 코딩하는거

2. 소켓의 송수신 버퍼, 커널의 버퍼입니다.

참고:
윈도우는 소켓의 송수신 버퍼에서 한마디로
여유 공간의 크기를 의미합니다.

송신윈도우 - 현재 내가 보낼수 있는 최대량(송신버퍼의 여유공간)
수신윈도우 - 현재 내가 수신할 수 있는 최대량 (수신버퍼의 여유공간)

참고로 한번에 내가 수신할 수 있는 최대 크기는
상대가 보낼수 있는 최대크기와 내가 수신할 수 있는 최대 크기중에서
더 작은 것이 선택됩니다.

송신할수 잇는 최대크기는
내가 송신할 수 있는 최대크기와 상대가 수신할 수 있는 최대크기중
더 작은것이 선택됩니다.
내가 많이 전송할 수 잇어도 상대가 수신버퍼가 부족해 수신못하면
안되니깐요
대충 이렇다네요..

김대원의 이미지

bw001730 님
답변 고맙습니다~

검색끝에 얻어낸 결과는 넘 충격(?) -_-;;
적이라 저 부분을 이해하기위해
어디서부터 손대야 할지 정말이지 난감하군요 ㅡㅜ

아래주소에 따르면
응용 -> 소켓 -> tcp -> 드라이버
요렇게 모든것이 영향을 준다는군요 ㅡㅜ

http://www-903.ibm.com/kr/techinfo/pseries/aixnl126.html

음 -_-;; 어려군요

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.