통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이 
· LiveSeminar  · LiveConference
Visual C++ 포럼마을 입니다.
  마을등급 Visual C++   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 나성훈 주민 33595 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리
 일정관리

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 네트워크 패킷사이즈에 대해서...  | WinSock 2009-12-17 오후 12:10:21
최종원 (budle78)  최종원님께 메시지 보내기최종원님을 내 주소록에 추가합니다.최종원님의 개인게시판 가기 번호: 810295 추천:0  / 읽음:1,046

예전에 서버와 클라이언트간 네트워크 전송에서 패킷사이즈가 64byte이상이어야 좋다고 들었습니다.

 

일단 이 이야기가 맞는건지도 잘 모르겠고..

 

사실이라면 이와 관련한  문서가.. 어디에 있는지 좀 알려주세요.

 

그리고 만약 이 경우가 사실이라면 64byte이하의 패킷은 64byte를 아무값이나 넣어 만든다음  보내야 되는건가요?

 

 

이 글에 답변 등록하기
[채택답변] gilgil.net
0
2013-07-08 오후 8:30:16
질문자 인사 : 정말 대단해요. 진정한 고수시군요!
  이경문 (gilgil)  이경문님께 메시지 보내기이경문님을 내 주소록에 추가합니다.이경문님의 개인게시판 가기 번호: 810315  

음... 자세한 설명을 드리겠습니다.

 

send API를 써서 TCP 데이터 1바이트를 송신한다고 가정합니다.

TCP 스택으로 내려와 20바이트가 붙고

IP(IPv4로 가정하겠음) 스택으로 내려와 20바이트가 더 붙습니다.

이놈을 랜카드로 쏘려고 합니다(OS가 보내는 거죠).

우리가 사용하는 대부분의 네트워크 환경은 Ethernet입니다(무선랜도 802.X 기반이고 전부 Ethernet 호환 프로토콜임).

 

Ethernet (14) + IP(20) + TCP(20) + TCPData(1)

 

다 합쳐 봤자 55바이트입니다.

그런데 55바이트는 이더넷 환경으로 전송이 안됩니다.

이더넷에서는 최소 크기가 64옥텟이기 때문이죠.

그래서 어떻게 해서든지 64바이트를 꾹꾹 다 채워서 보내지게 됩니다.

즉 SW 차원에서 55바이트를 보낸다 하더라고

물리적으로는 CRC, Padding을 통해서 64옥텟으로 보내어 지게 됩니다.

이게 바로 Ethernet 이라는 겁니다.

 

반면에 SLIP이나 PPPOE는 다릅니다(정확한 전송 방식은 저도 잘 모름).

 

또한 만약에 어려분 PC에서 나간 패킷이 KT망을 통해 외국에 나가게 되는 경우

ATM 코어망을 거쳐 가는 경우가 있는데

ATM 환경은 Ethrnet과는 전혀 다릅니다.

Ethernet 하나의 프레임이 몇개로 쪼개어 져서 ATM망으로 나가게 되고

다시 여러개의 ATM 프레임이 다시 합쳐 져서 Ethenet망으로 나가게 됩니다.

(프로그래머는 모르는 구간에서 프레임은 변신/합체를 자주 합니다)

 

ps :

nagle옵션은 TCP 상에서 하나의 MSS가 다 채워지지 않아도

즉각 보내어 질 것이냐, 말 것이냐를 결정하는데 사용되어 지는 옵션이죠.

최소크기 64바이트와는 다른 얘기입니다.

총쏘는 게임과 같이 실시간을 요구하는 데에서는 고려를 해야 겠죠.

 

네트워크를 하다 보면 "패킷"이라는 말보다가는 "프레임"이라는 말을 사용합니다.

라우터 입장에서는 TCP 패킷이든지 UDP 패킷이든지 상관하지 않고 그냥 하나의 프레임이라고 봅니다.

 

 

>> 예전에 서버와 클라이언트간 네트워크 전송에서 패킷사이즈가 64byte이상이어야 좋다고 들었습니다

 

좋고 나쁘고를 얘기했다면, 얘기한 사람이 잘못 알고 얘기를 한 것입니다.

