컨텐츠 바로가기

소켓 프로그래밍에서 적절한 버퍼의 크기

http://psjHello.egloos.com/103770

올려짐: 2003년10월20일 22:00주제: 소켓에서의 적정 전송량

--------------------------------------------------------------------------------

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


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

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

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

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

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

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

위로


흑기사
expert



가입: 2003년 2월 20일
올린 글: 315
위치: 비밀숙소
올려짐: 2003년10월21일 8:54주제:

--------------------------------------------------------------------------------

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

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

위로


김대원
novice



가입: 2003년 10월 20일
올린 글: 7

올려짐: 2003년10월21일 20:37주제:

--------------------------------------------------------------------------------

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

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

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

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

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

위로


bw001730
user



가입: 2003년 3월 27일
올린 글: 21

올려짐: 2003년10월22일 1:05주제:

--------------------------------------------------------------------------------

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


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

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

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

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

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

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

위로


김대원
novice



가입: 2003년 10월 20일
올린 글: 7

올려짐: 2003년10월22일 15:30주제:

--------------------------------------------------------------------------------

bw001730 님
답변 고맙습니다~

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

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

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


음 -_-;; 어려군요


덧글|신고