해결된 질문
작성
·
222
0
1. 프로세스가 운영체제에 파일을 담을 메모리의 일부인 버퍼를 요청하는 건가요?
2. TCP는 데이터를 보내려고 할 때 상대방이 받을 수 있는 여유공간을 확인한다고 하셨는데 버퍼에 있는 데이터를 미리 분해해서 바로 전송 할 수 있는 단계인 Frame까지 만들어 놓는것이 아니라 ACK를 받으면 그때 버퍼에 있는 데이터를 분해해서 Frame까지 만든 후 보내는 것인가요?
정리하자면 ACK를 받기전에 미리 만들어놓는건지 ACK를 받은후에 여유공간이 있다고 판단되면 분해하여 Frame으로 만드는 건지 궁금합니다.
3. 데이터를 보내는 것을 판단하는 몫은 TCP인건가요? TCP가 보내기로 했다면 packet을 거쳐 Frame까지 한번에 만들어지는 건지 궁금합니다.
답변 1
1
네, 메모리 자원을 OS에 요청하는 것은 프로세스 입니다.
TCP 수준에서 송신할 데이터를 분해한 단위는 Segment입니다. 이 Segment를 Packet으로 캡슐화 한 후 Packet을 다시 L2 Frame 단위로 캡슐화 합니다. 우리가 흔히 LAN이라 부르는 네트워크에서 송/수신 단위는 Frame 입니다. 그리고 TCP에서 송신 할 Segment를 미리 만들어 놓는 것인가에 대해서 사실 표준이 정하는 정답은 없습니다. 다만 미리 만들어 둘 것으로 생각 할 수 있습니다. TCP는 다양한 내부 타이머를 활용해 어느 정도 예측 동작을 하기 때문입니다.
송신측 데이터 송신 여부 판단은 수신측 ACK에 의존합니다. 거기에 포함된 Window size를 보고 여유가 있고 없음을 판단합니다. 그러니 결과적으로 TCP 수준에서 판별이 된다고 할 수 있겠습니다. 끝으로 모든 TCP Segment는 그 자체만으로는 L3 Internet에서 유통이 불가능합니다. 반드시 Packet으로 캡슐화 해야 합니다. 그리고 논리 네트워크인 L3 인터넷은 L2 네트워크들로 이루어집니다. 따라서 모든 패킷은 L2 구간을 통과할 때 L2 Frame으로 캡슐화 됩니다. 참고하시기 바랍니다. :)