传输层协议主要有两个:TCP协议和UDP协议。

TCP协议相对于UDP协议的特点是:面向连接、字节流和可靠传输。

使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开链接以释放系统资源。

TCP协议的这种连接是1v1的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务。而无连接协议UDP则非常适合广播和多播。

字节流服务和数据流服务的区别对应到实际编程中,则体现为通信双方是否应该必须执行相同次数的读写操作。

当发送端应用程序连续执行多次写操作时,TCP模块先将这些数据放入TCP发送缓冲中。当TCP模块真正开始发送数据时,发送缓冲区中这些等待发送的数据可能被封装成一个或多个TCP报文段发出。因此TCP模块发送出的TCP报文段的个数和应用程序执行的写操作次数之间没有固定的数量关系。

当接收端收到一个或多个TCP保温段之后,TCP模块将他们携带的应用数据按照TCP保温段序号以此放入TCP接收缓冲区中,并通知应用程序读取数据。接收端应用程序可以一次性将TCP接受缓冲区的数据全部读出,也可以分多次读取,这取决于用户指定的应用程序读缓冲区的大小。因此,应用程序执行读操作次数和TCP模块接受到的TCP报文段个数之间也没有固定的数量关系。

所以,这就是字节流的概念:发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系。

TCP字节流服务

UDP就不是这样的了。发送端应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报并发送之。接收端必须及时针对每一个UDP数据报执行读操作(通过recvfrom系统调用)。否则就会丢包。并且,如果用户没有指定足够的应用缓冲区来读取UDP数据,则UDP数据将被截断。

UDP数据报服务

TCP传输是可靠的。首先,TCP协议采用发送应答机制,即发送端发送的每个TCP报文段都必须得到接受方的应答,才认为这个TCP报文段传输成功。其次,TCP协议采用超时重传机制,发送端在发送出一个TCP报文段之后启动定时器,如果在定时器时间内未收到应答,它将重发该报文段。最后,因为TCP报文段最终以IP数据报发送,而IP数据报到达接收端可能乱序、重复,所以TCP协议还会对接受到的TCP报文重排、整理,再交付到应用层。

UDP协议则和IP协议一样,提供不可靠服务。它们都需要上层协议来处理数据确认和超时重传。

qi接收启动协议_TCP协议详解 - TCP服务的特点相关推荐

  1. 虚拟路由器冗余协议VRRP原理详解!

    虚拟路由器冗余协议VRRP原理详解! https://virtual.51cto.com/art/201905/596666.htm?pc 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前 ...

  2. 一篇文章带你详解 TCP/IP 协议(下)

    前面的第一二三章已在上篇讲解,还没看过的可以先看看:一篇文章带你详解 TCP/IP 协议(上) 本文继续讲解第四章. 四.网络层中的 IP 协议 IP(IPv4.IPv6)相当于 OSI 参考模型中的 ...

  3. HTTP协议状态码详解(HTTP Status Code)

    HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 ...

  4. HTTP协议状态码详解(HTTP Status Code)(转)

    原文链接:HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为:  200 – 服务器 ...

  5. 详解 TCP/IP 协议

    什么是TCP/IP协议 TCP/IP通信协议是目前最完整.最被广泛支持的通信协议,它可以让不同网络架构.不同操作系统的计算机之间通信,是Internet的标准通信协议. TCP的介绍 TCP也叫传输控 ...

  6. 流媒体协议之RTMP详解

    流媒体协议之RTMP详解 文章目录 流媒体协议之RTMP详解 1 RTMP概述 2 RTMP交互过程 2.1 握手协议 2.2 RTMP分块(chunk) 2.3 协议控制消息(Protocol Co ...

  7. 流媒体协议之RTSP详解

    1 流媒体协议之RTSP详解 文章目录 1 流媒体协议之RTSP详解 1.1 RTSP概述 1.2 RTSP协议交互过程 1.2.1 RTSP基于TCP交互过程 1.2.2 RTSP基于HTTP的交互 ...

  8. 传输协议之ICMP详解

    文章目录 TCP和UDP ICMP 简介 ICMP出现的原因 ICMP的用途 ICMP作为IP的上层协议在工作(报文) ICMP实现之MTU探索 ICMP实现之改变路由 ICMP实现之源点抑制 ICM ...

  9. SSL / TLS 协议运行机制详解

    转载自  SSL / TLS 协议运行机制详解 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想 ...

最新文章

  1. python 最快 因式分解_python中怎么对一个数进行因式分解?
  2. nginx 带宽_Nginx优化配置,轻松应对十万并发
  3. O2O上门实战复盘:10万元如何换来937个订单?
  4. 我的世界java和网易能联机吗_网易我的世界单机怎么转联机
  5. QtWebkit包含的类简介
  6. Symbian中的新手问题整理(二)
  7. 时间格式转换y-m-d
  8. 【P1714】切蛋糕(单调队列)
  9. 开源项目:底部动作条(BottomSheet)
  10. 找回Google Reader丢失的笔记(notes)
  11. IDES SAP SEM 4.0/SAP BW 3.50 笔记本安装手册
  12. Python案例 计算 S=1-3+5-7+9-11+…+n,计算n=100001或n=10000001时的和。
  13. [SDOI2015] 星际战争
  14. 计算机的作业与程序,网络提交的计算机程序作业出现抄袭现象的对策探索
  15. java peek函数_java (String) s.peek()是什么意思?
  16. opencv获取灰度图像的像素值
  17. ACM,IEEE ,Elsevier和Springer旗下期刊
  18. Windows柯尼卡打印机驱动安装
  19. 隐马尔可夫模型(三)——鲍姆-韦尔奇算法(Baum-Welch算法)
  20. meego linux 双系统,如何安装MeeGo和Windows 7双系统

热门文章

  1. 癞子版本十三张自动摆牌算法
  2. Python3.7破解起点字体加密
  3. 移动短信网关接入必须的几个参数
  4. layui的tree如何实现动态加载_layui tree组件如何异步加载数据,动态添加树节点...
  5. android通过修改rom或通过root屏蔽Home键
  6. 大数据相关技术和算法
  7. 支付宝智慧食堂解决方案
  8. redis -- key
  9. php 砸金蛋抽奖,jQuery的砸金蛋抽奖代码
  10. 基于Android家校互动系统 java家校通