tcp

Autres langues

Langue: ru

Autres versions - même langue

Version: 25 ÁÐÒÅÌÑ 1999 (openSuse - 09/10/07)

Section: 7 (Divers)

îáú÷áîéå

tcp - ÐÒÏÔÏËÏÌ TCP.

ïâúïò

#include <sys/socket.h>
#include <netinet/in.h>
tcp_socket = socket(PF_INET, SOCK_STREAM, 0);

ïðéóáîéå

üÔÏ ÒÅÁÌÉÚÁÃÉÑ ÐÒÏÔÏËÏÌÁ TCP, ÏÐÒÅÄÅÌÅÎÎÏÇÏ × RFC793, RFC1122 É RFC2001 Ó ÄÏÐÏÌÎÅÎÉÑÍÉ NewReno É SACK. üÔÏÔ ÐÒÏÔÏËÏÌ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÎÁÄÅÖÎÏÅ, ÐÏÔÏËÏÏÒÉÅÎÔÉÒÏ×ÁÎÎÏÅ, ÄÕÐÌÅËÓÎÏÅ ÓÏÅÄÉÎÅÎÉÅ ÍÅÖÄÕ Ä×ÕÍÑ ÓÏËÅÔÁÍÉ ÐÏ×ÅÒÈ ip(7). TCP ÇÁÒÁÎÔÉÒÕÅÔ, ÞÔÏ ÄÁÎÎÙÅ ÐÒÉÈÏÄÑÔ × ÐÒÁ×ÉÌØÎÏÍ ÐÏÒÑÄËÅ É ÐÏ×ÔÏÒÎÏ ÐÏÓÙÌÁÅÔ ÐÒÏÐÁ×ÛÉÅ ÐÁËÅÔÙ. ïÎ ÇÅÎÅÒÉÒÕÅÔ É ÐÒÏ×ÅÒÑÅÔ ËÏÎÔÒÏÌØÎÙÅ ÓÕÍÍÙ ÄÌÑ ËÁÖÄÏÇÏ ÐÁËÅÔÁ, ÞÔÏÂÙ ×ÙÑ×ÉÔØ ÏÛÉÂËÉ ÐÅÒÅÓÙÌËÉ. TCP ÎÅ ÓÏÈÒÁÎÑÅÔ ÇÒÁÎÉÃÙ ÚÁÐÉÓÅÊ.

õ ÔÏÌØËÏ ÞÔÏ ÓÏÚÄÁÎÎÏÇÏ TCP-ÓÏËÅÔÁ ÎÅÔ ÎÉ ÕÄÁÌÅÎÎÏÇÏ, ÎÉ ÌÏËÁÌØÎÏÇÏ ÁÄÒÅÓÁ: ÏÎ ÎÅ ÐÏÌÎÏÓÔØÀ ÏÐÒÅÄÅÌÅÎ. äÌÑ ÓÏÚÄÁÎÉÑ ÉÓÈÏÄÑÝÅÇÏ TCP-ÓÏÅÄÉÎÅÎÉÑ Ó ÄÒÕÇÉÍ TCP-ÓÏËÅÔÏÍ ÎÁÄÏ ÉÓÐÏÌØÚÏ×ÁÔØ connect(2). þÔÏÂÙ ÐÒÉÎÉÍÁÔØ ÎÏ×ÙÅ ×ÈÏÄÑÝÉÅ ÓÏÅÄÉÎÅÎÉÑ, ÓÎÁÞÁÌÁ ÎÁÄÏ Ó×ÑÚÁÔØ ÓÏËÅÔ Ó ÌÏËÁÌØÎÙÍ ÁÄÒÅÓÏÍ É ÐÏÒÔÏÍ, ÉÓÐÏÌØÚÕÑ bind(2), Á ÚÁÔÅÍ ×ÙÚ×ÁÔØ listen(2), ÞÔÏÂÙ ÓÏËÅÔ ÎÁÞÁÌ "ÓÌÕÛÁÔØ", ÏÖÉÄÁÑ ÓÏÅÄÉÎÅÎÉÑ. ðÏÓÌÅ ÜÔÏÇÏ ÍÏÖÎÏ ÐÒÉÎÉÍÁÔØ ×ÈÏÄÑÝÉÅ ÓÏÅÄÉÎÅÎÉÑ Ó ÐÏÍÏÝØÀ accept(2), ÓÏÚÄÁ×ÁÑ ÐÒÉ ÜÔÏÍ ÎÏ×ÙÅ ÓÏËÅÔÙ. óÏËÅÔ, ËÏÔÏÒÙÊ ÕÓÐÅÛÎÏ ×ÙÚ×ÁÌ accept ÉÌÉ connect, Ñ×ÌÑÅÔÓÑ ÐÏÌÎÏÓÔØÀ ÏÐÒÅÄÅÌÅÎÎÙÍ É ÍÏÖÅÔ ÐÅÒÅÓÙÌÁÔØ ÄÁÎÎÙÅ. äÁÎÎÙÅ ÎÅ ÍÏÇÕÔ ÐÅÒÅÓÙÌÁÔØÓÑ ÞÅÒÅÚ ÓÏËÅÔÙ, ËÏÔÏÒÙÅ ÎÁÈÏÄÑÔÓÑ × ÓÌÕÛÁÀÝÅÍ ÓÏÓÔÏÑÎÉÉ ÉÌÉ ÅÝÅ ÎÅ ÕÓÔÁÎÏ×ÉÌÉ ÓÏÅÄÉÎÅÎÉÅ.

