2014-02-19 3 views
0

TCP 연결 설정에서 2^16 바이트 크기의 개별 버퍼가 서버를 분리하는 별도의 TCP 연결에 할당되었는지 알고 싶습니까?TCP 연결 용 버퍼

답변

0

예, 별도의 버퍼가 송신 및 수신을 위해 할당됩니다. 예약 된 메모리 양은 초기에 기본 구성에 따라 다르며 응용 프로그램이 set_sockopt()를 사용하여 다른 크기를 선택하는 경우에 사용됩니다. 초기 예약 메모리는 송신/수신 패킷 수가 증가함에 따라 증가합니다.

Linux에서는 기본 sysctls를 사용하여 기본값을 읽거나 수정할 수 있습니다.

sudo sysctl -a | grep tcp | 그렙 MEM

net.ipv4.tcp_mem = 191133 254845 16777216

net.ipv4.tcp_rmem = 4096 16384 777216

net.ipv4.tcp_wmem = 4096 16384 16777216

당신은 setsockopt를 사용할 수 있습니다

()를 SO_SNDBUF 및 SO_RCVBUF와 함께 사용하여 응용 프로그램에서 수정합니다.

+0

다른 서버와 TCP 연결을 설정하는 동안 클라이언트가 크기가 2^16 인 각 서버에 대해 서로 다른 버퍼를 할당하는지 여부는 의심 스럽습니다. –

+0

예. Linux에서는 기본적으로 2^16이지만 구성 할 수도 있습니다. 이 버퍼는 동일한 서버에 있는지 여부에 관계없이 TCP 연결마다 있습니다. 또한 할당 된 버퍼는 데이터를 저장하는 용도로만 사용되지 않습니다. 그것은 또한 skbuff 및 기타 몇 가지를 저장하는 데 사용됩니다. – Akhil

+0

감사합니다 ... 내 의심을 없애줍니다. –

0

예 아니요. 확실하게 두 개의 버퍼 (송신과 수신)가 있지만 크기는 플랫폼에 따라 다르며 응용 프로그램에서 수정할 수 있습니다.

+0

다른 서버와 TCP 연결을 설정하는 동안 클라이언트가 크기가 2^16 인 각 서버에 대해 서로 다른 버퍼를 할당하는지 여부가 의심 스럽습니까? –