LINUX.ORG.RU

Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.


0

0

В статье рассмотрена архитектура системных вызовов работы с сокетами в ядре Linux 2.6. Рассмотрена реализация системного вызова socket. Детально рассмотрен весь процесс по созданию сокета, как в пространстве пользователя, так и в ядре. Прокомментированы важные участки кода функций ядра, которые вызываются при создании сокета. Построено дерево вызова функций в ядре.

>>> Подробности

anonymous

Проверено: Shaman007 ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.


inode == "индексный дескриптор"? звучит IMHO как-то не так :-/ в конце-концов инода она и есть инода.

// wbr

klalafuda ★☆☆ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

А не судьба была сделать у картинки счетчика рамблера всё по нулям, дабы не лицезреть надпись Rambler's Top100 на верху страницы?

pento ★★★★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

>А не судьба была сделать у картинки счетчика рамблера всё по нулям, дабы не лицезреть надпись Rambler's Top100 на верху страницы?

причем тут статья? или ее содержание?

или Вы материал изучаете по счетчикам рамблера?!

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

прочел, написана редкая белеберда

borisych ★★★★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

2pento * (*) (17.09.2007 11:09:06)

>А не судьба была сделать у картинки счетчика рамблера всё по нулям, дабы не лицезреть надпись Rambler's Top100 на верху страницы?

такое ощущение, что вы изучаете материал стоя на голове или посавив монитор вверх тормашками! оригинально

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

2pento * (*) (17.09.2007 11:09:06)

>А не судьба была сделать у картинки счетчика рамблера всё по нулям, дабы не лицезреть надпись Rambler's Top100 на верху страницы?

такое ощущение, что вы изучаете материал стоя на голове или посавив монитор вверх тормашками! оригинально

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

>прочел, написана редкая белеберда

можно прочесть Ваши статьи по ядру, где написана не белебирда

и еще Вашу методику в студию о том как не писать билеберду

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

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

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

// wbr

klalafuda ★☆☆ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

>можно прочесть Ваши статьи по ядру, где написана не белебирда

