我的编程空间,编程开发者的网络收藏夹
学习永远不晚

socket通信和tcp通信的区别有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

socket通信和tcp通信的区别有哪些

本篇内容介绍了“socket通信和tcp通信的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

socket通信和tcp通信的区别:1、tcp协议属于传输层协议,而socket是应用层和传输层之间的一个抽象层;2、建立一个TCP连接需要三次握手;3、socket连接可以保持长连接;4、tcp服务端和tcp客户端使用socket通信等。

本文操作环境:Windows10系统、Dell G3电脑。

socket通信和tcp通信的区别是什么?

tcp和socket的区别

一:tcp协议

tcp协议属于传输层协议(UDP也属于传输层协议,但是UDP协议是无状态的)。建立一个TCP连接需要三次握手,断开一个TCP连接需要四次挥手。手机能够使用联网功能,是因为手机底层实现了TCP/IP协议,使用手机终端通过无线网就可以与服务端建立一个tcp连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。

tcp建立连接需要三次握手:

socket通信和tcp通信的区别有哪些 

图1:tcp连接三次握手示意图

如图所示:

客户端要与服务端建立tcp连接,首先向服务端发送一个syn J信号,服务端收到此信号后向客户端回答一个ACK J+1信号,并额外加了一个syn K信号,客户端收到ACK J+1信号后就知道,服务端能收到我的信号,后面我客户端就可以放心的发送数据给你服务端而不用担心你服务端接收不到我发送的数据了。

客户端收到服务端发送的SYN K信号后,还需要向服务端回一个 ACK K+1信号,这样服务端收到此信号就知道,我服务端给你客户端发送的信号,你客户端能够收到,这样我服务端就可以放心的给你客户端发送数据而不用担心你客户端收不到自己发送的数据了。

其实从上面的描述可以看到:

建立连接完全可以跟断开TCP连接一样分四步走,只不过是把服务端的应答信号ACK和客户端的认证请求信号SYNC这两步做成一步走了。

tcp连接关闭时需要四次挥手:

socket通信和tcp通信的区别有哪些
图2:tcp连接断开时四次挥手示意图

客户端收到服务端的应答信号ACK M+1后,客户端就知道:服务端知道我客户端不会再发送数据包给你服务端了,你可以停止对我的监听了。

但是此时只是客户端->服务端的单向流动停止了,另一个方向的流动:

服务端->客户端的数据发送还可以正常进行,直到服务端向客户端发送FIN N挥手信号,客户端向服务端回应ACK N+1信号,服务端才知道:客户端知道我服务端不会再发送数据包给你客户端了,你可以停止对我的监听了。

至此,客户端->服务端的单向流动和服务端->客户端的单向流动两个方向都停止,可以关闭连接了。

二:socket

我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?

我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

socket通信和tcp通信的区别有哪些
图5:socket通信系统模块示意图

tcp服务端和tcp客户端使用socket通信的过程如下。

从图中可以看到,socket连接可以保持长连接。
socket通信和tcp通信的区别有哪些
图6:基本socket客户/服务端通信流程示意图

注意的是,socket连接可以由客户端主动关闭,也可以由服务端主动关闭。

“socket通信和tcp通信的区别有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

socket通信和tcp通信的区别有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

socket通信和tcp通信的区别有哪些

本篇内容介绍了“socket通信和tcp通信的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!socket通信和tcp通信的区别:1
2023-06-29

tcp和udp有哪些区别

tcp和udp的区别:1、可靠性,TCP提供可靠的数据传输,保证数据的完整性和有序性,UDP是无连接的协议;2、速度,TCP相对UDP更加复杂,在传输效率上稍低一些;3、连接性,TCP是面向连接的协议,它通过建立连接来进行数据传输,UDP是
2023-07-25

通配符*和?有哪些区别

这篇文章主要介绍通配符*和?有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!通配符*和?的区别是“*”可以用来代替零个、单个或多个字符,而“?”仅可以使用代替一个字符;“*”表示匹配的数量不受限制,而“?”的
2023-06-06

Python socket之TCP通信及下载文件的实现

本文主要介绍了Python socket之TCP通信及下载文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-24

Python基于socket实现TCP/IP客户和服务器通信

目录前言简单的搭建服务器与客户端服务器客户端create_connection(更简易的客户端)前言 套接字除了用于分析网络地址等功能之外,还可以配置一个服务器,监听到来的消息。 比如你在网络上跟网络机器人聊天,你发送数据到机器人(服务器)
2022-06-02

vue的通信方法有哪些

通信方法:1、子组件设置props属性,定义接收父组件传递过来的参数;而组件在使用子组件标签中通过字面量来传递值。2、子组件通过$emit触发自定义事件进行通信。3、利用ref进行通信。4、利用EventBus进行通信。5、利用$parent或$root进行通信。6、利用$attrs与$listeners进行通信。7、利用provide与inject进行通信。8、利用vuex。
2023-05-14

Python基于socket如何实现TCP/IP客户和服务器通信

这篇文章主要为大家展示了“Python基于socket如何实现TCP/IP客户和服务器通信”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python基于socket如何实现TCP/IP客户和服务
2023-06-15

如何使用C#基于Socket的TCP通信实现聊天室

这篇文章给大家分享的是有关如何使用C#基于Socket的TCP通信实现聊天室的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下一.Socket(套接字)通信概念套接字(socket)是通信的基石,用于描述
2023-06-29

mysql中有哪些通信协议

这期内容当中小编将会给大家带来有关mysql中有哪些通信协议,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、说明MySQL客户端/服务器通信协议是半双工的:无论何时,无论是服务器向客户端发送数据,还是客
2023-06-15

在Java中使用Socket通信会遇到哪些问题

本篇文章给大家分享的是有关在Java中使用Socket通信会遇到哪些问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Socket通信模型如图所示:不管Socket通信的功能有
2023-05-31

C#实现TCP和UDP通信的示例详解

这篇文章主要为大家详细介绍了C#实现TCP和UDP通信的相关知识,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
2023-03-01

Vue3的组件通信方式有哪些

本篇内容主要讲解“Vue3的组件通信方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3的组件通信方式有哪些”吧!Props父组件传值给子组件(简称:父传子)Props 文档父组件/
2023-06-29

qt进程通信的方法有哪些

Qt进程间通信的方法有以下几种:1. 信号与槽:可以在不同的对象之间发送和接收信号,实现进程间的通信。通过QObject的子类的信号与槽机制,可以实现跨线程和跨进程的通信。2. 共享内存:多个进程可以访问和操作同一块内存区域,实现数据的共享
2023-09-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录