효과적인 네트워크 전송을 위해서 최소 전송 단위가 64바이트임을 프로그래머가 고려해야 할 사항은 없습니다.

단, TCP MSS가 보통 1460 바이트이기 때문에 한번에 보내는 TCP 데이터량을 고려할 필요는 있겠죠.

허나 요즘은 고대역 TCP 스트리밍을 하기도 해서 이 또한 별로 중요한 사안은 아닙니다.

 

FTP 전송을 위해서 1024 바이트 단위로 잘라서 전송하는 똑같은 소스 코드가

예전 구닥다리 모뎀환경과 요즘의 고대역폭 환경에서 adaptive하게 작동할 수 있는 것(환경에 맞는 최대한의 전송을 보장)은

하위 Layer(TCP) 스택이 다 알아서 해 주기 때문입니다.

 [답변]re : Lyn 2009-12-17 오후 12:12:12
허준행 (TohnoKanna)  허준행님께 메시지 보내기허준행님을 내 주소록에 추가합니다.허준행님의 개인게시판 가기 번호: 810296 추천:0  
궂이 따지자면...

최대한 작은게 좋은데요 =_=a 64byte 이상이어야 좋다는 얘기는 어디서나온건지 ㅡ.ㅡ

어차피 쪼그만거 여러개 보내면 합쳐져서 날라갑니다.
이 글에 답변 등록하기
 [답변]ethernet 2009-12-17 오후 12:14:54
이경문 (gilgil)  이경문님께 메시지 보내기이경문님을 내 주소록에 추가합니다.이경문님의 개인게시판 가기 번호: 810298 추천:0  

http://en.wikipedia.org/wiki/Ethernet

ethernet, pppoe, slip, atm, frame relay, ...
다 다릅니다.
요즘에는 워낙에 ethernet이 유명해 져서 "ethernet인 환경에서"라는 말을 빼고 얘기를 하곤 하죠.

이 글에 답변 등록하기
         [답변]... 2009-12-17 오후 12:36:01
진정한 (omlnet)  진정한님께 메시지 보내기진정한님을 내 주소록에 추가합니다.진정한님의 개인게시판 가기 번호: 810301 추천:0  

대량 전송에는 언급하지 않는 말일겁니다.

 

이 값이 나온 이유는 페킷을 전송률을 극대화하기위한 값입니다.

 

만약 작안 페킷을 전송하려고 하면 랜이 혹사 당하게 되죠...

 

그래서 어는정더 버프레 쌓아 두었다 한꺼번에 전송을 하게 합니다.

 

그래서 일전 시간 또는 일정 버퍼를 체울때 까지는 대기를 하도록 하고 잇죠 ...

 

그때 최소량이 64 바이트라는거죠....

 

물론 설정을 바꿔 주면 64 보다 작은 페킷도 바로바로 전송이 가능하지만요...

 

일반적인 설정이 그렇게 되는거죠 ..

 

 

이 글에 답변 등록하기
                 [답변]gilgil.net 2009-12-17 오후 1:19:55
이경문 (gilgil)  이경문님께 메시지 보내기이경문님을 내 주소록에 추가합니다.이경문님의 개인게시판 가기 번호: 810310 추천:0  

http://www.ceenet.org/workshops/lecture98/george/techpre/tsld044.htm

 

버퍼링 얘기는 무엇인지요?

이더넷 환경에의 최소 전송 단위가 64옥텟이라는 것은

프로그래머(개발자)가 알 필요도 없고, 그것을 control할 수도 없는 하위 Layer(L2) 개념입니다.

IPv4, IPv6, TCP, UDP, 이 상위에서 프로그램으로 처리할 수 있는 개념이 아닙니다.

이 글에 답변 등록하기
                         [답변]re : Lyn 2009-12-17 오후 1:23:28
허준행 (TohnoKanna)  허준행님께 메시지 보내기허준행님을 내 주소록에 추가합니다.허준행님의 개인게시판 가기 번호: 810312 추천:0  
아마 nagle 을 말하는게 아닐지..
이 글에 답변 등록하기
                                 [답변]gilgil.net 2009-12-17 오후 1:37:33
