————————1.Http常见的状态码—————————
200:请求成功,一般用于get和post请求
204:服务器处理成功但没有返回内容
301:地址永久移动
302:地址被临时移动
400:客户端请求语法错误
401:请求要求用户身份认证
403:服务器拒绝这个请求
404:服务端找不到资源
405:客户端请求中的方法被禁止
414:请求的url过长,服务器无法处理
415:服务器无法处理请求的格式
500:服务器内部错误
505:服务器不支持请求的HTTP协议版本
————————————2.TCP,UDP的区别————————————
TCP和UDP都是传输层的协议
TCP是可靠的通信传输协议 ,UDP相对不稳定,常用于广播
*TCP是面向连接的协议(在收发数据前必须和对方建立可靠的连接),从而可以控制通信流量的浪费
*TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对顺序乱掉的分包进行顺序控制
*TCP通过检验、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。
*UDP不提供复杂的控制机制,利用ip提供面向无连接的通信服务,出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为,出现丢包,UDP也不负责重发,包乱序时也不负责纠正
——————————3.TCP三次握手的特点————————————
*没有应用层的数据
*SYN这个标志位只有在TCP建产连接时才会被置1
*握手完成后SYN标志位被置0
——————————4.TCP如何保证连接的可靠性——————————
TCP保证传输可靠的方法有:校验和,序列号,确认应答,超时重传,连接管理,流量控制,拥塞控制
1.校验和:判断传输数据是否出现了修改
TCP在计算校验和的时候,会添加一个12字节(12x8=96)的伪部首(32位源IP地址,32位目的IP地址,8位保留字节置0,8位传输协议号,《TCP是6,UDP是17》,16位TCP 长度 )通过 伪部首的目的IP来检查TCP是否收错了,通过传输协议号判读
//TODO校验和的计算之后再看
(接收方比对校验和一致不一定传输成功)
2.确认应答与序列号
TCP传输时将每一个字节的数据都编了号,这就是序列号
确认应答:传输数据时接收方收到数据后,会对传输方回应答,也就是ACK报文,ACK中带了确认应答的序列号
3.超时重传
由于网络原因:1.数据在发送过程中发生了丢包,接收端没有接收到。2.发送端回ACK报文出现丢包情况
TCP使用重传机制来解决问题,设置一个超时时间如果没有回应,重新传包,当重传达到一定次数后断开连接
4.连接管理
TCP的三次握手和四次挥手保证了可靠的连接
5.滑动窗口
流量控制和阻塞控制都是使用了滑动窗口实现
滑动窗口是指在发送缓冲区可发送的序列号范围,只有在滑动窗口内的数据才可以被发送,接收到ACK报文后,窗口会向前滑动,滑动窗口的大小记录在TCP首部中16位的窗口字段,窗口大小有接收方的接收窗口大小和拥塞窗口决定
6.流量控制
接收端接到数据后进行处理,如果发送端发送速度过快,接收端的缓存区占满后发送端发送的后续数据会出现丢包情况,TCP根据接收端的处理能力来决定发送端的发送速度这就是流量控制
7.拥塞控制
当网络的需求超过他的工作极限时就会出现拥塞,拥塞控制就是防止过多的数据注入网络中
解决方式1:慢开始,拥塞控制,2.快重传,快恢复
——————————5.TCP怎么流量控制——————————
tcp的流量控制是通过滑动窗口,