本文由 发布,转载请注明出处,如有问题请联系我们! 发布时间: 2021-08-26【网络编程】TCPIP-小笔记集合
加载中序言
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。