이경문 (gilgil)  이경문님께 메시지 보내기이경문님을 내 주소록에 추가합니다.이경문님의 개인게시판 가기 번호: 810315 추천:0  

음... 자세한 설명을 드리겠습니다.

 

send API를 써서 TCP 데이터 1바이트를 송신한다고 가정합니다.

TCP 스택으로 내려와 20바이트가 붙고

IP(IPv4로 가정하겠음) 스택으로 내려와 20바이트가 더 붙습니다.

이놈을 랜카드로 쏘려고 합니다(OS가 보내는 거죠).

우리가 사용하는 대부분의 네트워크 환경은 Ethernet입니다(무선랜도 802.X 기반이고 전부 Ethernet 호환 프로토콜임).

 

Ethernet (14) + IP(20) + TCP(20) + TCPData(1)

 

다 합쳐 봤자 55바이트입니다.

그런데 55바이트는 이더넷 환경으로 전송이 안됩니다.

이더넷에서는 최소 크기가 64옥텟이기 때문이죠.

그래서 어떻게 해서든지 64바이트를 꾹꾹 다 채워서 보내지게 됩니다.

즉 SW 차원에서 55바이트를 보낸다 하더라고

물리적으로는 CRC, Padding을 통해서 64옥텟으로 보내어 지게 됩니다.

이게 바로 Ethernet 이라는 겁니다.

 

반면에 SLIP이나 PPPOE는 다릅니다(정확한 전송 방식은 저도 잘 모름).

 

또한 만약에 어려분 PC에서 나간 패킷이 KT망을 통해 외국에 나가게 되는 경우

ATM 코어망을 거쳐 가는 경우가 있는데

ATM 환경은 Ethrnet과는 전혀 다릅니다.

Ethernet 하나의 프레임이 몇개로 쪼개어 져서 ATM망으로 나가게 되고

다시 여러개의 ATM 프레임이 다시 합쳐 져서 Ethenet망으로 나가게 됩니다.

(프로그래머는 모르는 구간에서 프레임은 변신/합체를 자주 합니다)

 

ps :

nagle옵션은 TCP 상에서 하나의 MSS가 다 채워지지 않아도

즉각 보내어 질 것이냐, 말 것이냐를 결정하는데 사용되어 지는 옵션이죠.

최소크기 64바이트와는 다른 얘기입니다.

총쏘는 게임과 같이 실시간을 요구하는 데에서는 고려를 해야 겠죠.

 

네트워크를 하다 보면 "패킷"이라는 말보다가는 "프레임"이라는 말을 사용합니다.

라우터 입장에서는 TCP 패킷이든지 UDP 패킷이든지 상관하지 않고 그냥 하나의 프레임이라고 봅니다.

 

 

>> 예전에 서버와 클라이언트간 네트워크 전송에서 패킷사이즈가 64byte이상이어야 좋다고 들었습니다

 

좋고 나쁘고를 얘기했다면, 얘기한 사람이 잘못 알고 얘기를 한 것입니다.

효과적인 네트워크 전송을 위해서 최소 전송 단위가 64바이트임을 프로그래머가 고려해야 할 사항은 없습니다.

단, TCP MSS가 보통 1460 바이트이기 때문에 한번에 보내는 TCP 데이터량을 고려할 필요는 있겠죠.

허나 요즘은 고대역 TCP 스트리밍을 하기도 해서 이 또한 별로 중요한 사안은 아닙니다.

 

FTP 전송을 위해서 1024 바이트 단위로 잘라서 전송하는 똑같은 소스 코드가

예전 구닥다리 모뎀환경과 요즘의 고대역폭 환경에서 adaptive하게 작동할 수 있는 것(환경에 맞는 최대한의 전송을 보장)은

하위 Layer(TCP) 스택이 다 알아서 해 주기 때문입니다.

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2010-서울강남-00026호
서울시 강남구 논현동 87-2 미래빌딩 5층 / TEL. 02_6719_6200 / FAX. 02-6499-1910 / 대표: 홍영준
Copyright ⓒ (주) 데브피아. All rights reserved.