摘要
TCP/IP 网络编程技术手记散集,记录了我在 Linux 下学习 TCP 协议时的点点滴滴。其中,我深刻体会到了 I/O 缓存的重要性,它像是 TCP 协议的心脏,即使关闭协议也会保留数据。但要注意,关闭协议会导致未发送的数据丢失。
正文
-
序言
-
TCP/IP 网络编程技术手记散集
-
参照
序言
关键纪录TCPIP一些小手记
表明:
-
demo 根据 Linux。
TCP/IP 网络编程技术手记散集
快速入门:
I/O 缓存:
-
I/O 缓存在每一个 TCP tcp协议中独立存有。
-
I/O 缓存在建立tcp协议时自动生成。
-
即便 关掉tcp协议也会再次传送輸出缓存中滞留的数据信息。
-
关掉tcp协议将遗失键入缓存中的数据信息。
-
本端启用一次 write(),对端很有可能要分几回 read() 才可以看完。
数据信息界限:
TCP 是流式的的传输数据,信息沒有界限,必须网络层自身去界定信息界限。
UDP 是数据信息报传送,因此 协议书确保了一次只有接受一个数据信息报。
本人表述:数据信息界限意思是,数据信息是否会全自动切分,例如2个建筑结构持续存有一段运行内存中,那就是有界限的,建筑结构把其切分了。若把其数据信息拷到二维数组里边,那就是无边界的,由于分不清楚从哪里才算是分隔线。
UDP 网络编程技术:
-
UDP 是能够应用 bind() 涵数的,主要是配备当地IP和端口。若不适合,则由系统软件随即分派。
-
UDP 是能够应用 connect() 涵数的,主要是配备远侧IP和端口。若不应用,则每一次启用 sendto() 涵数时都需要设定、删掉远侧IP和端口,用时。
关掉I/O流:
-
启用
close()
后: -
键入缓冲区域的信息被丢掉。
-
輸出缓冲区域的数据信息依然能发送至目地端。
-
启用
shutdown()
后: -
关掉键入流后,键入缓冲区域的信息被丢掉。后边刚来的数据流分析,会对其开展 ACK,随后丢掉。
-
关掉輸出流后,輸出缓冲区域的数据信息依然能发送至目地端。
DNS:
-
DNS关键根据UDP。
-
现阶段全世界仅有13台网站域名根服务器。
-
并没有每条DNS查看都需要抵达根服务器的,查看是逐步查看,各个都是有缓存文件表,应查缓存文件表格中的,沒有再往汇报。
-
还可以特定当地的DNS网络服务器,只需能域名解析与IP就可以。
TCP:
-
MSS,较大报文格式段距离。在联接创建的情况下,即在推送SYN段的情况下,与此同时会将MSS发给另一方(MSS选择项只有发生在SYN段中!!!),告知对端他期待接受的TCP报文格式段数据信息一部分较大长短。
-
https://blog.csdn.net/bobozai86/article/details/87372606
tcp协议选择项:
-
tcp协议种类只有在创立时决策,之后无法再变更。
网络服务器快重新启动:
-
由于出现异常断掉后原tcp协议进到 time-wait 情况(一般会保持数分钟),都还没进到 close 情况,因此 其端口等数据信息或是被挤占的。服务器重启后无法正常的应用该端口号。
-
因此 选用
SO_REUSEADDR
设定。功效:
-
当有一个有同样本地地址和接口的socket1处在TIME_WAIT情况时,但你运行的应用程序的socket2要占有该详细地址和端口号,你的系统就需要使用该选择项。
-
SO_REUSEADDR容许同一port上运行同一网络服务器的好几个案例(好几个过程)。但每一个案例关联的IP地址是不可以同样的。在有几块网口或用IP Alias技术性的设备能够 检测这类状况。
-
SO_REUSEADDR容许单独过程关联同样的端口号到好几个socket上,但每一个socket关联的ip详细地址不一样。这和2很类似,差别可以看UNPv1。
-
SO_REUSEADDR容许完全一致的具体位置和接口的反复关联。但这只用以UDP的多播,不用以TCP。
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0