Linux 2.2 ÐÏÄÄÅÒÖÉ×ÁÅÔ ÄÏÐÏÌÎÅÎÉÑ Ë TCP ÄÌÑ ÏÂÅÓÐÅÞÅÎÉÑ ×ÙÓÏËÏÊ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ, ËÏÔÏÒÙÅ ÏÐÒÅÄÅÌÅÎÙ × RFC1323. ÷ ÓÐÉÓÏË ÔÁËÉÈ ÄÏÐÏÌÎÅÎÉÊ ×ÈÏÄÑÔ ÂÏÌØÛÉÅ TCP-ÏËÎÁ ÄÌÑ ÐÏÄÄÅÒÖËÉ ÌÉÎÉÊ Ó ×ÙÓÏËÏÊ ÐÒÏÐÕÓËÎÏÊ ÓÐÏÓÏÂÎÏÓÔØÀ ÉÌÉ ÂÏÌØÛÉÍÉ ÚÁÄÅÒÖËÁÍÉ. þÔÏÂÙ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÜÔÉÍ, ÎÁÄÏ Õ×ÅÌÉÞÉÔØ ÒÁÚÍÅÒÙ ÂÕÆÅÒÏ× ÐÒÉÅÍÁ É ÐÅÒÅÄÁÞÉ. éÈ ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÇÌÏÂÁÌØÎÏ Ó ÐÏÍÏÝØÀ sysctls net.core.wmem_default É net.core.rmem_default, ÉÌÉ ÖÅ ÄÌÑ ËÁÖÄÏÇÏ ÓÏËÅÔÁ × ÏÔÄÅÌØÎÏÓÔÉ, ÉÓÐÏÌØÚÕÑ ÏÐÃÉÉ ÓÏËÅÔÁ SO_SNDBUF É SO_RCVBUF. íÁËÓÉÍÁÌØÎÙÅ ÒÁÚÍÅÒÙ ÂÕÆÅÒÏ× ÓÏËÅÔÁ ÏÇÒÁÎÉÞÅÎÙ ÇÌÏÂÁÌØÎÙÍÉ sysctl-ÚÎÁÞÅÎÉÑÍÉ net.core.rmem_max É net.core.wmem_max. âÏÌÅÅ ÐÏÄÒÏÂÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÓÍÏÔÒÉ × socket(7).

TCP ÐÏÄÄÅÒÖÉ×ÁÅÔ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÅ ÓÏÏÂÝÅÎÉÑ. ÷ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÅ ÓÏÏÂÝÅÎÉÑ ÉÓÐÏÌØÚÕÀÔÓÑ, ÞÔÏÂÙ ÄÁÔØ ÓÉÇÎÁÌ ÐÏÌÕÞÁÔÅÌÀ, ÞÔÏ × ÐÏÔÏËÅ ÄÁÎÎÙÈ ÅÓÔØ ÎÅËÏÔÏÒÏÅ ×ÁÖÎÏÅ ÓÏÏÂÝÅÎÉÅ É ÅÇÏ ÎÕÖÎÏ ÏÂÒÁÂÏÔÁÔØ ËÁË ÍÏÖÎÏ ÓËÏÒÅÅ. þÔÏÂÙ ÐÏÓÌÁÔØ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÅ ÓÏÏÂÝÅÎÉÅ, ÎÁÄÏ ÕËÁÚÁÔØ ÏÐÃÉÀ MSG_OOB × send(2). ðÒÉ ÐÏÌÕÞÅÎÉÉ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÇÏ ÓÏÏÂÝÅÎÉÑ ÑÄÒÏ ÐÏÓÙÌÁÅÔ ÓÉÇÎÁÌ SIGURG ÌÉÂÏ ÞÉÔÁÀÝÅÍÕ ÐÒÏÃÅÓÓÕ, ÌÉÂÏ ÐÒÏÃÅÓÓÕ ÉÌÉ ÇÒÕÐÐÅ ÐÒÏÃÅÓÓÏ×, ËÏÔÏÒÙÅ ÂÙÌÉ ÎÁÚÎÁÞÅÎÙ ÓÏËÅÔÕ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ioctls FIOCSPGRP ÉÌÉ FIOCSETOWN. åÓÌÉ ÕËÁÚÁÎÁ ÏÐÃÉÑ ÓÏËÅÔÁ SO_OOBINLINE, ÔÏ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÅ ÓÏÏÂÝÅÎÉÅ ÐÏÍÅÝÁÅÔÓÑ × ÏÂÙÞÎÙÊ ÐÏÔÏË ÄÁÎÎÙÈ (É ÅÇÏ ÎÁÌÉÞÉÅ ÍÏÖÅÔ ÂÙÔØ ÐÒÏ×ÅÒÅÎÏ Ó ÐÏÍÏÝØÀ ioctl SIOCATMARK), × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÏÎÏ ÍÏÖÅÔ ÂÙÔØ ÐÏÌÕÞÅÎÏ ÔÏÌØËÏ ËÏÇÄÁ ÄÌÑ sendmsg(2) ÕÓÔÁÎÏ×ÌÅÎ ÆÌÁÇ MSG_OOB.

æïòíáôù áäòåóï÷

