时间:2023-05-22 02:29 / 来源:未知
石油期货软件指明TCP报文在Internet上最长生存时间)个中TCP供应IP境遇下的数据牢靠传输,它事先为要发送的数据开拓好连结通道(三次握手),然后再举办数据发送;而UDP则不为IP供应牢靠性,普通用于及时的视频传播输,像rtp、rtsp即是创设正在udp的根蒂上的。
图中可能看出,三次握手的进程是正在c的connect()和s的bind()、listen()、accept()函数中竣事的,云云开拓了相对牢靠的连结通道,来传输数据。
注* TIME_WAIT 状况最大连结时辰是2 * MSL,也即是1-4分钟(MSL是最大分段生计期,指明TCP报文正在Internet上最永生计时辰)
当任事器端socket绑定当地地点并占用了端口,此时借使仓促解散;或者连结的任事器特地退出,这个时期被占用的端口不行顿时开释,必要TIME_WAIT。即使移用closesocket()普通也不会速即闭上socket,仍可连续重用该socket。以是从头启动任事器时大概会展现题目。比方MFC中正在子窗口中达成socket通讯,那么闭上子窗口再掀开就会出题目了。
处分技巧是正在bind()之前增加setsockopt()函数,废除端口绑定。
先容setsockopt()之前咱们再来回头一下三次握手同意的全体流程:
第一次握手:创设连结时,客户端发送syn包(syn=j)到任事器,并进入SYN_SEND状况,恭候任事器确认;
第二次握手:任事器收到syn包,必需确认客户的SYN(ack=j+1),同时我方也发送一个SYN包(syn=k),即SYN+ACK包,此时任事器进入SYN_RECV状况;
第三次握手:客户端收到任事器的SYN+ACK包,向任事器发送确认包ACK(ack=k+1),此包发送完毕,客户端和任事器进入ESTABLISHED状况,竣事三次握手。
1. 借使正在仍旧处于 ESTABLISHED状况下的socket(普通由端标语和符号符区别)移用closesocket(普通不会速即闭上而始末TIME_WAIT的进程)后思连续重用该socket:
TCP不行保障摄取方依序的收到包,对待必要及时显示的文献可能正在发送方发出包后筑设来自摄取方的相应,即对方收到前一个包后再发送下一个包。