Вот такой вопрос: если я отправлю большой UDP-пакет и он, конечно же, не влезет в MTU, то он ведь будет фрагментирован. При этом получиться много отдельных UDP-пакетов? Или ка-то иначе?
Если да, то иными словами, это значит, что данные даже внутри одной датаграммы тоже могу перепутаться (прийти в неверном порядке, продублироваться, потеряться)?
Тогда смысла рассматривать такой субъект, как датаграмма нет.. есть просто произвольно испорченный поток.
Или я всё же не понимаю какой-то тонкости? Есть хоть что-то, что гарантируется в конце-то концов?
фрагментация UDP (опять я со своим UDP)
Модератор: Модераторы разделов
-
cy6erGn0m
- Сообщения: 119
- ОС: MandrivaLinux/Solaris 10
фрагментация UDP
I want to Believe!
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
-
BlackStar
- Сообщения: 1338
- Статус: We are all Kosh
- ОС: Fedora 10
-
AestheteAnimus
- Сообщения: 135
- ОС: FreeBSD 8.0-RELEASE amd64
-
кодировщик
- Сообщения: 974
- Статус: зарёган в пятницу 13
- ОС: Linux
Re: фрагментация UDP
Кстати у кого-то есть нормально-реализованная функция проверки контрольной суммы пакета, которую используете в своих приложениях?!
-
AestheteAnimus
- Сообщения: 135
- ОС: FreeBSD 8.0-RELEASE amd64
Re: фрагментация UDP
Ну а что Вам мешает в исходниках подсмотреть?
-
кодировщик
- Сообщения: 974
- Статус: зарёган в пятницу 13
- ОС: Linux
Re: фрагментация UDP
в исходниках чего?!
У меня в принципе есть, хотел другие посмотреть.
-
AestheteAnimus
- Сообщения: 135
- ОС: FreeBSD 8.0-RELEASE amd64
Re: фрагментация UDP
кодировщик писал(а): ↑15.05.2009 17:23в исходниках чего?!
У меня в принципе есть, хотел другие посмотреть.
Ну как же чего? В исходниках того, под чем работаете. Вот, например, что есть в моей бзде:
Код: Выделить всё
find /usr/src/ | grep in_cksum.[^h]
/usr/src/lib/libstand/in_cksum.c
/usr/src/sys/amd64/amd64/in_cksum.c
/usr/src/sys/arm/arm/in_cksum.c
/usr/src/sys/arm/arm/in_cksum_arm.S
/usr/src/sys/i386/i386/in_cksum.c
/usr/src/sys/ia64/ia64/in_cksum.c
/usr/src/sys/netinet/in_cksum.c
/usr/src/sys/powerpc/powerpc/in_cksum.c
/usr/src/sys/sparc64/sparc64/in_cksum.c-
кодировщик
- Сообщения: 974
- Статус: зарёган в пятницу 13
- ОС: Linux
Re: фрагментация UDP
AestheteAnimus писал(а): ↑15.05.2009 17:55кодировщик писал(а): ↑15.05.2009 17:23в исходниках чего?!
У меня в принципе есть, хотел другие посмотреть.
Ну как же чего? В исходниках того, под чем работаете. Вот, например, что есть в моей бзде:
Код: Выделить всё
find /usr/src/ | grep in_cksum.[^h] /usr/src/lib/libstand/in_cksum.c /usr/src/sys/amd64/amd64/in_cksum.c /usr/src/sys/arm/arm/in_cksum.c /usr/src/sys/arm/arm/in_cksum_arm.S /usr/src/sys/i386/i386/in_cksum.c /usr/src/sys/ia64/ia64/in_cksum.c /usr/src/sys/netinet/in_cksum.c /usr/src/sys/powerpc/powerpc/in_cksum.c /usr/src/sys/sparc64/sparc64/in_cksum.c
Что-то я не понял, причем тут это к функции подсчёта контрольной суммы в заголовках пакетов IP, UDP, TCP, ICMP.
-
AestheteAnimus
- Сообщения: 135
- ОС: FreeBSD 8.0-RELEASE amd64
Re: фрагментация UDP
кодировщик писал(а): ↑15.05.2009 19:48Что-то я не понял, причем тут это к функции подсчёта контрольной суммы в заголовках пакетов IP, UDP, TCP, ICMP.
Ну видимо притом, что это ее исходники
Код: Выделить всё
/*
* Checksum routine for Internet Protocol family headers (Portable Version).
*
* This routine is very heavily used in the network
* code and should be modified for each CPU to be as fast as possible.
*/-
кодировщик
- Сообщения: 974
- Статус: зарёган в пятницу 13
- ОС: Linux
Re: фрагментация UDP
AestheteAnimus писал(а): ↑15.05.2009 19:56кодировщик писал(а): ↑15.05.2009 19:48Что-то я не понял, причем тут это к функции подсчёта контрольной суммы в заголовках пакетов IP, UDP, TCP, ICMP.
Ну видимо притом, что это ее исходникиВот например кусочек файла /usr/src/sys/netinet/in_cksum.c
Код: Выделить всё
/* * Checksum routine for Internet Protocol family headers (Portable Version). * * This routine is very heavily used in the network * code and should be modified for each CPU to be as fast as possible. */
Весь файл прикрепите.
-
AestheteAnimus
- Сообщения: 135
- ОС: FreeBSD 8.0-RELEASE amd64
Re: фрагментация UDP
Вот:
http://svn.freebsd.org/base/head/sys/netinet/in_cksum.c
А вот где он используется (функция in_cksum) применительно к UDP:
http://svn.freebsd.org/base/head/sys/netinet/udp_usrreq.c
http://svn.freebsd.org/base/head/sys/netinet/in_cksum.c
А вот где он используется (функция in_cksum) применительно к UDP:
http://svn.freebsd.org/base/head/sys/netinet/udp_usrreq.c