计算机网络分层
七层:
应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
应用层 传输层 网际层
TCP与UDP的区别
UDP是无连接的 尽最大可能进行交付,没有拥塞控制,面向报文。
TCP是面向连接的 提供可靠传输,由流量控制,拥塞控制,面向字节流的;
TCP的字节格式(源和目标端口号,序号,确认号,头部长度,窗口大小,校验和等)
IP协议
版本号,首部长度,总长度,校验和,源ip,目标ip,生存时间,
为什么要三次握手
主要为了防止已经失效的连接请求报文段突然又传送到B,因而产生错误;如A发出连接请求,但是由于网络原因,滞留在了某各网络节点,于是超时,A节点重新发送一个连接请求,后来收到了确认,建立了连接,数据传输完毕之后,就释放连接,但是由于A一共发出了两个请求,刚才滞留的请求在释放之后某个时间 节点又到了B,B误以为是一次全新的请求,所以就发出了确认,如果此时是两次握手,建立就已经完成,B就一直等待A,浪费资源。
为什么要四次分手
因为在建立阶段,服务端向客户端的连接建立请求和确认可以一起发送,但是关闭连接的时候,客户端收到FIN标志后,并不会立即就关闭,所以可能先发一个ack报文,只有等服务端所有数据都传输完成之后,才发出关闭服务端到客户端的连接。因此不能一起发送。服务端,收到FIN之后就进入close_wait状态
Time_Wait
客户端收到服务端的FIN报文之后进入此状态,此时并不是立即关闭,还需要等待2MSL时间之后再关闭。
1.确保最后一个确认报文可以到达,没有到达就重新发送
2.等待一段时间是为了本连接持续时间内所产生的报文都从网络中消失,使得下一个新的连接不会出现旧的报文。
TCP如何保证传输的可靠性
1.确认应答和序列号
超时重传:发送方再发送完等待一段时间之后没有收到ack就进行重发
连接管理:三次握手和四次挥手
流量控制:TCP根据接收端的数据处理能力,决定发送端的发送速度,TCP协议中,头部有一个窗口大小。
拥塞控制:慢开始,拥塞避免,快重传,快恢复,
慢开始的思路:不要一开始旧发送大量的数据,先探测一下网络的拥塞程度,由小到大逐渐增加拥塞窗口,加倍增加
拥塞避免让拥塞窗口缓慢增加,每经过一个往返的rtt时间就加1;
快重传和快恢复:只要连续收到三个重复确认就立即重新对方尚未收到的报文,并且将拥塞窗口设置为1/2,加法增大