Я хочу стать специалистом в области сетевого программирования.
Вообще, странный набор вопросов. Если вы, судя по постановке вопроса, вообще не знаете
что означают такие слова TCP/IP, протокол, FTP, сервер (программный, аппаратный), сокет, ip4/ip6, DNS, VPN, http, PPPoE, порт, клиент-сервер, хост, домен, cookies, маршрутизация, шлюз и т. д
то подозреваю, что и программирование вы тоже не знаете. (Тут можно предположить, конечно, что слово "не знаю" вы употребляете в том смысле, что только в общих чертах представляете, но тогда вы бы не говорили, что в википедии что-то непонятно) В этом случае лучше начать именно с программирования. Начать с выбора языка, какой больше по душе, и все такое. Пока будете изучать язык, большую часть понятий в общих чертах поймете. Ну и опять же, непонятно, что в вашем представлении есть "сетевое программирование". Я, например, и сам четко не объясню, наверное, но вот два слова например, из вашего списка - FTP и cookies. Вряд ли вы хоть раз в жизни столкнетесь с ситуацией, когда надо очень хорошо знать тонкости обоих этих понятий одновременно (и таких пар из списка можно много надергать). И книги, условно, про FTP и про cookies будут совсем разные.
Хотя что-то меня понесло не туда. Вам наверно, надо для начала что-то обзорное вширь, но не вглубь, но я что-то про такие книги вообще не слышал.
(Оффтоп)
Ну то есть магазины завалены книгами на такие темы, но не могу сказать, что можно взять любую и читать. Лет 15 назад ходили байки про книги какого-то автора (я забыл фамилию, к сожалению, Фленов что ли или кто другой), сам не читал, рассказывали знакомые админы. Книга натурально начиналась с того, что автор говорил что-то типа: "итак, перед вами компьютер; давайте подготовим его к работе - отформатируем жесткий диск". Дальше, естественно, с вероятностью, близкой к 100%, пользователь (абсолютно ничего не понимающий в компьютерах) делал что-нибудь не так и оставался с запоротым компьютером (который перед этим уже был достаточно готов к работе). Ну и представьте, что какая-нибудь тетенька в бухгалтерии такое сделает (а они делали, судя по рассказам знакомых).
В принципе, для общего развития и чтобы сориентироваться, можно для начала просто гуглить "что такое Х" или "как работает Х" или "как устроено Х" и читать, что предлагает гугл на эту тему. Желательно при этом отфильтровывать и преимущество отдавать более-менее зарекомендовавшим себя сайтам типа хабра или компьютерры, или искать прямо по ним - например, в поисковой строке гугла написать
как устроен интернет site:habrahabr.ru(я кстати только что написал и даже нашел интересную неожиданную статью, которую обязательно почитаю на досуге).
Те слова, которые вы перечислили, они покрывают очень широкий круг вопросов и вряд ли вы когда-нибудь будете знать досконально все это - вам банально это не понадобится.
Ну и собственно, большая часть понятий сама по себе довольно проста - не нужны толстые книги, чтобы их объяснять. Что такое "порт"? Это, грубо, "адрес сетевой квартиры". Вы пишете адрес на конверте: "Москва, ул. Маши Порываевой, д. 5, кв. 10, Васе Пупкину". Вот компьютер - это дом, где живут программы, а порт - это номер квартиры. Разница только в том, что две программы в одной "квартире" не уживаются как правило.
Что такое клиент-сервер? Вы пришли в магазин: вы - клиент, продавец - сервер. Дальше аналогию можно продолжать и продолжать очень долго, она довольно хорошая, но если грубо - то этого достаточно для начала.
А когда начнете программировать, главное, что надо помнить - большая часть "гениальных идей", пришедших вам в голову, давно реализована, и часто, вместо изобретения велосипеда, проще взять готовое.