kakvo e sockets...
11 отговора
610 прегледа
kakvo e sockets...
Znam 4e za mnogo ot vas tazi tema nqma da predstavlqva interes,no 4esto pitam tuk za kakvo li ne i reshih i za tova da popitam...ne mi e qsno kakvo e tova socket,dosega 4etoh iz neta razni helpove,i t.n. oba4e vse oshte mi e mygla...kajete mi s dve tri dumi kato kakvo da si gi predstavq tiq socketi...
10x na vsi4ki :)
10x na vsi4ki :)
Re: kakvo e sockets...
Сокета (порта) е това което показва, кое приложение на хоста трябва да приеме съответния IP пакет, съответно за демоните сокета указва къде да слушат за пакети предназначени за тях.
IP - определя адреса;
протокола(TCP/UDP/ICMP ...) определя формата на информацията;
сокета определя кое приложение на съответния IP адрес ще обработи информацията.
По-подробно в RFC-тата
.

IP - определя адреса;
протокола(TCP/UDP/ICMP ...) определя формата на информацията;
сокета определя кое приложение на съответния IP адрес ще обработи информацията.
По-подробно в RFC-тата
Re: kakvo e sockets...
10x :) stoplih,malko smeshno no neznaeh to4no kakvo e :) RFC - shte pro4eta, pone za 4etene stavam :) pitam az zashtoto edno priqtel4e pishe nqkakvi programi mlad entusiast e i vse za socketi mi govori no sega nqma kak da go pitam vav Canada e :) ve4e podrazbiram za kakvo m i e govoril :)
Re: kakvo e sockets...
What is a socket?
A socket is formally defined as an endpoint for communication between an application program, and the underlying network protocols. This odd collection of words
simply means that the program reads information from a socket in order to read from the network, writes information to it in order to write to the network, and sets
sockets options in order to control protocol options. From the programmer's point of view, the socket is identical to the network. Just like a file descriptor is the endpoint
of disk operations.
A socket is formally defined as an endpoint for communication between an application program, and the underlying network protocols. This odd collection of words
simply means that the program reads information from a socket in order to read from the network, writes information to it in order to write to the network, and sets
sockets options in order to control protocol options. From the programmer's point of view, the socket is identical to the network. Just like a file descriptor is the endpoint
of disk operations.
Re: kakvo e sockets...
spored niakoi dokumentacii, "socket" e kombinaciata "IPaddress:port" - t.e. tova e dvojka 4isla, koito opredeljat ednozna4no mashinata i prilojenieto ne neja, za koito sa prednazna4eni dannite. Po to4no tazi definicia sa otnasja za TCP/UDP socketi.
Ot programiska gledna to4ka, "socket" e neshto kato fajlov descriptor (ili za po-prosto - edin fajl), 4rez kojto se izvursva komunikaciata po mrejata.
Ot programiska gledna to4ka, "socket" e neshto kato fajlov descriptor (ili za po-prosto - edin fajl), 4rez kojto se izvursva komunikaciata po mrejata.
Re: kakvo e sockets...
Blagodarq vi:), da si kaja 4estno ...dolu gore shvanah,problema e tam 4e imam propuski tuk tam i zatova ponqkoga zadavam glupavi vyprosi, qvno imam oshte kakvo da 4eta,no vse pak pridobih predstava:) ..obeshtavam sledvashtiqt mi posting da e po interesen :))
Re: kakvo e sockets...
Hmm tezi dokumentacii sigurno ti si gi pisal :)
"socket e dvoikata host:port" tova e absurdna prostotiq.
socket != file descriptor tyi kato file descriptor-a predstavlqva 2 baita identifikator,koeto shte se syglasish che nqma nishto obshto sys socket-a nali?
Ot programistka gledna tochka socket-a ne e tochno file makar che sys socketite se raboti kakto s failove (low level IO - read/write,a osven tova im se assign-va FD). Vse pak pri failovete ne se govori za adresno prostranstvo,protokol,etc. Za da otvorish fail ne se vika socket/bind/connect/accept, kakto i za da otvorish socket ne se vika open/fopen nali?
Vij ot kernelska gledna tochka mejdu socket i file nqma mnogo razlika...
I vsi4ko tova e chasten sluchai otnasqsht se za sistemi po/blizki do POSIX standarta. Pri winbozata primerno socketite niamat nishto obshto s failovete.
Za tazi kritika mnogo hora mogat da sporqt,az lichno nqmam nishto protiv.
bye zasega :)
"socket e dvoikata host:port" tova e absurdna prostotiq.
socket != file descriptor tyi kato file descriptor-a predstavlqva 2 baita identifikator,koeto shte se syglasish che nqma nishto obshto sys socket-a nali?
Ot programistka gledna tochka socket-a ne e tochno file makar che sys socketite se raboti kakto s failove (low level IO - read/write,a osven tova im se assign-va FD). Vse pak pri failovete ne se govori za adresno prostranstvo,protokol,etc. Za da otvorish fail ne se vika socket/bind/connect/accept, kakto i za da otvorish socket ne se vika open/fopen nali?
Vij ot kernelska gledna tochka mejdu socket i file nqma mnogo razlika...
I vsi4ko tova e chasten sluchai otnasqsht se za sistemi po/blizki do POSIX standarta. Pri winbozata primerno socketite niamat nishto obshto s failovete.
Za tazi kritika mnogo hora mogat da sporqt,az lichno nqmam nishto protiv.
bye zasega :)
Re: kakvo e sockets...
> "socket e dvoikata host:port" tova e absurdna prostotiq.
Според мен доста точно отразява смисъла на понятието.
> socket != file descriptor tyi kato file descriptor-a predstavlqva 2 baita
> identifikator,
20 бита в по-новите ядра, въпреки че това не променя смисъла на нещата.
> koeto shte se syglasish che nqma nishto obshto sys socket-a nali?
На практика файловите дескриптори са начинът по който потребителските програми виждат сокетите. За една потребителска програма има много малка разлика дали един дескриптор представлява файл или сокет, защото смисълът на read/write/close е един и същ за файл и за сокет.
> Ot programistka gledna tochka socket-a ne e tochno file makar che sys
> socketite se raboti kakto s failove (low level IO - read/write,a osven tova im se
> assign-va FD).
Идеологията на UNIX е "Всичко е файл". Съответно всички API-та се разработват в тази посока.
> Vse pak pri failovete ne se govori za adresno prostranstvo,protokol,etc. Za da
> otvorish fail ne se vika socket/bind/connect/accept, kakto i za da otvorish socket
> ne se vika open/fopen nali?
Три от горните функции (socket/connect/accept) не работят със сокета, в смисъл че в момента на тяхното извикване този обект просто не съществува. bind-a работи с файлови дескриптори от тип сокет. За файлов дескриптор от друг тип просто ще върне грешка. За справка виж:
man bind
...
int bind (int sockfd, ...);
...
ERRORS
...
EBADFD sockfd is not a valid descriptor.
...
Т.е. всички функции които си споменал не работят със сокети а с файлови дескриптори.
> Vij ot kernelska gledna tochka mejdu socket i file nqma mnogo razlika...
Просто потребителския код винаги работи само със дескриптори. Ядрото прави mapping между дескриптора и съответния обект (в случая сокет).
Даже в случая със connect/accept семантиката на функцията е "Дай ми *дескриптор* на сокета с еди-какви си параметри."
> I vsi4ko tova e chasten sluchai otnasqsht se za sistemi po/blizki do POSIX
> standarta. Pri winbozata primerno socketite niamat nishto obshto s failovete.
Под Windows операциите със сокети са подмножество от операциите възможни под BSD (с изключение на overlapped сокетите и асинхронните известявания. Последните обаче се реализират сравнително лесно и под Linux). За съжаление обаче наистина в M$ са реализирали доста осакатена версия на BSD сокетите.
Това не е точно критика, а по-скоро доуточняване на нещата.
Според мен доста точно отразява смисъла на понятието.
> socket != file descriptor tyi kato file descriptor-a predstavlqva 2 baita
> identifikator,
20 бита в по-новите ядра, въпреки че това не променя смисъла на нещата.
> koeto shte se syglasish che nqma nishto obshto sys socket-a nali?
На практика файловите дескриптори са начинът по който потребителските програми виждат сокетите. За една потребителска програма има много малка разлика дали един дескриптор представлява файл или сокет, защото смисълът на read/write/close е един и същ за файл и за сокет.
> Ot programistka gledna tochka socket-a ne e tochno file makar che sys
> socketite se raboti kakto s failove (low level IO - read/write,a osven tova im se
> assign-va FD).
Идеологията на UNIX е "Всичко е файл". Съответно всички API-та се разработват в тази посока.
> Vse pak pri failovete ne se govori za adresno prostranstvo,protokol,etc. Za da
> otvorish fail ne se vika socket/bind/connect/accept, kakto i za da otvorish socket
> ne se vika open/fopen nali?
Три от горните функции (socket/connect/accept) не работят със сокета, в смисъл че в момента на тяхното извикване този обект просто не съществува. bind-a работи с файлови дескриптори от тип сокет. За файлов дескриптор от друг тип просто ще върне грешка. За справка виж:
man bind
...
int bind (int sockfd, ...);
...
ERRORS
...
EBADFD sockfd is not a valid descriptor.
...
Т.е. всички функции които си споменал не работят със сокети а с файлови дескриптори.
> Vij ot kernelska gledna tochka mejdu socket i file nqma mnogo razlika...
Просто потребителския код винаги работи само със дескриптори. Ядрото прави mapping между дескриптора и съответния обект (в случая сокет).
Даже в случая със connect/accept семантиката на функцията е "Дай ми *дескриптор* на сокета с еди-какви си параметри."
> I vsi4ko tova e chasten sluchai otnasqsht se za sistemi po/blizki do POSIX
> standarta. Pri winbozata primerno socketite niamat nishto obshto s failovete.
Под Windows операциите със сокети са подмножество от операциите възможни под BSD (с изключение на overlapped сокетите и асинхронните известявания. Последните обаче се реализират сравнително лесно и под Linux). За съжаление обаче наистина в M$ са реализирали доста осакатена версия на BSD сокетите.
Това не е точно критика, а по-скоро доуточняване на нещата.
Re: kakvo e sockets...
>> "socket e dvoikata host:port" tova e absurdna prostotiq.
> Според мен доста точно отразява смисъла на понятието.
Всъщност двойката host:port с които ядрото е осъществило връзка. Все пак не бих нарекъл горното "абсурдно".
> Според мен доста точно отразява смисъла на понятието.
Всъщност двойката host:port с които ядрото е осъществило връзка. Все пак не бих нарекъл горното "абсурдно".
а бе penguin...
що не се рег-неш. отнема 20-30 секунди и после вместо да цвъцкаш мнения едно под друго ще можеш да редактираш първото
TANSTAAFL! There AiNt Such Thing As A Free Lunch
TANSTAAFL! There AiNt Such Thing As A Free Lunch
Re: kakvo e sockets...
Uau, ne sam predpolagal 4e shte ima tolkova protivore4iq,no predpolagam 4e tova e dobre - mneniqta vi shte poslujat i na drugi:) shvanah kakva e ideqta ( ne vqrvah 4e shte moga) . Prosto pri men stava taka 4e ne me myrzi da 4eta i ne 4akam horata na gotovo da mi snasqt vsi4ko no ponqkoga naistina trudno razbiram nqkoi neshta osobeno ako te sa svyrzani s drugi beli zoni za men :)
Blagodarq vi za vnimanieto , razbira se shte se radvam ako ima i oshte postingi no az ve4e se svetnah ,popylnih oshte edna praznina v /dev/predstavi :)
Blagodarq vi za vnimanieto , razbira se shte se radvam ako ima i oshte postingi no az ve4e se svetnah ,popylnih oshte edna praznina v /dev/predstavi :)
Re: а бе penguin...
Щото не ми е необходимо да редактирам първото при положение, че мога да цвъкам мнения едно под друго.