Существует мировой стандарт структуры протоколов связи - семиуровневая OSI
(Open Systems Interface - интерфейс открытых систем). Hа каждом из уровней этой
структуры решается свой объем задач своими методами. Сокеты находятся на так
назывемом транспортном уровне - ниже находится сетевой протокол IP, выше -
специализированные протоколы сеансового уровня, ориентированные на решение
конкретных задач - это всем известные FTP, SMTP, etc.
В этой статье я немного расскажу о сокетах и о граблях, на которые я
понаступал, программируя различные клиентские и серверные приложения на
протоколе TCP/IP. Постараюсь объяснить простым языком для неспециалистов. Здесь
будут даны самые начальные сведения и будет попытка обобщения. В некоторых
статьях есть такая фраза - "для ... необходимо знать это и то, а для тех кто не
знает - идите смотрите там, не знаю где". Теперь будет ясно "где"; и эти статьи,
я думаю, могут быть справочником в дальнейшем. Будет рассмотренна работа с
сокетами в m$ windows. Для программирования сокетов в никсах различие очень
незначительны (все функции и структуры мелкософт постарался без изменений
передрать) и основные из них рассмотрены в статьях, ссылки на которые приведены
в конце, в разделе "Что еще почитать". Программа, использующая сокеты, может
работать с одним сокетом или с множеством одноременно "открытых" сокетов
(сокетный движок). Сразу стоит выделить различие между блокирующими
(асинхронными) и неблокирующими (синхронными, требующими синхронизацию)
сокетами.