TCP ÐÏÓÔÒÏÅÎ ÐÏ×ÅÒÈ IP (ÓÍÏÔÒÉ ip(7)). æÏÒÍÁÔÙ ÁÄÒÅÓÏ×, ÏÐÒÅÄÅÌÅÎÎÙÅ × ip(7), ÐÒÉÍÅÎÉÍÙ Ë TCP. TCP ÐÏÄÄÅÒÖÉ×ÁÅÔ ÔÏÌØËÏ ÓÏÅÄÉÎÅÎÉÑ ÔÉÐÁ ÔÏÞËÁ-ÔÏÞËÁ; ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÙÅ É ÇÒÕÐÐÏ×ÙÅ ÓÏÏÂÝÅÎÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ.

SYSCTL-úîáþåîéñ

üÔÉ sysctl-ÚÎÁÞÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÄÏÓÔÕÐÎÙ Ó ÐÏÍÏÝØÀ ÆÁÊÌÏ× /proc/sys/net/ipv4/* ÉÌÉ ÞÅÒÅÚ ÉÎÔÅÒÆÅÊÓ sysctl(2). ëÒÏÍÅ ÔÏÇÏ, ÂÏÌØÛÉÎÓÔ×Ï sysctls IP ÐÒÉÍÅÎÉÍÙ É Ë TCP; ÓÍÏÔÒÉ ip(7).
tcp_window_scaling
÷ËÌÀÞÁÅÔ ÍÁÓÛÔÁÂÉÒÏ×ÁÎÉÅ TCP-ÏËÏÎ, ÏÐÉÓÁÎÎÏÅ × RFC1323.
tcp_sack
÷ËÌÀÞÁÅÔ ×ÙÂÏÒÏÞÎÏÅ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ TCP, ÏÐÉÓÁÎÎÏÅ × RFC2018.
tcp_timestamps
÷ËÌÀÞÁÅÔ TCP timestamps, ÏÐÉÓÁÎÎÙÅ × RFC1323.
tcp_fin_timeout
óËÏÌØËÏ ÓÅËÕÎÄ ÖÄÁÔØ ÚÁËÌÀÞÉÔÅÌØÎÙÊ FIN-ÐÁËÅÔ ÐÅÒÅÄ ÐÒÉÎÕÄÉÔÅÌØÎÙÍ ÚÁËÒÙÔÉÅÍ ÓÏËÅÔÁ. óÔÒÏÇÏ ÇÏ×ÏÒÑ, ÜÔÏ ÎÁÒÕÛÅÎÉÅ ÓÐÅÃÉÆÉËÁÃÉÉ TCP, ÎÏ ÜÔÏ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÒÅÄÏÔ×ÒÁÝÅÎÉÑ ÁÔÁË ÔÉÐÁ ïÔËÁÚ-×-ïÂÓÌÕÖÉ×ÁÎÉÉ (Denial of service).
tcp_keepalive_probes
íÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï 'keep-alive'-ÐÁËÅÔÏ× TCP, ËÏÔÏÒÏÅ ÂÕÄÅÔ ÐÏÓÌÁÎÏ ÄÏ ÔÏÇÏ ËÁË ÓÏÅÄÉÎÅÎÉÅ ÂÕÄÅÔ ÓÞÉÔÁÔØÓÑ ÒÁÚÏÒ×ÁÎÎÙÍ. 'Keep-alive'-ÐÁËÅÔÙ ÐÅÒÅÄÁÀÔÓÑ ÔÏÌØËÏ ÅÓÌÉ ÏÐÃÉÑ ÓÏËÅÔÁ SO_KEEPALIVE ×ËÌÀÞÅÎÁ.
tcp_keepalive_time
óËÏÌØËÏ ÓÅËÕÎÄ ÄÏÌÖÎÏ ÐÒÏÊÔÉ Ó ÍÏÍÅÎÔÁ ÐÒÅËÒÁÝÅÎÉÑ ÐÅÒÅÄÁÞÉ ÄÁÎÎÙÈ É ÄÏ ÎÁÞÁÌÁ ÐÏÓÙÌËÉ 'keep-alive'-ÐÁËÅÔÏ× ÞÅÒÅÚ ÓÏÅÄÉÎÅÎÉÅ. ðÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ ÞÉÓÌÏ ÒÁ×ÎÏ 10800 ÓÅËÕÎÄÁÍ (3 ÞÁÓÁÍ).
tcp_max_ka_probes
óËÏÌØËÏ 'keep-alive'-ÐÁËÅÔÏ× ÂÕÄÅÔ ÐÏÓÌÁÎÏ ÚÁ ÐÒÏÍÅÖÕÔÏË slow timer run. ÷Ï ÉÚÂÅÖÁÎÉÅ ×ÓÐÙÛÅË ËÏÌÉÞÅÓÔ×Á ÐÏÓÙÌÁÅÍÙÈ ÐÁËÅÔÏ× ÜÔÁ ×ÅÌÉÞÉÎÁ ÄÏÌÖÎÁ ÂÙÔØ ÎÅ ÏÞÅÎØ ÂÏÌØÛÏÊ.
tcp_stdurg
÷ËÌÀÞÁÅÔ ÓÔÒÏÇÕÀ ÉÎÔÅÒÐÒÅÔÁÃÉÀ ÐÏÌÑ ÕËÁÚÁÔÅÌÑ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÓÔÉ TCP, ÏÐÉÓÁÎÎÕÀ × RFC793. ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ BSD-ÓÏ×ÍÅÓÔÉÍÁÑ ÉÎÔÅÒÐÒÅÔÁÃÉÑ ÕËÁÚÁÔÅÌÑ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÓÔÉ, ÓÏÇÌÁÓÎÏ ËÏÔÏÒÏÊ ÏÎ ÕËÁÚÙ×ÁÅÔ ÎÁ ÐÅÒ×ÙÊ ÂÁÊÔ ÐÏÓÌÅ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÈ ÄÁÎÎÙÈ. éÎÔÅÒÐÒÅÔÁÃÉÑ, ÄÁÎÎÁÑ × RFC793, ÔÒÅÂÕÅÔ, ÞÔÏÂÙ ÏÎ ÕËÁÚÙ×ÁÌ ÎÁ ÐÏÓÌÅÄÎÉÊ ÂÁÊÔ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÈ ÄÁÎÎÙÈ. ÷ËÌÀÞÅÎÉÅ ÜÔÏÊ ÏÐÃÉÉ ÍÏÖÅÔ ÐÒÉ×ÅÓÔÉ Ë ÐÒÏÂÌÅÍÁÍ ×ÚÁÉÍÏÄÅÊÓÔ×ÉÑ ÒÁÚÎÙÈ ÓÉÓÔÅÍ.
tcp_syncookies
÷ËÌÀÞÁÅÔ TCP syncookies. ñÄÒÏ ÄÏÌÖÎÏ ÂÙÔØ ÓËÏÍÐÉÌÉÒÏ×ÁÎÏ Ó ÏÐÃÉÅÊ CONFIG_SYN_COOKIES. Syncookies ÚÁÝÉÝÁÀÔ ÓÏËÅÔ ÏÔ ÐÅÒÅÇÒÕÚËÉ, ËÏÇÄÁ ÐÒÉÈÏÄÉÔ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÁÐÒÏÓÏ× ÎÁ ÓÏÚÄÁÎÉÅ ÓÏÅÄÉÎÅÎÉÑ. åÓÌÉ ×ËÌÀÞÉÔØ syncookies, ËÌÉÅÎÔÙ ÂÏÌØÛÅ ÎÅ ÓÍÏÇÕÔ ÏÂÎÁÒÕÖÉÔØ ÐÅÒÅÇÒÕÚËÕ ÍÁÛÉÎÙ Ó ÍÁÌÅÎØËÉÍ ÔÁÊÍ-ÁÕÔÏÍ.
tcp_max_syn_backlog
äÌÉÎÁ ÏÞÅÒÅÄÉ ÚÁÐÒÏÓÏ× ÎÁ ÕÓÔÁÎÏ×ÌÅÎÉÅ ÓÏÅÄÉÎÅÎÉÑ, ÄÌÑ ËÁÖÄÏÇÏ ÏÔÄÅÌØÎÏÇÏ ÓÏËÅÔÁ. îÁÞÉÎÁÑ Ó Linux 2.2, ÜÔÏ ÞÉÓÌÏ, ÏÐÒÅÄÅÌÑÅÍÏÅ × listen(2), ÕËÁÚÙ×ÁÅÔ ÄÌÉÎÕ ÏÞÅÒÅÄÉ ÚÁÐÒÏÓÏ× ÎÁ ÕÓÔÁÎÏ×ÌÅÎÉÅ ÓÏÅÄÉÎÅÎÉÑ ÏÔ ÓÏËÅÔÏ×, Ó ËÏÔÏÒÙÍÉ ÕÖÅ ÕÓÔÁÎÏ×ÌÅÎ ËÏÎÔÁËÔ. íÁËÓÉÍÁÌØÎÁÑ ÄÌÉÎÁ ÏÞÅÒÅÄÉ ÓÏËÅÔÏ×, Ó ËÏÔÏÒÙÍÉ ÓÏÅÄÉÎÅÎÉÅ ÅÝÅ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ (ËÏÔÏÒÙÅ ÎÁÈÏÄÑÔÓÑ × ÓÏÓÔÏÑÎÉÉ SYN_RECV ), ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÁ ÜÔÉÍ sysctl ÄÌÑ ËÁÖÄÏÇÏ ÏÔÄÅÌØÎÏÇÏ ÓÏËÅÔÁ, ËÏÔÏÒÙÊ ÎÁÈÏÄÉÔÓÑ × ÓÏÓÔÏÑÎÉÉ ÐÒÏÓÌÕÛÉ×ÁÎÉÑ. åÓÌÉ ÚÁÐÒÏÓÏ× ÎÁ ÓÏÅÄÉÎÅÎÉÅ ÐÒÉÈÏÄÉÔ ÂÏÌØÛÅ, ÔÏ Linux ÎÁÞÉÎÁÅÔ ÉÈ ÏÔÂÒÁÓÙ×ÁÔØ. åÓÌÉ ×ËÌÀÞÅÎÙ syncookies, ÔÏ ÓÉÓÔÅÍÁ ÐÒÏÄÏÌÖÁÅÔ ÏÔ×ÅÞÁÔØ ÎÁ ÚÁÐÒÏÓÙ, Á ÏÐÉÓÙ×ÁÅÍÏÅ ÏÇÒÁÎÉÞÅÎÉÅ ÎÁ ÄÌÉÎÕ ÏÞÅÒÅÄÉ ÚÁÐÒÏÓÏ× ÆÁËÔÉÞÅÓËÉ ÉÇÎÏÒÉÒÕÅÔÓÑ.
tcp_retries1
ïÐÒÅÄÅÌÑÅÔ ÓËÏÌØËÏ ÒÁÚ ÐÏÓÙÌÁÔØ ÏÔ×ÅÔ ÎÁ ÚÁÐÒÏÓ ÕÓÔÁÎÏ×ÌÅÎÉÑ ÓÏÅÄÉÎÅÎÉÑ.
tcp_retries2
ïÐÒÅÄÅÌÑÅÔ ÓËÏÌØËÏ ÒÁÚ ÐÏÓÙÌÁÔØ TCP-ÐÁËÅÔ ÐÒÉ ÕÖÅ ÕÓÔÁÎÏ×ÌÅÎÎÏÍ ÓÏÅÄÉÎÅÎÉÉ, ÄÏ ÔÏÇÏ ËÁË ÓÏÅÄÉÎÅÎÉÅ ÂÕÄÅÔ ÓÞÉÔÁÔØÓÑ ÒÁÚÏÒ×ÁÎÎÙÍ.
tcp_syn_retries
ïÐÒÅÄÅÌÑÅÔ, ÓËÏÌØËÏ ÒÁÚ ÐÙÔÁÔØÓÑ ÐÏÓÌÁÔØ SYN-ÚÁÐÒÏÓ ÄÌÑ ÕÓÔÁÎÏ×ÌÅÎÉÑ ÓÏÅÄÉÎÅÎÉÑ Ó ÕÄÁÌÅÎÎÙÍ ÈÏÓÔÏÍ ÄÏ ÔÏÇÏ ËÁË ÓÏÅÄÉÎÅÎÉÅ ÂÕÄÅÔ ÓÞÉÔÁÔØÓÑ ÒÁÚÏÒ×ÁÎÎÙÍ É ÓÏÏÂÝÅÎÏ Ï ÏÛÉÂËÅ. üÔÏ ÞÉÓÌÏ ÄÏÌÖÎÏ ÂÙÔØ ÍÅÎØÛÅ 255. üÔÏÔ ÔÁÊÍ-ÁÕÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÔÏÌØËÏ ÄÌÑ ÉÓÈÏÄÑÝÉÈ ÓÏÅÄÉÎÅÎÉÊ; ËÏÌÉÞÅÓÔ×Ï ÐÏ×ÔÏÒÎÙÈ ÐÅÒÅÄÁÞ ÄÌÑ ×ÈÏÄÑÝÉÈ ÓÏÅÄÉÎÅÎÉÊ ÏÐÒÅÄÅÌÑÅÔÓÑ tcp_retries1.
tcp_retrans_collapse
ðÙÔÁÔØÓÑ ÌÉ ÐÏÓÙÌÁÔØ ÐÏÌÎÏÒÁÚÍÅÒÎÙÅ ÓÏÏÂÝÅÎÉÑ ÐÒÉ ÐÏ×ÔÏÒÎÙÈ ÐÅÒÅÄÁÞÁÈ. éÓÐÏÌØÚÕÅÔÓÑ, ÞÔÏÂÙ ÏÂÏÊÔÉ ÏÛÉÂËÉ × ÎÅËÏÔÏÒÙÈ TCP-ÓÔÅËÁÈ.

ïðãéé óïëåôá

þÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ ÉÌÉ ÕÚÎÁÔØ ÏÐÃÉÀ ÓÏËÅÔÁ TCP, ÎÁÄÏ ×ÙÚ×ÁÔØ getsockopt(2) ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÚÎÁÞÅÎÉÑ ÏÐÃÉÉ ÉÌÉ setsockopt(2) ÄÌÑ ÚÁÐÉÓÉ ÏÐÃÉÉ ÓÏËÅÔÁ, ËÏÔÏÒÙÊ ÐÒÉÎÁÄÌÅÖÉÔ ÓÅÍÅÊÓÔ×Õ SOL_TCP. ëÒÏÍÅ ÔÏÇÏ, ÂÏÌØÛÉÎÓÔ×Ï ÏÐÃÉÊ ÓÏËÅÔÁ SOL_IP ÄÅÊÓÔ×ÉÔÅÌØÎÙ ÄÌÑ ÓÏËÅÔÏ× TCP. âÏÌÅÅ ÐÏÄÒÏÂÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÓÍÏÔÒÉ × ip(7).
TCP_NODELAY
ïÔËÌÀÞÁÅÔ ÁÌÇÏÒÉÔÍ îÜÇÌÁ (Nagle). üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÐÁËÅÔÙ ×ÓÅÇÄÁ ÏÔÓÙÌÁÀÔÓÑ ÔÁË ÞÁÓÔÏ, ËÁË ÜÔÏ ×ÏÚÍÏÖÎÏ, ÂÅÚ ÐÒÉÍÅÎÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÚÁÄÅÒÖÅË; ÒÁÓÐÌÁÔÁ ÚÁ ÜÔÏ -- Õ×ÅÌÉÞÅÎÉÅ ËÏÌÉÞÅÓÔ×Á ÐÁËÅÔÏ× × ÓÅÔÉ. úÎÁÞÅÎÉÅÍ ÍÏÖÅÔ ÂÙÔØ ÎÏÌØ ÉÌÉ ÅÄÉÎÉÃÁ.
TCP_MAXSEG
õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÌÉ ÓÏÏÂÝÁÅÔ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÓÅÇÍÅÎÔÁ ÄÌÑ ÉÓÈÏÄÑÝÉÈ TCP-ÐÁËÅÔÏ×. åÓÌÉ ÚÎÁÞÅÎÉÅ ÜÔÏÊ ÏÐÃÉÉ ÚÁÄÁÎÏ ÄÏ ÕÓÔÁÎÏ×ÌÅÎÉÑ ÓÏÅÄÉÎÅÎÉÑ, ÔÏ ÏÎÏ ÔÁËÖÅ ÉÚÍÅÎÉÔ ×ÅÌÉÞÉÎÕ MSS, ËÏÔÏÒÁÑ ÓÏÏÂÝÁÅÔÓÑ ÄÒÕÇÏÊ ÓÔÏÒÏÎÅ × ÎÁÞÁÌØÎÏÍ ÐÁËÅÔÅ. úÎÁÞÅÎÉÑ, ÂÏÌØÛÉÅ ÞÅÍ MTU ÉÎÔÅÒÆÅÊÓÁ, ÉÇÎÏÒÉÒÕÀÔÓÑ É ÎÅ ÏËÁÚÙ×ÁÀÔ ×ÏÚÄÅÊÓÔ×ÉÑ.
TCP_CORK
ðÒÉ ×ËÌÀÞÅÎÉÉ ÜÔÏÊ ÏÐÃÉÉ, ÐÅÒÅÓÔÁÀÔ ÏÔÓÙÌÁÔØÓÑ ÞÁÓÔÉÞÎÙÅ ËÁÄÒÙ. ÷ÓÅ ÚÁÐÒÏÛÅÎÎÙÅ ÞÁÓÔÉÞÎÙÅ ËÁÄÒÙ ÂÕÄÕÔ ÏÔÏÓÌÁÎÙ, ËÏÇÄÁ ÜÔÁ ÏÐÃÉÑ ÓÎÏ×Á ÂÕÄÅÔ ÏÔËÌÀÞÅÎÁ. üÔÏ ÐÏÌÅÚÎÏ ÄÌÑ ÒÁÂÏÔÙ Ó ÚÁÇÏÌÏ×ËÁÍÉ ÐÅÒÅÄ ×ÙÚÏ×ÏÍ sendfile(2), ÉÌÉ ÄÌÑ ÕÌÕÞÛÅÎÉÑ ÐÒÏÐÕÓËÎÏÊ ÓÐÏÓÏÂÎÏÓÔÉ. üÔÁ ÏÐÃÉÑ ÎÅ ÄÏÌÖÎÁ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÓÏ×ÍÅÓÔÎÏ Ó ÏÐÃÉÅÊ TCP_NODELAY.

IOCTLS

üÔÉ ioctls ÍÏÇÕÔ ÂÙÔØ ÄÏÓÔÕÐÎÙ ÞÅÒÅÚ ioctl(2). ðÒÁ×ÉÌØÎÙÊ ÓÉÎÔÁËÓÉÓ:

int value;

error = ioctl(tcp_socket, ioctl_type, &value);

FIONREAD ÉÌÉ TIOCINQ
÷ÏÚ×ÒÁÝÁÅÔ ËÏÌÉÞÅÓÔ×Ï ÎÅÐÒÏÞÉÔÁÎÎÙÈ ÄÁÎÎÙÈ × ÏÞÅÒÅÄÉ, ÎÁÈÏÄÑÝÉÈÓÑ × ÂÕÆÅÒÅ ÐÒÉÅÍÁ. áÒÇÕÍÅÎÔÏÍ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌØ ÎÁ ÔÉÐ integer.
SIOCATMARK
÷ÏÚ×ÒÁÝÁÅÔ ÉÓÔÉÎÎÏÅ ÚÎÁÞÅÎÉÅ, ÅÓÌÉ ×ÓÅ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÅ ÓÏÏÂÝÅÎÉÑ ÕÖÅ ÐÏÌÕÞÅÎÙ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÊ ÐÒÏÇÒÁÍÍÏÊ. éÓÐÏÌØÚÕÅÔÓÑ ×ÍÅÓÔÅ Ó SO_OOBINLINE. áÒÇÕÍÅÎÔÏÍ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌØ ÎÁ ÔÉÐ integer, × ËÏÔÏÒÙÊ ÚÁÐÉÓÙ×ÁÅÔÓÑ ÒÅÚÕÌØÔÁÔ.
TIOCOUTQ
÷ÏÚ×ÒÁÝÁÅÔ ËÏÌÉÞÅÓÔ×Ï ÅÝÅ ÎÅ ÐÏÓÌÁÎÎÙÈ ÄÁÎÎÙÈ, ÎÁÈÏÄÑÝÉÈÓÑ × ÏÞÅÒÅÄÉ ÐÅÒÅÄÁÞÉ ÓÏËÅÔÁ, × ÐÅÒÅÄÁÎÎÙÊ ÕËÁÚÁÔÅÌØ ÎÁ ÔÉÐ integer. ë ÓÏÖÁÌÅÎÉÀ, ÒÅÁÌÉÚÁÃÉÑ ÜÔÏÇÏ ioctl ÏÛÉÂÏÞÎÁ ×Ï ×ÓÅÈ ÉÚ×ÅÓÔÎÙÈ ×ÅÒÓÉÑÈ Linux: ×ÏÚ×ÒÁÝÁÅÔÓÑ ÒÁÚÍÅÒ Ó×ÏÂÏÄÎÏÇÏ ÍÅÓÔÁ × ÏÞÅÒÅÄÉ ÐÅÒÅÄÁÞÉ (ÆÁËÔÉÞÅÓËÉ~-- ÒÁÚÍÅÒ ÂÕÆÅÒÁ ÍÉÎÕÓ ËÏÌÉÞÅÓÔ×Ï ÉÓÐÏÌØÚÏ×ÁÎÎÙÈ ÂÁÊÔ, ×ËÌÀÞÁÑ ÍÅÔÁÄÁÎÎÙÅ). üÔÏ ÂÕÄÅÔ ÉÓÐÒÁ×ÌÅÎÏ × ÓÌÅÄÕÀÝÉÈ ×ÅÒÓÉÑÈ Linux. åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ TIOCOUTQ, ÐÏÖÁÌÕÊÓÔÁ, ÓÄÅÌÁÊÔÅ ÐÒÏ×ÅÒËÕ ÎÁ ÏÂÁ ×ÁÒÉÁÎÔÁ ÐÏ×ÅÄÅÎÉÑ, ÞÔÏÂÙ ×ÁÛÁ ÐÒÏÇÒÁÍÍÁ ËÏÒÒÅËÔÎÏ ÒÁÂÏÔÁÌÁ × ÂÕÄÕÝÉÈ ×ÅÒÓÉÑÈ, Á ÔÁËÖÅ ÎÁ ÄÒÕÇÉÈ Unix'ÁÈ.

ïâòáâïôëá ïûéâïë

ðÒÉ ×ÏÚÎÉËÎÏ×ÅÎÉÉ ÏÛÉÂËÉ × ÓÅÔÉ TCP ÐÙÔÁÅÔÓÑ ÚÁÎÏ×Ï ÐÏÓÌÁÔØ ÐÁËÅÔ. åÓÌÉ ÓÐÕÓÔÑ ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ ÜÔÏ ÎÅ ÐÒÉ×ÅÄÅÔ Ë ÕÓÐÅÈÕ, ÔÏ ÂÕÄÅÔ ÓÏÏÂÝÅÎÏ ÌÉÂÏ Ï ETIMEDOUT, ÌÉÂÏ Ï ÐÏÓÌÅÄÎÅÊ ÏÛÉÂËÅ, ÐÏÌÕÞÅÎÎÏÊ × ÔÅÞÅÎÉÅ ÜÔÏÇÏ ÓÏÅÄÉÎÅÎÉÑ.

îÅËÏÔÏÒÙÍ ÐÒÉÌÏÖÅÎÉÑÍ ÔÒÅÂÕÅÔÓÑ ÂÏÌÅÅ ÂÙÓÔÒÙÊ ÓÐÏÓÏ ÉÚ×ÅÝÅÎÉÑ Ï ÏÛÉÂËÁÈ. ïÎ ÍÏÖÅÔ ÂÙÔØ ×ËÌÀÞÅÎ ÎÁ ÕÒÏ×ÎÅ SOL_IP Ó ÐÏÍÏÝØÀ ÏÐÃÉÉ ÓÏËÅÔÁ IP_RECVERR. ðÒÉ ×ËÌÀÞÅÎÉÉ ÜÔÏÊ ÏÐÃÉÉ ×ÓÅ ÐÒÉÈÏÄÑÝÉÅ ÏÛÉÂËÉ ÓÒÁÚÕ ÖÅ ÐÅÒÅÄÁÀÔÓÑ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÊ ÐÒÏÇÒÁÍÍÅ. âÕÄØÔÅ ÏÓÔÏÒÏÖÎÙ ÐÒÉ ÐÏÌØÚÏ×ÁÎÉÉ ÜÔÏÊ ÏÐÃÉÅÊ - ÏÎÁ ÄÅÌÁÅÔ TCP ÍÅÎÅÅ ÔÅÒÐÉÍÙÍ Ë ÉÚÍÅÎÅÎÉÑÍ ÍÁÒÛÒÕÔÏ× É ÄÒÕÇÉÍ ÎÏÒÍÁÌØÎÙÍ ÓÏÓÔÏÑÎÉÑÍ ÓÅÔÉ.

úáíåþáîéñ

ëÏÇÄÁ ×ÏÚÎÉËÁÅÔ ÏÛÉÂËÁ, ÐÒÉ×ÏÄÑÝÁÑ Ë ÐÏ×ÔÏÒÎÏÍÕ ÕÓÔÁÎÏ×ÌÅÎÉÀ ÓÏÅÄÉÎÅÎÉÑ, ÓÉÇÎÁÌ SIGPIPE , ×ÏÚÎÉËÁÀÝÉÊ ÐÒÉ ÚÁÐÉÓÉ × ÓÏËÅÔ, ÐÏÓÙÌÁÅÔÓÑ ÔÏÌØËÏ × ÔÏÍ ÓÌÕÞÁÅ, ÅÓÌÉ ÏÐÃÉÑ SO_KEEPOPEN ÓÏËÅÔÁ ×ËÌÀÞÅÎÁ.

õ TCP ÎÅÔ ÎÁÓÔÏÑÝÉÈ 'out-of-band' (×ÎÅÐÏÔÏËÏ×ÙÈ) ÓÏÏÂÝÅÎÉÊ: Õ ÎÅÇÏ ÅÓÔØ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÅ ÓÏÏÂÝÅÎÉÑ. ÷ Linux ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÅÓÌÉ ÄÒÕÇÁÑ ÓÔÏÒÏÎÁ ÐÒÉÓÙÌÁÅÔ ÎÏ×ÙÅ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÅ ÓÏÏÂÝÅÎÉÑ, ÔÏ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÙÅ ÓÏÏÂÝÅÎÉÑ, ËÏÔÏÒÙÅ ÐÒÉÛÌÉ ÒÁÎÅÅ, ÂÕÄÕÔ ÐÏÍÅÝÅÎÙ × ÐÏÔÏË ËÁË ÏÂÙÞÎÙÅ ÄÁÎÎÙÅ (ÄÁÖÅ ÅÓÌÉ ÏÐÃÉÑ SO_OOBINLINE ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ). üÔÏ ÏÔÌÉÞÁÅÔÓÑ ÏÔ ÓÔÅËÏ×, ÏÓÎÏ×ÁÎÎÙÈ ÎÁ BSD.

ðÏ ÕÍÏÌÞÁÎÉÀ Linux ÉÓÐÏÌØÚÕÅÔ BSD-ÓÏ×ÍÅÓÔÉÍÕÀ ÉÎÔÅÒÐÒÅÔÁÃÉÀ ÐÏÌÑ ÕËÁÚÁÔÅÌÑ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÓÔÉ. üÔÏ ÎÁÒÕÛÁÅÔ RFC1122, ÎÏ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ×ÚÁÉÍÏÄÅÊÓÔ×ÉÑ Ó ÄÒÕÇÉÍÉ ÓÔÅËÁÍÉ. üÔÏ ÍÏÖÎÏ ÉÚÍÅÎÉÔØ Ó ÐÏÍÏÝØÀ sysctl tcp_stdurg .

ëïäù ïûéâïë

EPIPE
äÒÕÇÁÑ ÓÔÏÒÏÎÁ ÎÅÏÖÉÄÁÎÎÏ ÚÁËÒÙÌÁ ÓÏËÅÔ ÉÌÉ ÂÙÌÁ ×ÙÐÏÌÎÅÎÁ ÐÏÐÙÔËÁ ÞÔÅÎÉÑ ÉÚ ÚÁËÒÙÔÏÇÏ ÓÏËÅÔÁ.
ETIMEDOUT
äÒÕÇÁÑ ÓÔÏÒÏÎÁ ÎÅ ÐÏÄÔ×ÅÒÄÉÌÁ ÐÏÌÕÞÅÎÉÅ ÐÏÓÌÁÎÎÙÈ ÄÁÎÎÙÈ ÓÐÕÓÔÑ ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ.
EAFNOTSUPPORT
õ ÐÅÒÅÄÁÀÝÅÇÏ ÓÏËÅÔÁ ÔÉÐ ÁÄÒÅÓÁ, ËÏÔÏÒÙÊ ÚÁÄÁÅÔÓÑ × sin_family, ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó AF_INET.

÷ÓÅ ËÏÄÙ ÏÛÉÂÏË, ÏÐÒÅÄÅÌÅÎÎÙÅ ÄÌÑ ip(7) ÉÌÉ ÄÌÑ ÓÏËÅÔÏ× ÜÔÏÇÏ ÓÅÍÅÊÓÔ×Á ÔÁËÖÅ ÍÏÇÕÔ ÂÙÔØ ×ÏÚ×ÒÁÝÅÎÙ ÄÌÑ TCP.

ïûéâëé òåáìéúáãéé

ïÐÉÓÁÎÙ ÎÅ ×ÓÅ ËÏÄÙ ÏÛÉÂÏË.

îÅ ÏÐÉÓÁÎ IPv6.

îÅ ÏÐÉÓÁÎÙ ÏÐÃÉÉ ÐÒÏÚÒÁÞÎÏÇÏ ÐÒÏËÓÉ.

÷åòóéé

Sysctls ÐÏÑ×ÉÌÉÓØ × Linux 2.2. IP_RECVERR Ñ×ÌÑÅÔÓÑ ÎÏ×ÏÊ ÏÓÏÂÅÎÎÏÓÔØÀ × Linux 2.2. ïÐÃÉÑ TCP_CORK ÐÏÑ×ÉÌÁÓØ × 2.2.

óíïôòé ôáëöå

socket(7), socket(2), ip(7), sendmsg(2), recvmsg(2)
RFC793, ÇÄÅ ÏÐÉÓÁÎÁ ÓÐÅÃÉÆÉËÁÃÉÑ TCP.
RFC1122, ÇÄÅ ÏÐÉÓÁÎÙ ÔÒÅÂÏ×ÁÎÉÑ TCP É ÏÐÉÓÁÎÉÅ ÁÌÇÏÒÉÔÍÁ îÜÇÌÁ (Nagle).
RFC2581, ÇÄÅ ÏÐÉÓÁÎÙ ÎÅËÏÔÏÒÙÅ ÁÌÇÏÒÉÔÍÙ TCP.

ðåòå÷ïä

Copyright (C) áÎÔÏÎ áÀÐÏ× <astray@yandex.ru> 2000