Michael J. Donahoo "TCP/IP Sockets in C, 2nd Edition" / Michael J. Donahoo "Программирование TCP/IP сокетов в Си, 2-ое издание": Предисловие ко второму изданию

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Предисловие ко второму изданию

prefer211 15.05.12 в 01:29

0

Когда мы писали первое издание этой книги, среди университетских курсов по сетям изучение программирования комплектующих было не слишком распространенной практикой. В это трудно сейчас поверить, когда интернет стал такой важной частью нашего мира, и педагогические преимущества практического программирования и реальные примеры протоколов получили столь широкое признание. Несмотря на то, что сейчас есть другие языки программирования, обеспечивающие доступ к интернету, интерес к оригинальным сокетам Беркли, написанным на Си, очень высок.API (application programming interface - Интерфейс программирования приложений) сокетов для сетей был разработан в Калифорнийском Университете в Беркли в 1980-х годах для BSD (разновидность UNIX) - один из самых первых примеров того, что сейчас бы мы называли open-source проектом.

prefer211 15.05.12 в 03:12

0
+4

Sockets API и Internet развивались в мире, когда главными конкурентами были семейство проколов IPX, Appletalk, DECNet, OSI и SNAв составе Transmission Control Protocol/Internet Protocal.
(TCP/IP) - сокеты способные поддерживать все протоколы. В первом издании данной книги мы писали, что данные протоколы широко использовались, но сейчас их использование снизилось.
Однако, как мы и предсказывали в первом издании, Sockets API остается популярным среди тех, кто занимается разработкой и построением распределенных приложений.
Internet - один из тех кто использует протоколы TCP/IP. Их интерфейс оказался достаточно эффективный для того что бы поддерживать новую версию Internet Protocol (IPv6), который теперь поддерживается практически на всех платформах.

GorelovaV 15.05.12 в 16:46

0

Что API сокетов, что интернет - оба развивались в мире множества конкурирующих семейств протоколов - IPX, Appletalk, DECNet, OSI и SNA в дополнение Transmission Control Protocol/Internet Protocol (TCP/IP) {Протокол управления передачей/Интернет протокол} - и сокеты были разработаны для поддержки их всех. Меньшее количество семейств протоколов было общеиспользуемыми в то время, как мы писали первую редакцию этой книги, а их число сегодня еще меньше. Тем не менее, как мы и предвидели в первом издании, API сокетов остается важным для тех, кто хочет создавать и настраивать распределенные приложения, которые используют интернет - это то, что использует TCP/IP. И интерфейс зарекомендовал себя достаточно устойчивым для поддержки новой версии интернет протокола (IPv6), который сейчас поддерживается фактически всеми основными компьютерными платформами.

prefer211 15.05.12 в 16:46

0

Существует 2 причины, по которым было принято решение выпустить второе издание. Во-первых, исходя из собственного опыта и обратной связи от читателей, мы пришли к выводу, что некоторые темы необходимо расширять и погружаться в них глубже. Вторая причина - увеличение использования IPv6, которая теперь поддерживает практически все из существующих платформ. На момент написания первого издания отсутствовала возможность использовать IPv6 для обмена сообщениями с большими группами хостов в интернете, но адреса IPv6 присваивались многим из них.
Сейчас ещё слишком рано говорить о том, что IPv6 станет всемирным, но уже пора писать приложения.

GorelovaV 15.05.12 в 17:03

0

Отличия от первого издания

prefer211 15.05.12 в 01:38

0

Мы обновили и значительно расширили большую часть материала, добавив две главы.

Основные изменения по сравнению с первым изданием, включают:
Рассматривается IPv6. Мы включили три вида кодов: IPv4-specific, IPv6-specific и общий. Код в последних главах предназначен для работы с любой версией протокола для машин, поддерживающих обе разновидности.

GorelovaV 15.05.12 в 17:09

0
+1

