TCP协议UDP协议和HTTP协议
HTTP 是应用层协议,而 TCP 和UDP是传输层协议
TCP协议和UDP协议
TCP是一种可靠的连接,会保证每一条数据都传输到位,比如,想要每条数据都不落的展现并且暗一点过的顺序,而UDP只管发送数据,不在乎数据是否已经发送到,因此UPD传输速度比较快,通常用于一些比较需要实时性的连接,比如发微信消息,微信语音,
TCP
TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。
1.TCP连接的过程
1.发起请求时三次握手
https://img-blog.csdnimg.cn/f5c54dcda26d4655ae99232920f1e344.png" alt="在这里插入图片描述" />
为什么要三次握手而不是两次握手
https://img-blog.csdnimg.cn/85747d49109b4691bfb5f44c0c18b336.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/08153a320b444fa8a1e536dde6989377.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/7db33f2f91484ea9b64af5349eae39d6.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/2e28773abfdf4640927b976546230ae6.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/642a8b20c21a42bb8bc0fe1c5edf97c2.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/bf9f6da72b6949f29db5f0b721fdeb63.png" alt="在这里插入图片描述" />
断开连接的四次挥手
https://img-blog.csdnimg.cn/b694008792fc4c6c9f0843af7c6bd608.png" alt="在这里插入图片描述" />
为什么 客服端要经过超市等待时间才能关闭链接
这是为了保证服务端接收到ACK包
如果客服端立即关闭链接这时ACK 包发生了丢失,服务端会一直进入等待确认状态
如果有超时等待时间,当服务端没有收到ACK包时会重新发生FIN包,客服端会响应这个FIN包然后从新发送ACK包并刷新超时等待时间
2.TCP协议的特点
- 面向连接
面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。
- 仅支持单播传输
每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。
-
面向字节流
TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。 -
可靠传输
对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
- 提供拥塞控制
当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞
什么是拥塞控制? 计算机网络是共享的,流量控制避免的是发送方填满接收方的空闲空间,而拥塞控制是避免发送方填满整个网络。
拥塞控制算法有几种?
https://img-blog.csdnimg.cn/b61af446342042ad9e63b91a9532b216.jpeg" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/3725f4f12cd947d8ac729c32325141eb.png" alt="在这里插入图片描述" />
- TCP提供全双工通信
TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)
UDP
它直接向目标计算机发送数据包(数据传输的单位),而不先建立连接,也不指示所述数据包的顺序,或检查它们是否按预期到达。(UDP 数据包被称为“数据报”)
- UDP不提供可靠性
它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
- UDP 是无连接的
发送数据之前不需要建立连接(发送数据结束时也没有连接可释放),减少了开销和发送数据之前的时延
- UDP 没有拥塞控制
网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的
- UDP 支持一对一、一对多、多对一和多对多的交互通信
TCP与UDP的区别:
1、基于连接与无连接;
2、对系统资源的要求(TCP较多,UDP少);
3、UDP程序结构较简单;
4、流模式与数据报模式 ;
5、TCP保证数据正确性,UDP可能丢包;
6、TCP保证数据顺序,UDP不保证。
HTTP
HTTP是客户端浏览器或其他程序与Web服务器(后端)之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。
http请求包括:请求行、请求头、请求体
http响应包括:响应行、响应头、响应体