TCP和UDP协议的区别_tcp和ip是什么意思

TCP和UDP协议的区别_tcp和ip是什么意思最近在学习WebSocket,了解到它是采用TCP来实现异步通信,全双工.与Http不同的是,Http采用无状态,应答式的响应.因此就想知道TCP,TCP/IP,HTTP,Socket之间到底是有怎样的关联关系和区别,以及全双工通信和半双工通信是如何实现的在网络层.在计算机网络里,有两种常见的参考模型即:OSI参考模型和TCP/IP参考模型。由此可见TCP本身是传输层的协议,…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近在学习WebSocket, 了解到它是采用TCP来实现异步通信, 全双工.与Http不同的是, Http采用无状态, 应答式的响应.因此就想知道TCP, TCP/IP, HTTP, Socket之间到底是有怎样的关联关系和区别, 以及全双工通信和半双工通信是如何实现的在网络层.

在计算机网络里,有两种常见的参考模型即:OSI参考模型和TCP/IP参考模型。由此可见TCP本身是传输层的协议, 而TCP/IP是一种网络参考模型。

1. OSI七层参考模型: 今天主要是用来清晰的了解网络结构的分层。这一模型和相关的协议并没有被使用, 但它具有普遍的意义就是对于讨论网络的体系结构中的每一层的功能是很重要的。它将服务,接口和协议的概念区分开来。每一层的接口都告诉它上面的进程如何访问本层。而且 每层用到的对等协议是本层自己内部的事情。不影响上层。它同时支持面向连接和无连接的通信。但是传输层只支持面向连接的通信。

TCP和UDP协议的区别_tcp和ip是什么意思

2. TCP/IP : 实用性高于七层。广为流传,模型本身没有多大用处。它对服务,接口和协议没有明确的区分, 下图也是人们对它进行了改进,使它更像OSI.它的网络层只支持一种面向无连接的服务, 但传输层同时支持TCP(面向连接)和UDP(面向无连接)两种通信模式。

TCP和UDP协议的区别_tcp和ip是什么意思

3. 面向连接和无连接的概念:

面向连接:

   ->服务:是指用户首先必须先建立一个连接,然后用这个连接传输数据,再释放或关闭连接.如:一个管道,发送方把数据压入管道的一端, 接收方在另一端将它们取出来.基本保持顺序.

    ->协议: TCP, 全双工, 收发两端可以同时发送和接收.连接建立需要经过3次握手, 连接断开需要4次所致手.连接方式是点对点的, 无法做到多播.

面向无连接:

   ->服务:不保证传输的数据到达,且可能无序.每个报文都携带了完整的目标地址, 由系统的中间路由出去.

   ->协议:UDP,几乎是直接和网络层的IP协议通信.在两个进程通信之前没有握手的过程, 因此称为无连接服务.当一端需要发送报文时, 通过UDP套接字发送报文,UDP不保证有序, 不保证一定被接收端收到.且没有拥塞的控制.

TCP和UDP协议的区别_tcp和ip是什么意思

TCP和UDP协议的区别_tcp和ip是什么意思

 TCP和UDP协议的区别_tcp和ip是什么意思

 TCP和UDP协议的区别_tcp和ip是什么意思

  • 从编码角度看 TCP UDP的区别如下图:
  • TCP和UDP协议的区别_tcp和ip是什么意思

4.Socket

套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

通过下图可以看, 实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议:

TCP和UDP协议的区别_tcp和ip是什么意思

5. 总结区别

协议 层次 描述
TCP 传输层 面向连接的可靠传输协议.
TCP/IP 协议栈,或称为一种网络服务模型. 网络层只提供面向无连接的服务.传输层提供TCP和UDP两种连接方式.
Sokcet 介于传输层和应用层之间 封装了传输层的TCP/IP的一组接口.为应用层提供使TCP/IP协议栈传输数据.
HTTP 应用层 它是建立在TCP/IP协议之上的一种应用协议.缺省端口是80. 提供服务端和客户的请求应答的过程. 请求结束后, 主动释放连接.

有用的链接:

https://os.mbed.com/handbook/Socket

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192834.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • vs2008安装失败解决办法「建议收藏」

    vs2008安装失败解决办法「建议收藏」

    由于各种蛋疼原因,卸载了VS2010换08.比较痛恨的是VS的卸载总是卸不干净,这种问题对于微软来说很难吗??
    开始还以为装不上08是因为2010没有卸载干净,结果搜索后发现时office2007的问题。
    代码:[01/13/10,18:55:42] setup.exe: [2] ISetupComponent::Pre/Post/Install() failed in ISetupManager::InternalInstallManager() with H

    2022年9月7日
  • 快速刷微信小程序访问量和浏览量

    快速刷微信小程序访问量和浏览量1、先开发小程序,小程序需要有亮点,毕竟新颖(这样别人才更好去点击查看)。2、流量主开通的条件是独立访客(UV)不低于1000,1000人说多不多,说少也不少,因为小程序是没有链接的,是不可以进行一个流量刷取的,独立访客是需要1000个实实在在的用户,并不是访问量。3、开发好小程序之后,自己要为自己的小程序做好宣传,前提小程序需要做的完美,小程序一定要做分享功能,将小程序分享到个人、微信群、朋友圈,这样估计很容易就达到几百了。4、后续可以去各种论坛发帖,切记不要恶意刷用户量,会导致小程序被封。5

    2022年9月18日
  • Laravel渴求式加载(比较容易理解理解load与with关系)

    Laravel渴求式加载(比较容易理解理解load与with关系)

    2021年11月8日
  • 如何查看linux系统的内核版本信息_内核版本

    如何查看linux系统的内核版本信息_内核版本查看Linux内核版本和系统版本信息**一、查看Linux内核版本命令(两种方法):1、cat/proc/version2、uname-a二、查看Linux系统版本的命令(3种方法):1、lsb_release-a,即可列出所有版本信息这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。2、cat/etc/redhat-release,这…

    2022年10月13日
  • MongoDB入门简单介绍

    MongoDB入门简单介绍

    2021年12月7日
  • 10分钟让你掌握Linux常用命令(+1万+++收藏)

    10分钟让你掌握Linux常用命令(+1万+++收藏)1、目录操作。2、文件操作。3、文件内容操作。4、压缩和解压缩。5、日志查看。6、Linux下文件的详细信息。7、常用的docker容器的命令。8、其他命令。

    2022年6月14日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号