Добавленная глава по программированию сокетов на C++ (предоставлена David B. Sturgill). Библиотека PracticalSocket обеспечивает классы для работы с сокетами. Это дает возможность преподавателю обучать студентов программированию сокетов без знания С и предоставляет библиотеку, что в свою очередь делает возможным для студентов немедленно начать разработку приложений после понимания понятий адрес/порт и клиент/сервер.

prefer211 17.05.12 в 01:43

0

Усилено рассмотрение вопроса об представлении информации и стратегий для организации кода для приема/передачи сообщений. Судя по нашему преподавательскому опыту, мы знаем, что студенты с каждым годом все меньше понимают, как информация хранится в памяти, поэтому мы решили подробно рассмотреть эти аспекты. Кроме того, мы включили во второе издание темы об "широких" символах и кодировании.

prefer211 17.05.12 в 01:55

0

Убрано справочное приложение с листингом всех функций Socket API. Это позволило вставить во второе издание больше примеров; кроме того, большинство функций рассмотрено в самих главах. И кстати, никто не запрещает Вам поискать в интернете или воспользоваться командой "man".

prefer211 17.05.12 в 02:06

0

Выделены важные, но малозаметные факты и предостережения. В отличие от 1-го издания, теперь вся важная информация и концепции, которые ранее можно было пропустить при первом чтении, хорошо выделены.
Несмотря на то, что размеры книги увеличились, мы не смогли включить все то, что мы хотели и о чем нас просили написать, в том числе "сырые" сокеты и работа с WinSock.

prefer211 17.05.12 в 02:29

0

Целевая аудитория

prefer211 17.05.12 в 02:23

0

Изначально мы писали эту книгу для того, чтобы научить наших студентов сокетному программированию, дабы не занимать драгценное время преподавания именно этого. В годы, прошедшие после превого издания, мы узнали много о тех темах, в которых студентам нужна значительная помощь, и о тех, в которых они не нуждаются в наставлениях.

prefer211 17.05.12 в 02:36

0

Мы также обнаружили, что наша книга была высоко оценена специалистами-практиками, которые искали доступный вводный курс по данной теме. Соответственно, эта книга нацелена одновременно на две крупных аудитории - студентов, изучающих компьютерные сети и специалистов-практиков, кто хочет писать сетевые приложения. Для студентов, в качестве дополнения, а не как основной источник, приводятся информация о сетях.

prefer211 17.05.12 в 02:49

0

Несмотря на то, что 2-ое издание этой книги больше, чем первое, мы надеемся, что эта книга будет также высоко оценена. Для специалистов, у кого есть желание писать практические приложения, книга должна служить самостоятельным введением в проблематику, но читатели этой категории должны помнить - эта книга не сделает их экспертами. Наша философия обучения на собственном опыте не изменилась, так же как и наш подход к краткости и достаточности учебника для того, чтобы изучить данную тему, оставляя всесторонние вопросы другим авторам. Для обеих аудиторий, наша цель - завести Вас достаточно далеко, чтобы Вы начали самостоятельно экспериментировать и обучаться по своему усмотрению.

prefer211 17.05.12 в 03:11

0

Предполагаемые знания

prefer211 15.05.12 в 04:50

0

Базовые знания

GorelovaV 15.05.12 в 19:31

2
+1

Мы предполагаем,что читатель обладает базовыми навыки программирования и имеет опыт работы с C и UNIX. Вы, как ожидается, должны быть знакомы с концепциями C, такими как указатели и приведение типов, так же вы должны иметь базовое понимание двоичного представления данных.
Некоторые из наших примеров подразумевают файлы, которые должны быть скомпилированы отдельно; мы предполагаем, что Вы можете с этим справиться.
Вот небольшой тест - если вы можете разобраться, что выполняет следующий фрагмент кода, то у вас не должно возникнуть проблем с кодом в этой книге:

GorelovaV 15.05.12 в 19:31

