갑툭튀 ..
프로토콜 어제 컷 친 것 같았는데 중요한 기능 하나가 빠졌쩌.
tcp는 syn-ack 구조로 다음 번에 받을 패킷 번호를 ack로 보내는 구조이어요. udp는 이런 과정이 없어서 어플에서 직접 결정해주어야 하는데 애초부터 ack 어레이를 보내면 여분에 패킷을 더 보낼 수 있어서 tcp보다 계산이 편하고 나아가서 syn 어레이를 한번에 비교하여서 슬라이드 윈도우 같은 거를 안 써도 되고 버퍼 용량도 많이 안 쓰겠쩌.
tcp나 이거나 어느 한쪽만 패킷을 보내면 되돌아오는 sync 넘버를 알 수 없어서 망하빈다. 실질적으로 패킷 길이가 0인 데이터를 보내야 하는 것이어요. 이럼 보낼 데이터가 있다면 패킷 길이가 0인 데이터를 안 보내면 되는데 보내어질 패킷을 예측하는 것이 앵간하빈다. 딜레이 함수를 사용해버리면 결과적으로 레이턴시(latency 지연)가 늘어나서 망하빈다.
유튜브를 보면서 1시간 동안 생각해보았는데 Task.Yield 함수는 찰나에 처리를 하여서 이럼 전송한 패킷 수를 찍어보고 찰나에 시간이 지난 뒤에도 보낸 패킷 수가 같다 이럼 동기화 패킷을 보내면 되겠쩌.
하찮은 로직을 추가하면 원 큐에 아주 잘 되어서 좋스빈다.
