TCP和UDP协议详解
引言
假设,进程A要和进程B要通信,首先要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。那么网络中不同机器的不同进程之间如何通信?
其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用一个三元组(ip地址,协议,端口)就可以标识网络中的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。
一、本地进程间通信方式
本地的进程间通信(IPC)有很多种方式,总结如下:
- 消息传递(管道、FIFO、消息队列)
- 同步(互斥量、条件变量、读写锁、信号量等)
- 共享内存
- 远程过程调用(Remote Procedure Call,rpc)
二、网络七层模型
二、简单介绍TCP和UDP
2.1. TCP协议
TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。在OSI模型中,处于传输层。
TCP首部格式
- 面向连接
面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。 - 点对点通信
每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。 - 面向字节流
TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。需要考虑粘包问题。 - 可靠传输
对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。 - 提供拥塞控制
当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞
2.2. UDP协议
UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,处于传输层。
- 无需建立连接
发送端发送数据前不需要像TCP那样建立连接。具体来说就是,如果使用UDP协议进行通信,应用层会将数据传到传输层,传输层给数据加上UDP的头部标识后,直接传递到网络层,再经链路层、物理层通过网络传给接受方。
接受端网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作 - 有单播,多播,广播的功能
- 面向报文
发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文,这个大小后面我们再细说。 - 不可靠性
首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。 并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。 - 头部开销小,传输数据报文时是很高效的。
三、TCP和UDP对比
文章参考于<零声教育>的C/C++linux服务期高级架构
TCP和UDP协议详解相关推荐
- java udp 协议_网络协议 - UDP 协议详解
¶ 网络协议 - UDP 协议详解 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解.@pdai ¶ UDP概述 UDP(User Datagram Protocol)即用户数据报协 ...
- UDP协议详解(UDP协议特点,UDP协议格式、UDP的应用)
目录 前言 1.UDP协议的特点 2. UDP协议格式的特点 3. UDP的应用 前言 TCP和UDP协议都是传输层的协议,其中传输层是负责端对端之间的连接,端是指端点. 端口的划分和知名端口 0~1 ...
- 网络基础 ------- UDP、TCP及IP协议详解
目录 UDP协议 1.UDP报文结构 报文长度 校验和 TCP协议 1.TCP报文结构 2.TCP的可靠传输机制 1.确认应答 2.超时重传 3.连接管理 4.滑动窗口 5.流量控制 6.拥塞控制 7 ...
- TCP协议与UDP协议详解
TCP协议 TCP,即Transmission Control Protocol,传输控制协议.人如其名,要对数据的传输进行一个详细的控制. TCP协议的特点:有连接,可靠传输,面向字节流,全双工 有 ...
- 传输层 - TCP / UDP 协议详解
我是目录: 1.UDP协议: 2.TCP协议: (1)TCP协议段格式: (2)确认应答(ACK)机制 (3)超时重传机制: (4)连接管理机制(三次握手.四次挥手) (5)滑动窗口: (6)流量控制 ...
- 网络通信协议八之UDP协议详解
视频传输中使用UDP协议比较多 UDP协议的责任 >>创建进程到进程间的通信(由端口号完成) >>有限的差错控制,出现差错悄悄丢弃报文(注意这点和TCP协议的区别) 转载于:h ...
- TCP/IP网络协议详解
一. 计算机网络体系结构分层 一图看完本文 计算机网络体系结构分层 计算机网络体系结构分层 Frame: 物理层的数据帧概况 Ethernet II: 数据链路层以太网帧头部信息 Internet ...
- IP、TCP、UDP首部详解
IP首部 IP首部字段图 IP首部字段详情 4位版本: 协议版本号,IPv4是0100,IPv6是0110,目前基本都是IPv4版本. 4位首部长度: 指首部占32bit字的数目,包括选项区,也就是说 ...
- TCP 滑动窗口协议 详解
滑动窗口机制 (1).窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口:同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口. ...
最新文章
- centos6上以二进制方式安装mariadb5.5
- js滚动页面到固定位置进行操作
- 小教活动总结-VB即时通讯小程序
- 从0搭建一个Springboot+vue前后端分离项目(一)安装工具,创建项目
- php2612,达人曝光LGLSNJ2612AR质量好吗?怎么样呢?体验报告揭秘
- Springboot(十):邮件服务
- Qt第五课 无构造函数可以接受源类型,或构造函数重载决策不明确
- 八皇后问题(回溯法)
- 荣耀Play3新版曝光:麒麟710A加持 其他配置不变
- local.china java_java-JDBC无法登录到LocalDB实例,但是在SSMS中,...
- kafka的全面知识点
- 【基础入门题031】三色球问题
- Ubuntu U盘权限只读的解决方案
- sql server为什么建表时在表名前加''[dbo]''
- 计算机组成与系统结构2018,计算机组成原理与系统结构2018-2019试卷a.doc
- 综合布线方案设计模版
- 计算机中的位,字节,字,字长的概念
- c语言压力变送器程序设计,基于单片机的压力变送器设计
- vue props默认值大坑
- 预处理对象executeQuery方法,对数据库进行有条件和无条件的查询