1

typedef struct {
int a;
short s[2];
} MSG;

MSG *mp, m = {4, 1, 0};
char *fp, *tp;
mp = (MSG *) malloc(sizeof(MSG));
for (fp = (char *)m.s, tp = (char *)mp->s; tp < (char *)(mp+1);)
*tp++ = *fp++;

prefer211 15.05.12 в 01:30

0

Если вы не понимаете, этот фрагмент - не отчаивайтесь (он не очень сложный), вы можете обратиться к вашей любимой книге программирования на C, чтобы разобраться, что выполняет фрагмент.

GorelovaV 15.05.12 в 19:34

1

Вы должны также быть знакомы с UNIX понятиями: адресное пространство процесса, параметры командной строки, завершение программы и обычные файлы ввода и вывода.
Материал главы 4 и 6 предполагает несколько более продвинутые понимание UNIX. Настоятельно рекомендуем познакомиться с такими концепциями сетей передачи данных, как протоколы, адреса, клиенты и серверы.

GorelovaV 15.05.12 в 19:38

1

Рекомендованная платформа и переносимость

prefer211 15.05.12 в 01:35

0

Мы презентуем книгу на основе UNIX. Когда мы разрабатывали эту книгу, некоторые люди убеждали нас включить код как для Windows, как и UNIX. К сожалению, не было возможности сделать это по разным причинам, в том числе - итоговый объем (и цена) данной книги.

GorelovaV 15.05.12 в 19:43

0

Для тех, у кого есть доступ к Windows, обратите внимание, что примерам, приведенные в первых главах, необходимы минимальные изменения для работы с WinSock. (Вам необходимо изменить заголовочные файлы и добавить setup call в начале программы и cleanup call в конце). Кроме того , большинство других примеров требуют незначительных изменений. Тем не менее, некоторые так сильно зависят от модели программирования в UNIX, что их нет смысла переносить их на WinSock.

prefer211 17.05.12 в 03:20

0

Версии примеров, работающих на WinSock, доступны на сайте книги www.mkp.com/socket. Отметим также, что почти все примеры кода работают с минимальными изменениями под Cygwin, который Вы можете найти в свободном доступе. Для второго издания мы сделали адаптацию для стандарта C99.

prefer211 17.05.12 в 01:22

0

Эту версию языка поддерживает большинство компиляторов; об отличиях от предыдущего стандарта С90 вы можете прочитать на http://ru.wikipedia.org/wiki/C99

prefer211 17.05.12 в 01:30

0

Наш код использует "Basic Socket Interface Extensions for IPv6". Из-за того, что мы полагаемся на эти новые интерфейсы (getaddrinfo()), наш код может не запускаться на некоторых старых платформах. Несмотря на это, мы ожидаем, что на большинстве современных систем наш код будет исполняться без проблем.

prefer211 17.05.12 в 03:29

0

Примеры программ, включенные в эту книгу, протестированы (и должны компилироваться и запускаться без изменений) как в *NIX, так и в Mac OS. Увы, но расположения и зависимости заголовочных файлов (*.h), не полностью стандартизированы и возможно придется покопаться в вашей системе. Также поддержка опции сокета широко варьируется в системах; мы пытались сфокусироваться на тех системах, которые наиболее широко поддерживаются. Просмотрите API документацию для Вашей системы. (Под документацие API мы подразумеваем "man pages" для Вашей системы. Чтобы узнать об этом, наберите "man man" или воспользуейтесь своим любимым поисковиком.)

prefer211 17.05.12 в 03:46

0

Имейте в виду, что хотя и мы старались сделать код устойчивым, основная цель приведенных примеров - педагогическая, и данный код не для выпуска конечных приложений. Мы принесли в жертву некоторую устойчивость ради лаконичности и ясности, особенно в основном коде сервера. (Оказывается, что не просто написать сервер, который работает под всеми комбинациями конфигураций IPv4 и IPv6 и также максимизирует вероятность успешного подсоединения клиента при любых обстоятельствах.)

