引言

假设,进程A要和进程B要通信,首先要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。那么网络中不同机器的不同进程之间如何通信?

其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用一个三元组(ip地址,协议,端口)就可以标识网络中的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

一、本地进程间通信方式

本地的进程间通信(IPC)有很多种方式,总结如下:

  • 消息传递(管道、FIFO、消息队列)
  • 同步(互斥量、条件变量、读写锁、信号量等)
  • 共享内存
  • 远程过程调用(Remote Procedure Call,rpc)

二、网络七层模型

二、简单介绍TCP和UDP

2.1. TCP协议

TCP协议是一种面向连接的可靠的基于字节流的传输层通信协议。在OSI模型中,处于传输层。

TCP首部格式

  1. 面向连接
    面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。
  2. 点对点通信
    每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。
  3. 面向字节流
    TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。需要考虑粘包问题。
  4. 可靠传输
    对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
  5. 提供拥塞控制
    当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞

2.2. UDP协议

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,处于传输层。

  1. 无需建立连接
    发送端发送数据前不需要像TCP那样建立连接。具体来说就是,如果使用UDP协议进行通信,应用层会将数据传到传输层,传输层给数据加上UDP的头部标识后,直接传递到网络层,再经链路层、物理层通过网络传给接受方。
    接受端网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作
  2. 有单播,多播,广播的功能
  3. 面向报文
    发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文,这个大小后面我们再细说。
  4. 不可靠性
    首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。 并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。
  5. 头部开销小,传输数据报文时是很高效的

三、TCP和UDP对比

文章参考于<零声教育>的C/C++linux服务期高级架构

TCP和UDP协议详解相关推荐

  1. java udp 协议_网络协议 - UDP 协议详解

    ¶ 网络协议 - UDP 协议详解 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解.@pdai ¶ UDP概述 UDP(User Datagram Protocol)即用户数据报协 ...

  2. UDP协议详解(UDP协议特点,UDP协议格式、UDP的应用)

    目录 前言 1.UDP协议的特点 2. UDP协议格式的特点 3. UDP的应用 前言 TCP和UDP协议都是传输层的协议,其中传输层是负责端对端之间的连接,端是指端点. 端口的划分和知名端口 0~1 ...

  3. 网络基础 ------- UDP、TCP及IP协议详解

    目录 UDP协议 1.UDP报文结构 报文长度 校验和 TCP协议 1.TCP报文结构 2.TCP的可靠传输机制 1.确认应答 2.超时重传 3.连接管理 4.滑动窗口 5.流量控制 6.拥塞控制 7 ...

  4. TCP协议与UDP协议详解

    TCP协议 TCP,即Transmission Control Protocol,传输控制协议.人如其名,要对数据的传输进行一个详细的控制. TCP协议的特点:有连接,可靠传输,面向字节流,全双工 有 ...

  5. 传输层 - TCP / UDP 协议详解

    我是目录: 1.UDP协议: 2.TCP协议: (1)TCP协议段格式: (2)确认应答(ACK)机制 (3)超时重传机制: (4)连接管理机制(三次握手.四次挥手) (5)滑动窗口: (6)流量控制 ...

  6. 网络通信协议八之UDP协议详解

    视频传输中使用UDP协议比较多 UDP协议的责任 >>创建进程到进程间的通信(由端口号完成) >>有限的差错控制,出现差错悄悄丢弃报文(注意这点和TCP协议的区别) 转载于:h ...

  7. TCP/IP网络协议详解

    一. 计算机网络体系结构分层 一图看完本文 计算机网络体系结构分层 计算机网络体系结构分层 Frame:   物理层的数据帧概况 Ethernet II: 数据链路层以太网帧头部信息 Internet ...

  8. IP、TCP、UDP首部详解

    IP首部 IP首部字段图 IP首部字段详情 4位版本: 协议版本号,IPv4是0100,IPv6是0110,目前基本都是IPv4版本. 4位首部长度: 指首部占32bit字的数目,包括选项区,也就是说 ...

  9. TCP 滑动窗口协议 详解

    滑动窗口机制 (1).窗口机制     滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口:同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口. ...

最新文章

  1. centos6上以二进制方式安装mariadb5.5
  2. js滚动页面到固定位置进行操作
  3. 小教活动总结-VB即时通讯小程序
  4. 从0搭建一个Springboot+vue前后端分离项目(一)安装工具,创建项目
  5. php2612,达人曝光LGLSNJ2612AR质量好吗?怎么样呢?体验报告揭秘
  6. Springboot(十):邮件服务
  7. Qt第五课 无构造函数可以接受源类型,或构造函数重载决策不明确
  8. 八皇后问题(回溯法)
  9. 荣耀Play3新版曝光:麒麟710A加持 其他配置不变
  10. local.china java_java-JDBC无法登录到LocalDB实例,但是在SSMS中,...
  11. kafka的全面知识点
  12. 【基础入门题031】三色球问题
  13. Ubuntu U盘权限只读的解决方案
  14. sql server为什么建表时在表名前加''[dbo]''
  15. 计算机组成与系统结构2018,计算机组成原理与系统结构2018-2019试卷a.doc
  16. 综合布线方案设计模版
  17. 计算机中的位,字节,字,字长的概念
  18. c语言压力变送器程序设计,基于单片机的压力变送器设计
  19. vue props默认值大坑
  20. 预处理对象executeQuery方法,对数据库进行有条件和无条件的查询

热门文章

  1. 轴线图层设置_定位轴线图层怎么设计
  2. JAVA 8日期处理
  3. java单例模式之懒汉式与饿汉式
  4. python psycopg2使用_python3环境安装psycopg2报错
  5. kvm虚拟机调节内存
  6. 计算机开机没反应怎么办,细说电脑开机没反应怎么办
  7. 蓝桥杯每日一练——礼物 python
  8. esxi直通 gen8_第三篇:虚拟化层 - MicroServer Gen8 + ESXi Server 6.5u3 部署踩坑记
  9. awk分析web日志
  10. 锤子---坚果智能手机发布观感