详解TCP/UDP协议
原文:https://blog.csdn.net/weixin_44551646/article/details/96186056
一.协议
1.1什么是协议?
协议(Protocol)是指通信双方就如何进行通信的一种约定。通俗来讲,协议就是标准,大家要遵循相同的标准才能正常交流通讯。比如我们日常生活中,来自不同国家的人不可能用各自国家的语言相互沟通,双方都能理解的语言就是协议
1.2为什么要制定协议?
为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。对于不相容终端,除了需变换字符集字符外还需转换其他特性。
通俗来讲,在计算机中,链接介质 通常是网线,网线本质就是一条电线,可以传播电流,而电流可以按照强弱,被理解为0和1。那问题是,一台计算机被电了一下是什么意思?被电了两下又是什么意思? 这就必须由发送方和接收方共同商定出一套标准,从而可以知道0和1表示的含义
二.OSI七层模型
要谈TCP协议与UDP协议,就要说起传输层,因为TCP和UDP协议都是属于传输层协议,而传输层又属于OSI七层模型。
1.1什么是七层模型?
七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
通俗来说,如果与不同国家的人通讯则需要掌握不同国家的语言,但是全世界有那么多国家和语言,不可能全部掌握,那么就需要全球统一语言,找一种语言作为全世界通用语言,就是英语。
OSI亦是如此,相当于计算机界的通用语言,只要按照OSI规定的标准来通讯,就能够与全世界任何一台所有计算机通讯
1.2都有哪七层?
OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)
通常OSI七层模型,只是名义上的标准,停留在理论阶段,实际上没有太大的应用。我们往往把前三层(应用层,表示层,会话层)合并为应用层。后两层(数据链路层,物理层)合并为物理数据链路层。加上剩下的两层,传输层和网络层。又称为TCP/IP协议。
在网上找到了一个很形象的例子来阐述七层各自到底有什么用处:
整个过程以公司A和公司B的一次商业报价单发送为例子进行讲解。
-
应用层
实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。 -
表示层
由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。 -
会话层
会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。 -
传输层
传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。 -
网络层
网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。 -
数据链路层
将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。 数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。
这个没找到合适的例子? -
物理层
快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。
每一层都有相应的设备来支持各层的功能:
每层也有各自的协议:
三.面向连接的TCP协议
TCP协议 (Transmission Control Protocol)为什么称为面向连接的。
“面向连接”就是在正式通信前必须要与对方建立起连接,是按照电话系统建模的。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。
TCP之所以可靠,是因为在传输数据前需要三次握手确认建立链接
就比如说:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,如果一段时内没有收到回复信息,会自动重新发送,如果重试的次数过多则表示链接可能已经中断!
TCP总结
优点:能够保证数据传输是完整的
缺点:由于每次都需要传输确认信息,导致传输效率降低
场景:多用于必须保证数据完整性的场景,例如文本信息,支付信息等!
四.无连接的UDP协议
UDP协议(User Datagram Protocol)为什么称为无连接的??
“无连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。
UDP协议采取的方式与TCP完全不同,其根本不关心,对方是否收到数据,甚至不关心,对方的地址是否有效,只要将数据报发送到网络,便什么都不管了!
UDP总结
优点:传输效率高
缺点:可靠性不如TCP协议
场景:UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如QQ消息,视频聊天,语音聊天
五.总结
TCP | UDP | |
---|---|---|
是否连接 | 是 | 否 |
传输可靠性 | 可靠 | 不可靠 |
应用场景 | 大量数据 | 少量数据 |
速度 | 慢 | 快 |
参考文献
1.https://www.cnblogs.com/qishui/p/5428938.html
2.https://www.cnblogs.com/yangyuanhu/p/10075206.html#autoid-5-0-0
3.https://baike.baidu.com/item/TCP/UDP协议/7719820
</div><div><div></div></div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>
原文:https://blog.csdn.net/weixin_44551646/article/details/96186056
一.协议
1.1什么是协议?
协议(Protocol)是指通信双方就如何进行通信的一种约定。通俗来讲,协议就是标准,大家要遵循相同的标准才能正常交流通讯。比如我们日常生活中,来自不同国家的人不可能用各自国家的语言相互沟通,双方都能理解的语言就是协议
1.2为什么要制定协议?
为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。对于不相容终端,除了需变换字符集字符外还需转换其他特性。
通俗来讲,在计算机中,链接介质 通常是网线,网线本质就是一条电线,可以传播电流,而电流可以按照强弱,被理解为0和1。那问题是,一台计算机被电了一下是什么意思?被电了两下又是什么意思? 这就必须由发送方和接收方共同商定出一套标准,从而可以知道0和1表示的含义
二.OSI七层模型
要谈TCP协议与UDP协议,就要说起传输层,因为TCP和UDP协议都是属于传输层协议,而传输层又属于OSI七层模型。
1.1什么是七层模型?
七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
通俗来说,如果与不同国家的人通讯则需要掌握不同国家的语言,但是全世界有那么多国家和语言,不可能全部掌握,那么就需要全球统一语言,找一种语言作为全世界通用语言,就是英语。
OSI亦是如此,相当于计算机界的通用语言,只要按照OSI规定的标准来通讯,就能够与全世界任何一台所有计算机通讯
1.2都有哪七层?
OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)
通常OSI七层模型,只是名义上的标准,停留在理论阶段,实际上没有太大的应用。我们往往把前三层(应用层,表示层,会话层)合并为应用层。后两层(数据链路层,物理层)合并为物理数据链路层。加上剩下的两层,传输层和网络层。又称为TCP/IP协议。
在网上找到了一个很形象的例子来阐述七层各自到底有什么用处:
整个过程以公司A和公司B的一次商业报价单发送为例子进行讲解。
-
应用层
实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。 -
表示层
由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。 -
会话层
会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。 -
传输层
传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。 -
网络层
网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。 -
数据链路层
将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。 数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。
这个没找到合适的例子? -
物理层
快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。
每一层都有相应的设备来支持各层的功能:
每层也有各自的协议:
三.面向连接的TCP协议
TCP协议 (Transmission Control Protocol)为什么称为面向连接的。
“面向连接”就是在正式通信前必须要与对方建立起连接,是按照电话系统建模的。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。
TCP之所以可靠,是因为在传输数据前需要三次握手确认建立链接
就比如说:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,如果一段时内没有收到回复信息,会自动重新发送,如果重试的次数过多则表示链接可能已经中断!
TCP总结
优点:能够保证数据传输是完整的
缺点:由于每次都需要传输确认信息,导致传输效率降低
场景:多用于必须保证数据完整性的场景,例如文本信息,支付信息等!
四.无连接的UDP协议
UDP协议(User Datagram Protocol)为什么称为无连接的??
“无连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。
UDP协议采取的方式与TCP完全不同,其根本不关心,对方是否收到数据,甚至不关心,对方的地址是否有效,只要将数据报发送到网络,便什么都不管了!
UDP总结
优点:传输效率高
缺点:可靠性不如TCP协议
场景:UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如QQ消息,视频聊天,语音聊天
五.总结
上一篇: H.264 编码基础知识
下一篇: 【Linux】UDP/TCP协议