三次握手
三次握手
为什么需要三次握手,两次握手不可以吗?
如果是两次握手,存在一种情况即服务端收到的连接请求可能是某些原因导致在网络中延迟滞留,直到释放之后发送给服务端,此时的客户端其实并不想发起连接,服务端只能在那傻等。
服务端为什么传回SYN?
告诉客户端,我收到的信号就是你发送的信号。
传了SYN,为什么还要传ACK?
传SYN是为了确定发送到接受通道无误,传ACK是为了确定接收到发送端无误。
四次挥手
四次挥手
为什么需要四次?
任何一方都可以发送断开连接的请求,当对方确认后进入半关闭状态,当另一方没有数据要发送的时候,则发出连接释放通知,发起方确认后关闭。
TCP和UDP协议的区别
1.tcp:提供可靠传输,面向连接,传输形式为字节流。
2.udp:不可靠传输,无连接,传输形式为数据报文段。
TCP如何保证可靠传输
1.检验和
2.流量控制:流量控制是为了控制发送方的发送速率,保证接收方来得及接收。使用滑动窗口实现流量控制,接收方发送的确认报文字段中的滑动窗口大小可以控制发送方的发送速率。
3.拥塞控制:当网络拥塞时,减少数据的发送。tcp的拥塞控制采用四种算法即慢开始、拥塞避免、快重传、快恢复。
慢开始和拥塞避免:基于窗口的拥塞控制,在发送方维护一个拥塞窗口(cwnd),大小等于发送窗口,通过出现了超时来判断网络出现拥塞。慢开始的思路是一开始发送方发送一个字节,在收到接收方的确认,然后发送的字节数量增大一倍(也就是按照指数增长的速率),从小到大逐步增大cwnd,直到cwnd 达到慢开始门限(ssthresh),停止慢开始算法,使用拥塞避免算法,拥塞避免算法思路是增长速率变为线性增长,也就是每经过一个往返时间RTT就把发送方的cwnd加1,所以综上:
当cwnd < ssthresh ,使用慢开始算法;
当cwnd = ssthresh,可以使用慢开始算法,也可以使用拥塞算法;
当cwnd > ssthresh,使用拥塞算法;
快重传和快恢复:如果收到3-ACK(发送方一连接收到3个对同一个报文段的重复确认),这种可能的情况是,并不是发生了拥塞,可能是报文丢失,所以发送方不执行慢开始算法,直接使用快重传算法,立即发送缺失的报文段。同时执行快恢复算法,将门限值(ssthresh)调整为此时cwnd的一半,并执行拥塞避免算法。
4.超时重传:当发送一段后,在规定时间内没有收到确认,将重新发送。
七层网络模型
1.物理层:中继器、集线器。
2.数据链路层:网桥、交换机,帧
3.网络层:路由器,数据包(package)
4.运输层:报文(message)。
http请求码
301 永久重定向
302 临时重定向
多路复用
频分多留复用 FDM
波分多路复用 WDM
时分多路复用 TDM
空分多路复用 SDM