目录

自律linux-第-33-天

目录

自律linux 第 33 天

今天学习的是TCP协议相关的问题,如粘包问题,发送端发送不及时就会导致数据在发送缓存区重新组包,或者接收端接收不及时,数据包堆积在接收缓存区,去接收的时候多接收了数据,这就是粘包问题,要解决粘包问题,比较简单的就是用usleep稍微睡眠一下,让接收端先接收前一个数据。而比较常用的处理方法有1.使用结构体来传数据,每次都传特点的数据位数,读取也读该特定位数,就不会多读数据,2.使用类似 ’\n’ 的标识符,来决定该段数据的大小,3.使用自定义帧数,封装成有起始位,校验位,数据位和结束位的一帧数据。这些方法都能有效的解决粘包问题。

还学会了使用wireshark去抓包,看UDP和TCP的报文头,其中了解了TCP报文头的各个标志位,如紧急指针标志位URG,确认应答标志位ACK, 传输数据标志位PSH, 请求连接标志位SYN,结束连接标志位FIN。还学习了TCP的各种机制,应答机制,超时重传机制,流量控制机制,滑动窗口机制,延时应答机制,捎带应答机制。其中应答机制是传输数据时给每一个数据都给一个编号,然后在报文头的序号那填第一个数据的编号,当接收端回应ACK标志位时,报文的确认号为接收端希望接收的下一个数据的序号,这样就能确保TCP协议通信的安全稳定性,不会丢数据。

还学习了使用TCP协议和HTTP协议通过HTTP的请求报文来实现一个爬虫。