нельзя, поскольку статьи не пишу, а читаю. от вашей статьи ( в глазах рябит от "сокет", "протокол" и т.п. не говоря уже об ошибках: "Из данного участка кода видно, что если значение аргумента protocol было указано отлично от нуля". В школе что по языку было? Или текст не на великом и могучем, а на пайтоне или перле?

borisych ★★★★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> 2klalafuda ** (*) (17.09.2007 11:47:51)
> аргументируйте свои слова

анонимус, будь так добр - зарегистрируйся пожалуйста.

// wbr

klalafuda ★☆☆ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

2borisych *** (*) (17.09.2007 11:51:51)

>нельзя, поскольку статьи не пишу, а читаю. от вашей статьи ( в глазах рябит от "сокет", "протокол"

так и скажите, что вы делитант

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

Публика на LOR, как всегда, блещет не умом, но плебесцитом... Когда нечего сказать по сути, начинают обсуждать счётчики.

fnm ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

2fnm (*) (17.09.2007 11:57:44)

я думаю что, те у кого есть какие-либо сложности в жизни, возможно, с женщинами или размером, или еще чем, здесь обсираюет все и вся, чтобы себя хоть как-то морально удовлетворить. Показать самим себе что они хоть на что-то спопобсны и могут огрызаться. Все. Прорались. Подняли сами в своих глазах виртуальную планку и _удовлетворились__. Ну пусть хоть так удоволетворятются.

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

2klalafuda

Так вот, знайте, в простонародье, персоналию, которая выливает грязь на другую персоналию, при этом не аргументирую свои слова, называют - ТРЕПЛО!!!

Прежде чем просто без аргументов орать везде что это отстой, подумайте о том, что про вас будут считать.

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

Лично я из статьи узнал много нового для себя, нормально написано. ЗЫ: Человек свое время на вас потратил, а вы его грязью поливать. Так нельзя, таварищи.

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> такое ощущение, что вы изучаете материал стоя на голове или посавив монитор вверх тормашками! оригинально

любая точка зрения имеет право на существование

kto_tama ★★★★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

Дизайн какой-то макоподобный. И с русским там не дружат. Такое впечатление, что данный сайт создан микрософтом для того, чтобы просто позорить линукс.

P.S. выложите ещё раз великое "резюме" автора linuxkernel.ru

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> Так вот, знайте, в простонародье, персоналию, которая выливает грязь на другую персоналию, при этом не аргументирую свои слова, называют - ТРЕПЛО!!!

> Прежде чем просто без аргументов орать везде что это отстой, подумайте о том, что про вас будут считать.

btw я отнюдь не утверждаю, что статья - отстой. да, есть IMHO некоторая скажем так сумбурность в изложении, но это в принципе не страшно. AFAIU автор не собирается на этом останавливаться -> посмотрим, что будет дальше.

// wbr

klalafuda ★☆☆ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

socket(AF_INET, SOCK_STREAM, 0); -------P---------- PF_INET вообще то

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

>Лично я из статьи узнал много нового для себя, нормально написано. ЗЫ: Человек свое время на вас потратил, а вы его грязью поливать. Так нельзя, таварищи.

А кто поливает? Один аристократ выискал орфографическую ошибку и из-за нее презрительно назвал всю статью белибердой. Другому дегенерату не понравилось, после N-ной дозы лизергина он увидел только большой счетчик рамблера вверху и не смог найти статьи на странице.

А аргументов привести никто не смог, значит наверно хорошая статья.

anonymous ()

школа, блин.

откровенно говоря, мне не понятно назначение этой статьи.
Тот кому это нужно (по работе/просто интересно/etc)
вполне способен сам это раскопать
за очень небольшое время

int_0dh ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> socket(AF_INET, SOCK_STREAM, 0); -------P---------- PF_INET вообще то

http://www.opengroup.org/onlinepubs/009695399/functions/socket.html

#include <sys/socket.h>

int socket(int domain, int type, int protocol);

The socket() function shall create an unbound socket in a communications domain, and return a file descriptor that can be used in later function calls that operate on sockets.

The socket() function takes the following arguments:

domain
Specifies the communications domain in which a socket is to be created.
type
Specifies the type of socket to be created.
protocol
Specifies a particular protocol to be used with the socket. Specifying a protocol of 0 causes socket() to use an unspecified default protocol appropriate for the requested socket type.

The domain argument specifies the address family used in the communications domain. The address families supported by the system are implementation-defined.

Symbolic constants that can be used for the domain argument are defined in the <sys/socket.h> header.

http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html

The <sys/socket.h> header shall define the following macros, with distinct integer values:

AF_INET
Internet domain sockets for use with IPv4 addresses.
AF_INET6
[IP6] [Option Start] Internet domain sockets for use with IPv6 addresses. [Option End]
AF_UNIX
UNIX domain sockets.
AF_UNSPEC
Unspecified.

// wbr

klalafuda ★☆☆ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> Так вот, знайте, в простонародье, персоналию, которая выливает грязь на другую персоналию, при этом не аргументирую свои слова, называют - ТРЕПЛО!!!

> Прежде чем просто без аргументов орать везде что это отстой, подумайте о том, что про вас будут считать.

Товарищ, а также остальные онанизмусы, вы идиоты? Если человек выставляет своё произведение на всеобщее обозрение, он должен быть готов принять дозу критики.

Когда вы покупаете в магазине протухшую селёдку, вы её тоже съедаете, говоря, что вот люди её выловили, посолили, привезли в магазин? Или если исключить деньги — вы покупаете в магазине пиво и вам в подарок дают протухшую селёдку?

annoynymous ★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

2anonymous >я думаю что, те у кого есть какие-либо сложности в жизни, >возможно, с женщинами или размером, или еще чем, здесь >обсираюет все и вся, чтобы себя хоть как-то морально >удовлетворить. Показать самим себе что они хоть на что-то >спопобсны и могут огрызаться. Все. Прорались. Подняли сами в >своих глазах виртуальную планку и _удовлетворились__. Ну пусть >хоть так удоволетворятются.

Таки и вы есть тот засранец, которому стоит просратся

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

Еще одна быдло-статейка для быдло-lsocket-программистов. Че-нибудь поинтереснее не могли написать.

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

>Товарищ, а также остальные онанизмусы, вы идиоты? Если человек выставляет своё произведение на всеобщее обозрение, он должен быть готов принять дозу критики.

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

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

Я с того-же сайта прочитал дипломную работу http://linuxkernel.ru/store/knm.pdf "Разработка ядра Linux". Если сейчас такие дипломные работы пишут, то чему тогда в институтах учат?

laune ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

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

Было слово «белиберда», слова «говно» не было. Статья действительно хреново написана:

1) Стилистика (сложно-сложно-деепричастно-подчинённые предложения не рулят)

2) Опечатки

