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

网络(8)-HTTP、Socket、TCP、UDP的区别和联系相关推荐

  1. 【Java 网络编程】Socket TCP UDP 联系

    文章目录 I 信息传输关注点 II Socket 与 TCP UDP 关系 III Socket 连接组成 ( IP地址 + 端口号 ) IV Socket TCP V Socket UDP VI C ...

  2. 网络编程2_网络通讯协议, socket(tcp, udp)

    一. 网络通讯协议     互联网协议的功能: 定义计算机如何接入internet, 以及接入internet的计算机的通信标准     互联网协议按照功能的不同分为osi七层或tcp/ip五层    ...

  3. Linux网络编程(网络七层协议,TCP/IP,三次握手四次挥手,TCP/UDP的区别)

    1.OSI 7层网络模型 1.网络七层协议 (1)OSI定义了网络互连的七层框架(物理层.数据链路层.网络层.传输层.会话层.表示层.应用层),即ISO开放互连系统参考模型. (2)各层功能定义 这里 ...

  4. 【Socket网络编程】0.socket TCP/UDP 可参考 【lx青萍之末】 的 【Linux网络编程 】系列博客

    关于socket TCP/UDP 相关知识 可参考博主[ lx青萍之末] 的 [Linux网络编程 ]系列博客 https://blog.csdn.net/daaikuaichuan/category ...

  5. TCP UDP的区别

    TCP & UDP的区别 有两种类型的Internet协议(IP)流量.它们是TCP或传输控制协议和UDP或用户数据报协议.TCP是面向连接的 - 一旦建立连接,数据就可以双向发送.UDP是一 ...

  6. 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)

    网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast) 我们周围一切几乎都依赖于把事情抽象成低等级,并在某一点把它具体化,在一些设计概念中,接口层十分清晰并且目 ...

  7. socket协议 http协议的区别,长短连接,tcp/udp协议区别

    socket http协议的区别 简单来说,我们平常浏览的网页如果已http://开头的都是http协议传输到我们的浏览器的,而http是基于socket之上的,就是说http携带数据,socket提 ...

  8. 网络基础(二)之TCP/UDP协议

    目录 传输层 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 pidof netstat UDP协议 UDP协议端格式 对于16位UDP长度的理解 ...

  9. 网络基本概念之TCP, UDP, 单播(Unicast), 组播(Multicast)

    这篇文章相当低级,但相当重要! 我们周围一切几乎都依赖于把事情抽象成低等级,并在某一点把它具体化,在一些设计概念中,接口层十分清晰并且目标很集中,应用程序不用考虑操作系统如何工作,操作系统也不用考虑硬 ...

  10. Python核心编程(第3版)第2章网络编程中关于tcp/udp服务器和客户端实现代码的运行出错的修正

    在Python核心编程(第3版)第2章网络编程中, 关于tcp/udp服务器和客户端实现代码的运行会出现 ['str' does not support the buffer interface]之类 ...

最新文章

  1. 在实践中我遇到stompjs, websocket和nginx的问题与总结
  2. assa_高金赴美国ASSA年会招聘青年教授
  3. SQL SERVER语法
  4. 微软企业库5.0学习笔记(四)配置企业库
  5. zuul 路由不生效_springBoot集成zuul路由forward,设置setSendZuulResponse无效
  6. Node提示:error code Z_BUF_ERROR,error error -5,error zlib:unexpected end of file
  7. 太牛了,原来古人是这样铸造钱币的。。。
  8. 线段树初见——区间询问与改变最大值
  9. php变量的数据类型
  10. 小米为其他手机适配rom_让小米引以为傲的MIUI,为什么不再给其它手机适配了?...
  11. MYSQL 学习笔记记录整理之三:子查询
  12. java 数据路id增长策略_基于数据库实现ID自动生成策略
  13. Linux权限相关及yum源的配置
  14. 无恶意的协议才有效力
  15. 计算机显卡排名,显卡天梯图_显卡性能天梯图_2021笔记本显卡天梯图-中关村在线...
  16. R语言绘图—一键添加显著性
  17. QT实例-数据库分页查询
  18. 水晶易表 Xcelsius 2008 安装指南学习资源
  19. 提交您的博客到各大网站
  20. 双网络安全nvr/布控球,可双向同时接入国网B接口视频监控平台和国标28181平台

热门文章

  1. MFC中,多个Button响应同一个事件
  2. .NET托管内存类应用的内存泄漏分析和诊断(转)
  3. goframe框架交叉编译go项目
  4. lnmp无法删除.user.ini
  5. windows下apache建立不同虚拟主机
  6. 使用netty实现聊天室功能
  7. android游戏渠道支付,Android渠道支付隐患及推荐解决方案
  8. java面向对象数组_Java面向对象的构造器与数组对象
  9. Redis数据结构——链表-linkedlist
  10. Ubuntu 软件源sources.list