prefer211 17.05.12 в 03:58

0

Эта книга не сделает Вас экспертом!

prefer211 15.05.12 в 01:37

0

Мы надеемся, что это второе издание будет полезным в качестве ресурса, даже для тех, кто уже знает немного о сокетах. Как и с первым изданием, мы многому научились, пока писали ее. Становятся экспертами в результате годов работы и чтения разносторонней литературы, не так ли?

IamSadist 16.05.12 в 18:04

1

Первая глава предназначена дает ровно столько, сколько нужно чтобы Вы начили писать код. Вторая глава глава показывает Вам, как написать клиент и сервер TCP используя или IPv4, или IPv6. Глава 3 показывает, как использовать в Вашем клиенте и сервеое сетевую службу имен, а также объясняет, как сделать их независимыми от версии IP-протокола (v4 или v6).

prefer211 17.05.12 в 04:04

0

В 4-ой главе рассматривает протокол пользовательских дейтаграмм (User Datagram Protocol - UDP). Главы 5 и 6 дают знания, необходимые для написания еще большего количества программ, в то время как 7-ая глава рассказывает, что происходит при реализации сокетов в вызовы API; эти три главы взаимонезависимы и могут быть представлены в любом порядке. Наконец, 8-ая глава представляет библиотеку классов на С++, которая обеспечивает упрощенный доступ к функциональности сокетов.

prefer211 17.05.12 в 04:18

0

На протяжении всей книги, некоторые заявления будут выделены следующим образом: "Эта книга не сделает вас специалистом!"
Наша цель - довести до вашего внимания, не заметные, но очень важные факты
и идеи, которые можно пропустить при первом чтении.
Знаки на полях говорят вам "обрати внимание" не то, что выделено жирным шрифтом.

GorelovaV 15.05.12 в 19:17

1

На протяжении всей книги некоторые моменты будут выделены так: "Эта книга не сделает Вас экспертом!". Наша цель - довести до вашего внимания не заментые, но очень важные факты и идеи, которые можно пропустить при первом прочтении книги. Знаки на по полях говорят Вам "Обрати внимание" на то, что выделено жирным шрифтом.

prefer211 17.05.12 в 04:57

0

Благодарности

prefer211 15.05.12 в 01:37

0

Многие люди внесли свой вклад, чтобы сделать эту книгу реальностью. В дополнение ко всем тем, кто помог нам с первым изданием (Michel Barbeau, Steve Bernier, Arian Durresi, Gary Harkin, Ted Herman, LeeHollaar, David Hutchison, Shunge Li, Paul Linton, Ivan Marsic, WillisMarti, Kihong Park, Dan Schmitt, Michael Scott, Robert Strader, Ben Wah, and Ellen Zegura), мы особенно благодарим David
B. Sturgill, который разработал код и текст для 8-ой главы, а так же Bobby Krupczak за помощь в разработке проекта второго издания.
И, наконец, сотрудникам из Morgan Kaufmann/Elsevier: Rick Adams - наш редактор, помощник редактора Maria Alonso, и руководитель проекта Melinda Ritchie -
Благодарю вас за ваше терпение, помощь и заботу о качестве нашей книге.

GorelovaV 15.05.12 в 19:09

0

Обратная связь

prefer211 15.05.12 в 01:36

0

Мы очень заинтересованы в искоренении ошибок до конца, поэтому, если Вы нашли любую ошибку, пожалуйста, отправьте письмо любому из нас. Мы будем поддерживать в актуальном стостоянии список опечаток на веб-странице книги.

prefer211 15.05.12 в 04:02

0

M.J.D.jeff_donahoo@baylor.edu
K.L.C.calvert@netlab.uky.edu

prefer211 15.05.12 в 01:36

0
Минутку...