3) Почему часть кода раскрашена, а часть нет?

По содержанию:

4) Зачем Ассемблер?!

5) Какова целевая аудитория?

На орфографию и пунктуацию закроем глаза. Но вот на это я закрыть глаза не могу:

…В виду нынешней дикой занятости, просто нет времени облечь все материалы в подобающей того вид.… // А того вид ещё подобающей?

…Мы все должны быть благодраны Артему…

…Артем, написал введение, изменил местами стиль, исправил ошибки и отмакетировал.… // А, ещё, Артём, любит, запятые, пихать, везде.

…Из данного участка кода видно, что если значение аргумента protocol было указано отлично от нуля (т.е. IPPROTO_IP), то не искать соответствие пары тип/протокол для данного семейства протоколов, т.е. интернет, с целью определения протокола, для которого нужно создать сокет… // это вообще выше моего сознания

И так далее, всё описывать нет ни времени, ни желания. Если автор хочет писать статьи, то пусть хотя бы почитает книги и статьи других авторов, чтобы понять, как же именно должно быть выстроено повествование, как нужно оформлять код и как отсекать лишнее.

annoynymous ★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

>Я с того-же сайта прочитал дипломную работу http://linuxkernel.ru/store/knm.pdf "Разработка ядра Linux". Если сейчас такие дипломные работы пишут, то чему тогда в институтах учат?

песцед, говно!

выжимка из O`reily "Understanding Linux kernel". или около того. Но убило больше всего то, что сделан этот pdf в Ворде!!! ндаааа.......

scyld ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

что касается статьи автора:

Автор разбирается в ассемблере, но по данной статье судить о степени знаний в этой области нельзя, т.к., кроме asm-i386 есть ещё x86-mmx/sse/sse-ii, x86_64, не говоря уже о других архитектурах, типа MIPS или ARM.

Так же автор хорошо понимает как происходит системный вызов в архитектуре x86. Но какое отношение это имеет к socket в ядре - непонятно.

Хорошо было бы, если бы автор рассмотрел написание модуля ядра, поддерживающего socket (по-русски - гнёзда). Хотя бы на примере простенького IRDA-socket модуля mcs7780.

Непонятно выраение автора "во многих книгах написано.... но это неверно..." Непонятно, почему неверно: потому, что это расходится со стандартом, или потому, что такова реализация в ядре linux ??

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

scyld ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

ОК, на орфографические ошибки тут уже до меня
указывали, но эту никто не заметил, в то время
как я от неё долго смеялся:
---
Код функции sock_create распложен в файле net/socket.c Эта функция
вызывает __sock_create, расположенную в том же файле, указывая в
качестве последнего параметра нулю.
---
Ну что, будем и дальше нулю всем показывать в
качестве последнего параметра? :)

Ну а если по делу...
Вот это, к примеру, что:
---
container_of является макросом, который расширяется препроцессором в
расширение gcc и определяется в include/linux/kernel.h
Речь о gcc extention пойдет в отдельной статье.
---
Типа, очень умно сказано? Вот только дальше приводится
текст этого самого container_of, и никакого отношения
к расширениям gcc он явно не имеет. Или я вижу плохо?

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

http://bash.org.ru/quote/392073

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

Как же сложно написано. Честно и усердно пытался вникнуть в ход мыслей автора -- хоть убей, не получается. Все-таки, необходима методичность в деле написания статей. А то получается а-ля "Благодарим за то, что мы, несмотря ни на что."(с)

balodja ★★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> выжимка из O`reily "Understanding Linux kernel". или около того. Но убило больше всего то, что сделан этот pdf в Ворде!!! ндаааа.......

