안녕하세요 지금 졸업준비중인 대학원생입니당 <div><br></div> <div>논문실험때문에 TCP 소켓 프로그래밍 (고급? 수준인가..) 중인데 해결못한 부분이 있어서 질문올립니다 ㅠㅠㅠㅠ </div> <div><div><br></div> <div><br></div> <div>다름이 아니고 제가 Bandwidth estimation 을 위해서 소켓 프로그래밍 중에 TCP 정보를 얻어오는 방법을 구글링으로 찾아보니,</div> <div><br></div> <div><b>getsockopt(sockfd, IPPROTO_TCP, TCP_INFO, (void*)&info, &len)</b></div> <div><br></div> <div>을 쓰면 된다고 하더군요. <span style="font-size:9pt;line-height:1.5;">여기서 info는 struct tcp_info 형태의 구조체입니다.</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div> <div>struct tcp_info {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u8<span class="Apple-tab-span" style="white-space:pre;"> </span>tcpi_state;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u8<span class="Apple-tab-span" style="white-space:pre;"> </span>tcpi_ca_state;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u8<span class="Apple-tab-span" style="white-space:pre;"> </span>tcpi_retransmits;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u8<span class="Apple-tab-span" style="white-space:pre;"> </span>tcpi_probes;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u8<span class="Apple-tab-span" style="white-space:pre;"> </span>tcpi_backoff;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u8<span class="Apple-tab-span" style="white-space:pre;"> </span>tcpi_options;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u8<span class="Apple-tab-span" style="white-space:pre;"> </span><b>tcpi_snd_wscale</b> : 4, <b>tcpi_rcv_wscale</b> : 4;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32 tcpi_rto;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32 tcpi_ato;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32 tcpi_snd_mss;</div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_rcv_mss;</b></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32 tcpi_unacked;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_sacked;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_lost;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_retrans;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_fackets;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>/* Times. */</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_last_data_sent;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_last_ack_sent; /* Not remembered, sorry. */</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_last_data_recv;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_last_ack_recv;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>/* Metrics. */</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32 tcpi_pmtu;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_rcv_ssthresh;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32 tcpi_rtt;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_rttvar;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_snd_ssthresh;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_snd_cwnd;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_advmss;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_reordering;</div> <div><br></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_rcv_rtt;</b></div> <div><b><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_rcv_space;</b></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>__u32<span class="Apple-tab-span" style="white-space:pre;"> </span> tcpi_total_retrans;</div> <div>};</div></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;">지금 제가 여기서 알아내고자 하는게 RTT, window size 값인데, </span><span style="font-size:9pt;line-height:1.5;">info.tcpi_rcv_space, info.tcpi_rcv_mss, </span><span style="font-size:9pt;line-height:1.5;">tcpi_rcv_rtt 값으로 구할 수 있는걸 확인했습니당..</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div>문제는 <b style="font-size:9pt;line-height:1.5;">tcpi_snd_wscale, </b><b style="font-size:9pt;line-height:1.5;">tcpi_rcv_wscale 값인데, </b><span style="font-size:9pt;line-height:1.5;">이 값을 어떻게 써야될지를 모르겠습니다. </span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;">구글로 검색하면 대부분 tcp.h 헤더파일 내용이거나 값을 대입하는 구문이고... 어떻게 찾아낸것중 하나가</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><a target="_blank" href="http://src.gnu-darwin.org/src/sys/netinet/tcp.h.html" target="_blank">http://src.gnu-darwin.org/src/sys/netinet/tcp.h.html</a> 에서 주석처리가 다음과 같이 되어있습니다.</div> <div><br></div> <div>(현재 include/linux/tcp.h 파일에는 아래 주석이 없습니다)</div> <div><br></div> <div><span style="color:#444444;line-height:normal;font-size:9pt;">/* RFC1323 send shift value. */, </span><span style="color:#444444;font-family:dotum, arial, sans-serif;line-height:14.880000114440918px;">/* RFC1323 recv shift value. */</span></div> <div><span style="color:#444444;font-family:dotum, arial, sans-serif;line-height:14.880000114440918px;"><br></span></div> <div><span style="color:#444444;font-family:dotum, arial, sans-serif;line-height:14.880000114440918px;"><br></span></div> <div>근데 실상 어떻게 쓰는지를 모르니.... 엉엉.... 이것때문에 주말내내 헤메고있습니다 </div> <div><br></div> <div><b style="font-size:9pt;line-height:1.5;">전문가님들 tcpi_snd_wscale, </b><b style="font-size:9pt;line-height:1.5;">tcpi_rcv_wscale </b>값을 어떻게 써야되는지 알려주세요 ㅠㅠ</div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.