TCP、UDP、HTTP、SOCKET、WebSocket之间的区别
本文对自己学习理解很有帮助,感谢原作者分享!
推荐阅读:
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)
TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,
每层都有相应的协议,如下图
IP:
网络层协议;(高速公路)
TCP和UDP:
传输层协议;(卡车)
HTTP:
应用层协议;(货物)。HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
SOCKET:
套接字,TCP/IP网络的API。(港口码头/车站)Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
TCP/IP:
代表传输控制协议/网际协议,指的是一系列协议,TCP/IP 模型在 OSI 模型的基础上进行了简化,变成了四层,从下到上分别为:网络接口层、网络层、传输层、应用层。与 OSI 体系结构对比如下:
TCP/UDP区别:
TCP
(传输控制协议,Transmission Control Protocol):(类似打电话)
面向连接、传输可靠(保证数据正确性)、有序(保证数据顺序)、传输大量数据(流模式)、速度慢、对系统资源的要求多,程序结构较复杂,
每一条TCP连接只能是点到点的,
TCP首部开销20字节。
UDP
(用户数据报协议,User Data Protocol):(类似发短信)
面向非连接 、传输不可靠(可能丢包)、无序、传输少量数据(数据报模式)、速度快,对系统资源的要求少,程序结构较简单 ,
UDP支持一对一,一对多,多对一和多对多的交互通信,
UDP的首部开销小,只有8个字节。
tcp三次握手建立连接:
第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;
主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;
主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。
三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
Websocket
Websocket协议解决了服务器与客户端全双工通信的问题。
注:什么是单工、半双工、全工通信?
信息只能单向传送为单工;
信息能双向传送但不能同时双向传送称为半双工;
信息能够同时双向传送则称为全双工。
websocket协议解析
wensocket协议包含两部分:一部分是“握手”,一部分是“数据传输”。
WebSocket和Socket区别
可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系。
HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。
WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
参考:
揭开Socket编程的面纱
图解TCP-IP协议
Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)
WebSocket与TCP/IP
websocket 历史及使用详解
WebSocket 教程
TCP、UDP、HTTP、SOCKET、WebSocket之间的区别相关推荐
- java http 面试题_Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别面试题12期...
TCP协议 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络O ...
- TCP与UDP在socket编程中的区别
TCP与UDP在socket编程中的区别 一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可 ...
- socket、tcp/ip、http三者之间的区别和原理
网络七层模型 OSI 模型(Open System Interconnection model)是计算机和网络在世界范围内实现互联的标准框架.它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的 ...
- HTTP,FTP,TCP,UDP及SOCKET
一.TCP/IP协议简析 TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议 传输层:TCP协议与UDP协议 应 ...
- Java之初步识别网络编程:IP、端口号、TCP/UDP、Socket、URL等
文章目录 一.网络编程概述 二.网络通信要素概述 三.通信要素1:IP和端口号 IP相关 InetAdress类 如何实例化InetAddress 端口号 四.通信要素2:网络协议 TCP/IP协议簇 ...
- 基于TCP/UDP的socket服务器搭建流程
目录 TCP/UDP概念介绍 一.TCP/UDP对比 二.端口号的作用 三.字节序 1.概念 2.分类 3.C程序在内存空间的映射 socket服务器与客户端开发流程 一.流程介绍 二.socket服 ...
- 基于TCP/UDP的socket编程
基于TCP(面向连接)的socket编程 服务器端顺序: 1. 创建套接字(socket) 2. 将套接字绑定到一个本地地址和端口上(bind) 3. 将套接字设为监听模式,准备接收客户请求(l ...
- TCP 和 UDP 在socket编程中的区别
(网络收集) 一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证 ...
- [网络]------TCP UDP HTTP Socket 区别
关于这几个的概念,网上已经很全面了,在这个做个笔记: 前提须知: 1.协议就是大家提前约定的一种规范,后人照着这个遵循就可以,也可以将语言理解为一种协议 2.网络通信的世界中,有七层协议(应用层,表示 ...
- TCP/UDP/IP/Socket的定义
TCP(Transmission Control Protocol ) 传输控制协议(TCP),是一种面向连接的.可靠的.基于字节流的传输层通信协议 在简化的计算机网络OSI模型中,它完成第四层传输层 ...
最新文章
- 我这些年的项目管理心得...
- MATLAB怎么做出三叶玫瑰线,matlab复习题
- oracle怎么下载安装,Oracle数据库下载与安装的完整步骤
- 2020年12月中国编程语言排行榜 - Java地位岌岌可危
- 好听的歌曲~~~推荐
- 基于UCOSII的RS485通信(STM32F107)
- 《流浪方舟》- 废土世界的冒险之旅
- 2022云计算真题:日志分析服务
- SpringBootTest遇到的问题----Field userMapper in xxx.service.UserService required a bean of type
- 震惊世界的25张照片
- FLV文件(H264 + AAC)格式超详细分析
- 【tensorflow】tensorflow相关基础概念
- sklearn机器学习:决策树tree.DecisionTreeClassifier()
- MySQL(1):新建表,增,删,改,查
- C语言:初识数组及数组的复制
- 十月 Z 星月度速览 | Hacktoberfest 开源挑战赛、飞书深诺电商场景实践、Paddlepaddle推荐系统部署……...
- 使用uni-app引入阿里巴巴矢量图以及出现小长方形解决方法
- 惠普n54l gen7 安装linux,HP GEN7改造NAS
- 飞思卡尔Kinetis芯片中NVIC模块的中断寄存器的介绍及其应用举例
- 一些免费的无限制接口
热门文章
- map和foreach的区别和应用场景_面试官:说说UDP和TCP的区别及应用场景
- 篮球计分器软件_SPSS 26 综合性数学统计分析工具
- python2中的print语句可以不用小括号。_Python基础语法 | 代码规范amp;判断语句amp;循环语句...
- linux 区别 挂起 阻塞_踩坑之java执行linux命令死锁阻塞挂起
- jenkins+ansible+gitlab
- vuex的购物车效果 index.js
- [CQOI 2018]社交网络
- jQuery节点创建与属性的处理 创建节点
- php学习五:数组操作
- [转载]运维自动化201009