udp 에서 tcp서비스중 sequence number 구현을 어떻게 하져...???ㅠ
트런들
네트워크 프로그램 작성시tcp 로 작석할 경우에는
데이터의 손실을막기위해 sequencenumber를 기본적으로 제공해주는데
udp 에서도 데이터 손실이 발생했는지 알기 위해sequence number와 같은 기능을 구현하기 위해서는
어떻게 해야하지요..???
datagrampacket을 이용하지 말고 다른방법으로 해야하나요??
-
크나
와우~너무 감사합니다~ㅎㅎ 많은 도움이 되었어요~^^ 정말정말 고맙습니다~ㅎㅎ 수다님,힐링녀님,버섯수다님ㅎ 좋은 하루되세요^^
-
라이브라
혹시나 해서 참고로 몇 가지를 적어 보자면 TCP의 경우에는 네트윅 특성에 따라서 1개의 패킷(1회에 보내고자 하는 전체 내용을 1 패킷이라고 가정)이 N개로 분할되서 수신될 수 있습니다.반면, udp의 경우에는 반드시 1패킷은 1회에 수신됩니다. udp가 프로토콜상 송신은 보장하기때문에 송신도중 깨진 패킷은 폐기됩니다.보낼 수 있는 패킷 길이도 65507 Byte로 제한되어 있습니다. 헉... 이쯤에서.. 휘리리릭...
-
아더
단순히, TCP와 동일하게 동작하도록 설계하실것이라면
서버와 클라이언트 프로그램 자체를 그런식으로 동작하도록 설계하셔야 합니다.
즉, 체팅 서버등을 만드시듯이 각 명령어에 따라서 동작하는 패킷을 설계하셔야겠지요.
시퀀스 번호 요청하셔서 넣어주고 미 수신된 패킷은 재 요청하고..
순서대로 조합또는 분할하시고.. 등등...
단순히 번호만 제너레이션 하는 컨셉은 아닙니다.^^
이런 모든것들을 tcp의 경우 프로토콜 상에서 정의했기때문에 자동화가 되는것이구요. -
지니
UDP가 비신뢰 프로토콜이기는 하나..
요즘 인터넷이 그렇게 허접하지는 않습니다.
예전에는 라인 자체가 너무 불안정해서 유실되는 데이터가 많았지만
요즘은 인터넷 보급율도 좋아져서 유실되는 데이터가 거의 없을정도로 보셔도 될 듯 합니다.
거의 같은 라인에서는 UDP도 별다른 검증 루틴이 필요없을때가 많죠.
다만, 방화벽을 끼거나 라우터를 여러곳을 거치거나
트레픽이 심하게 몰리거나 등등 몇가지 조건하에서는
유실될 확률이 그 만큼 높아지기때문에 패킷 설계가 -
카프리콘
패킷 설계를 하셔야겠죠^^
TCP의 경우에는 별도의 신뢰 체크가 필요없어서 원하는 형태의 패킷만 설계하시면 되겠으나
UDP를 이용하시게된다면...
그리고 전송할 패킷의 길이가 길면 길 수록...
특히나 전송되는 패킷의 순서가 중요하다면...
패킷을 잘게 나눠서 순서에 무관하게 받은뒤에
순서대로 조합할 수 있는 구조가 되도록 패킷을 설계하셔야 합니다. -
초코초코해
패킷유실이 의심되는 층에서 데이터뒤에 식별자를 넣어주시면 되겠네요.
-
에다
답변 감사드립니다 ^^ 재전송을 위해서가 아니라 패킷이 유실되었나 안되었나만 확인유무를 위해서..^^;
그럼 번호를 넣어주게되면 문자하나당 번호를 부여해야 하나요?? -
가리매
결국은 걍 패킷에 번호를 넣어주는 방법 외에는 없습니다. 하지만 그렇게 재전송이 필요한 경우라면 결국 TCP 와 같아지는데 그러면 UDP 를 이용할 필요가 없어지지요