Размер пустого UDP и пакета TCP?

Не идите туда. Как долгосрочный разработчик Mac, я могу уверить Вас, никакое решение действительно не работает хорошо. Я попробовал столько решений, но они - все не слишком хорошие. Я думаю, что проблема состоит в том, что Apple действительно не документирует формат метаданных для необходимых данных.

Вот то, как я делаю его в течение долгого времени, очень успешно:

  1. Создают новый DMG, writeable(!), достаточно большой для содержания ожидаемых двоичных и дополнительных файлов как readme (редкий мог бы работать).

  2. Монтируют DMG и дают его, расположение вручную в Средстве поиска или с любыми инструментами подходит Вам для того, чтобы сделать это (см., что FileStorm связывается в нижней части для хорошего инструмента). Фоновое изображение обычно является изображением, которое мы помещаем в скрытую папку (" .something") на DMG. Поместите копию своего приложения там (любая версия, даже устаревший сделает). Скопируйте другие файлы (псевдонимы, readme, и т.д.) Вы хотите там, снова, устаревшие версии сделают очень хорошо. Удостоверьтесь, что значки имеют правильные размеры и положения (IOW, расположение DMG путем, Вы хотите, чтобы он был).

  3. Размонтирование DMG снова, все настройки должны быть сохранены к настоящему времени.

  4. Запись создавание сценария DMG, который работает следующим образом:

    • Это копирует DMG, таким образом, исходный никогда не затрагивается снова.
    • Это монтирует копию.
    • Это заменяет все файлы самыми актуальными (например, последним приложением после сборки). Можно просто использовать mv или так же для этого на командной строке. Отметьте при замене файла как этот значок останется таким же, положение останется таким же, все кроме файла (или каталог), содержание остается таким же (по крайней мере, с так же, который мы обычно используем для той задачи). Можно, конечно, также заменить фоновое изображение другим (просто удостоверяются, что оно имеет те же размеры).
    • После замены файлов, заставьте сценарий размонтировать копию DMG снова.
    • Наконец вызов hdiutil для преобразования перезаписываемого, к сжатому (и такой не перезаписываемый) DMG.

Этот метод не может звучать оптимальным, но доверять мне, он работает действительно хорошо на практике. Можно поместить исходный DMG (шаблон DMG) даже при управлении версиями (например, SVN), поэтому если Вы когда-нибудь случайно изменяетесь/уничтожаете его, можно просто вернуться к пересмотру, где это было все еще хорошо. Можно добавить шаблон DMG к проекту XCode, вместе со всеми другими файлами, которые принадлежат на DMG (readme, файл URL, фоновое изображение), все при управлении версиями и затем создают цель (например, внешняя цель, названная ", Создают DMG"), и там выполните сценарий DMG вышеупомянутых и добавьте старую основную цель как зависимую цель. Можно получить доступ к файлам в дереве XCode использование $ {SRCROOT} в сценарии (всегда исходный корень продукта), и можно получить доступ к продуктам сборки при помощи $ {BUILT_PRODUCTS_DIR} (всегда каталог, где XCode создает результаты сборки).

Результат: На самом деле XCode может произвести DMG в конце сборки. DMG, который готов выпустить. Не только можно создать повторно генерирование DMG, довольно легкого тот путь, можно на самом деле сделать так в автоматизированном процессе (на бездисплейном сервере, если Вам нравится), с помощью xcodebuild из командной строки (автоматизировал ночные сборки, например).

Относительно начального расположения шаблона, FileStorm является хорошим инструментом для того, чтобы сделать его. Это является коммерческим, но очень мощным и простым в использовании. Нормальная версия составляет меньше чем 20$, таким образом, это действительно доступно. Возможно, можно автоматизировать FileStorm для создания DMG (например, через AppleScript), никогда не пробовал это, но как только Вы нашли идеальный шаблон DMG, действительно легко обновить его для каждого выпуска.

30
задан Alexis Wilke 4 June 2018 в 20:04
поделиться

3 ответа

TCP:

Размер Ethernet-кадра - 24 байта
Размер заголовка IPv4 (без параметров) - 20 байт
Размер заголовка TCP (без каких-либо опций) - 20 байтов

Общий размер кадра Ethernet, содержащего IP-пакет с пустым сегментом TCP - 24 + 20 + 20 = 64 байта

UDP:

Размер Ethernet кадр - 24 байта
Размер заголовка IPv4 (без параметров) - 20 байт
Размер заголовка UDP - 8 байтов

Общий размер кадра Ethernet, переносящего IP-пакет с пустой дейтаграммой UDP - 24 + 20 + 8 = 52 байта

76
ответ дан 27 November 2019 в 23:04
поделиться

См. Протокол дейтаграмм пользователя . Заголовок UDP имеет длину 8 байтов (64 бита).

Минимальный размер чистого заголовка TCP составляет 5 слов (32-битное слово), а максимальный размер заголовка TCP составляет 15 слов.

С наилучшими пожеланиями, Фабиан

9
ответ дан 27 November 2019 в 23:04
поделиться

Артелиус и Халфдан верны, но вы кое-что упускаете: UDP и TCP работают поверх некоторого физического транспорта. Например, если вы используете UDP через Ethernet, вы также должны указать размер Ethernet-кадра

1
ответ дан 27 November 2019 в 23:04
поделиться