LDD к примеру то-же явно не в LaTeX писан и что с того? как раз это не имеет никакого значения.

// wbr

klalafuda ★☆☆ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> socket (по-русски - гнёзда)

Сам ты гнездо, иди гнездись. Гыгыгы. Сокет он и в африке сокет, а протокол они и есть протокол, так что всем гуманитариям, борцам за чистоту русского языка вперед апстену.

Давно не видел таких тупых докопок.

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

Даааа. С русским языком автор не дружит совсем.

По содержанию: стиль "что вижу то и пою". В одну кучу зачем-то свалено описание механизма вызова syscall'ов и работы сокетов.

Общее впечатление: написал студент, впервые увидевший как работает ядро, и решивший срочно поделиться с миром своим открытием. На три года невылезания из ядра ну никак не тянет.

execve ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

2execve * (*) (18.09.2007 1:54:13)

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

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> этот студент реализовал, на сколько я знаю, два больших коммерческих проекта по ядру.

Названия проектов в студию.

> И студентом он был когда ты еще на двченок муструбировал.

Тем хуже для него.

execve ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> Названия проектов в студию.

один не помню, вернее не знаю.

Если у тебя комплексы, напиши человеку, спроси. Но, на сколько я его знаю, они лишь посмеется в ответ на такое предложение. Мериться письками удел слабых. А взрослые умом люди никому ничего не доказывают, а вообще предпочитают оставаться в тени чтобы не светиться. А парни в том году конечно за пол года проект сбацали............. ну в общем, давай, уважаемый, execve, призанем что статья - слабая, автор - слабак. Ты парень - солидный, профи. Одним взглядом можешь составить психологический портрет человека по статье. Ресурс LinuxKernel.ru для слабаков. Никому не нужен.

Да, я принимаю твою точку зрения. Ты спец. Все что не для тебя - плохо. Хочешь, спроси сам у автора. Я спорить с тобой больше не буду. А то опять скажут, что я воздух просто так сотрясаю............. на очередной линукс пати :)

anonymous ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

> Если у тебя комплексы, напиши человеку, спроси. Но, на сколько я его знаю, они лишь посмеется в ответ на такое предложение. Мериться письками удел слабых. А взрослые умом люди никому ничего не доказывают, а вообще предпочитают оставаться в тени чтобы не светиться. А парни в том году конечно за пол года проект сбацали............. ну в общем, давай, уважаемый, execve, призанем что статья - слабая, автор - слабак. Ты парень - солидный, профи. Одним взглядом можешь составить психологический портрет человека по статье. Ресурс LinuxKernel.ru для слабаков. Никому не нужен.

> Да, я принимаю твою точку зрения. Ты спец. Все что не для тебя - плохо. Хочешь, спроси сам у автора. Я спорить с тобой больше не буду. А то опять скажут, что я воздух просто так сотрясаю............. на очередной линукс пати :)

Ну, прямо Бэтмен какой-то из Шервудского леса.

annoynymous ★★ ()

Re: Реализация системных вызовов работы с сокетами в ядре Linux. Создание сокета.

>чтобы понять, что картина плохая, не обязательно уметь рисовать. вполне достаточно иметь глаза.

мощно. а сейчас ты нам начнешь пеарить "квадрат Малевича", любитель поотстаивать сомнительные прелести вантуза?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.