TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
一、TCP与UDP的不同
1、 是否需要建立连接;
UDP在传送数据之前不需要先建立连接;TCP则提供面向连接的服务;
2、 是否需要给出确认;
对方的传输层在收到UDP报文后,不需要给出任何确认,而 TCP需要给出确认报文,要提供可靠的、面向连接的传输服务。
3、 虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式;【UDP取代TCP】;
和IP层的联系: IP层只负责把数据送到节点,而不能区分上面的不同应用,所以TCP和UDP协议在其基础上加入了端口的信息,每个端口标识的是一个节点上的一个应用。 除了增加端口信息,UDP协议基本就没有对IP层的数据进行任何的处理了。而TCP协议还加入了更加复杂的传输控制,比如滑动的数据发送窗口,以及接收确认和重发机制,以达到数据的可靠传送。不管应用层看到的是怎样一个稳定的TCP数据流,下面传送的都是一个个的IP数据包,需要由TCP协议来进行数据重组。
二、TCP与UDP的适用场景。
1、 TCP用于在传输层有必要实现可靠传输的情况;
2、 UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信;
举一个通过 IP 电话进行通话的例子。如果使用 TCP,数据在传送途中如果丢失就会被重发,这样就会导致无法流畅地传输通话人的声音。而采用UDP,它不会进行重发处理,从而也就不会有声音大幅度延迟到达的问题,即使有部分数据丢失,也只是会影响某一小部分的通话。
三、HTTP协议和Socket协议
HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
**HTTP是短连接:**客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要保持每隔一段时间向服务器发送”保持连接”的请求。这样可以保证客户端在服务器端是”上线”状态。
HTTP连接使用的是”请求-响应”方式,不仅在请求时建立连接,而且客户端向服务器端请求后,服务器才返回数据。
**Socket协议:**网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦!
参考资料:
1、 https://blog.csdn.net/qq_31332467/article/details/79217262;
2、 https://blog.csdn.net/hai_chao/article/details/79626161;
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: