해결된 질문
작성
·
19
0
안녕하세요 개발자님 오래전 부터 유트브로 보다가, 인프런 할인 할때 한번에 여러개(많이) 수강 하여 듣고 있습니다.
TCP 통신 관련 프로세스를 개발 하고 싶어서 문의 드립니다.
유트브 이해하면 인생이 바뀌는 TCP 송/수신 원리
설명에서 2개의 buffer 가 소개 되었는데요,
TCP 와 socker buffer에 대해 문의 드립니다.
1.
TCP 에 Window Size(buffer) 를 리눅스 에서 실시간으로 조회 할수 있나요? (전은 못찾았습니다)
2.
socket buffer 을 리눅스 환경에서 실시간으로 조회 가능 한가요? (이것도 찾지 못했습니다.)
3.
process 에서 socket에 buffer을 퍼 올려라 하는 말씀과 window size 가 mss 보다 작아지면서 생기는 wait 문제를 해결 하려면 process 부터 확인 하라고 하셧는데, 이 문제는 process 에서 code로 socker 연결 이후 process 내부에 변수로 buffer(사용자 정의)을 선언 하고, socker.recv() 함수를 통해 변수로 선안한 buffer 에 다 적재 하면 process 단에서 TCP 에 쌓이는 문제를 해결 할 수 있다고 생각 해도 되는 걸까요?
답변 1
0
실시간으로 조회하는 기능은 없습니다. 다만 설정 할 수는 있습니다. Linux 'TCP strategy'에 대해 검색해보시면 구체적인 방법을 알 수 있습니다.
이는 리눅스 환경의 문제가 아니라 소켓 수준 옵션에 관한 것입니다. setsockopt() 함수에 대해서 찾아보시기 바랍니다.
recv() 함수를 호출하고 바로 다시 수신대기에 들어간다면 윈도우 사이즈 문제가 발생하는 일은 쉽게 재현되지 않을 것입니다. 보통은 수신한 데이터를 처리하는 코드가 이어지는데 이 처리코드가 이어지는 중에도 네트워크로부터 데이터가 수신되어 버퍼에 쌓입니다. 이 쌓이는 속도보다 처리속도가 늦어지면 윈도우 사이즈가 줄어드는 문제는 해결되지 않습니다.
참고하시기 바랍니다. 😄