计算机网络
-
体系结构
应用层:DNS、HTTP、SMTP、FTP
传输层:TCP、UDP
网络层:IP
数据链路层
物理层 -
TCP和UDP的区别
TCP协议面向连接,可靠传输,面向字节流,效率低,实现了流量控制、拥塞控制
UDP协议无连接,不可靠传输,可能出现丢包现象,以数据报作为基本单位收发,效率高 -
TCP报文段:首部+数据
首部20个字节,包括序号seq,确认号ack,ACK,SYN,FIN等字段,源端口号,目的端口号等序号seq表示所要发生的数据的第一个数据字节的序号
确认号ack表示对已收到的数据的最高序号加1,即期望下次收到的数据中第一个数据字节的序号
ACK=1时,ack才有效
SYN=1时,表示这是一个连接请求或连接接受的报文
FIN=1时,表示此报文段的发送端已发送完毕,并要求释放连接 -
TCP如何做到可靠传输?如果发送数据,没有接受到ACK确认会怎样?
-
确认应答+序列号:TCP传输过程中,每次接收方收到报文后,都会对发送方进行确认应答,也就是发送ACK报文,这个ACK报文会带有确认号ack,告诉发送方,接收到了哪些数据,下一次的数据从哪里开始继续发。其次,接收方可以根据报文首部的序号对数据包进行排序和去重,然后把数据传送给应用层。
-
超时重传:发送方发出数据后,会开启一个计时器,当一定时间后还未收到ACK确认报文,则重发数据,直到达到重发次数或收到ACK,累计到一定的重传次数,TCP会认为网络异常,强制关闭连接。
-
快速重传:当接受方收到的数据包序号不正确,那么接受方会重复发送上一条ACK确认报文,若发送方连续收到了3条同一个确认号的ACK,就会启动快速重传,把这个ACK对应的发送包重新发送。
-
滑动窗口:滑动窗口的发送窗口,未收到ACK确认就不滑动
发送窗口:已发送,未收到ACK、未发送,但允许发送
接受窗口:未接收但准备接收
-
-
TCP如何做到数据不重复?
接收方可以根据报文首部的序号对数据包进行排序和去重,然后把数据传送给应用层。
-
三次握手,建立连接
-
四次挥手,释放连接