TCP协议的学习 (一)TCP服务特点

TCP协议靠近应用层
TCP的服务特点
1.面向连接
双方必须先建立连接才能进行数据的读写,双方都必须为该链接分配必要的内核资源,以管理连接的状态和连接上的传输
TCP连接是全双工的,双方数据传输可以通过一个连接进行,完成数据交换后,双方必须断开连接,以释放系统资源,这种连接是一对一的,不适用于广播和多播的应用程序,基于多播和广播的应用程序适合使用UDP协议。
2.基于字节流
这里写图片描述
TCP字节流服务
(1)字节流:
发送端执行多次写操作时,TCP模块必须先把这些数据放入TCP发送缓冲区中,当TCP模块真正发送数据时,才把TCP发送缓冲区等待发送的数据封装成一个或多个TCP报文段发出
—TCP模块发出的报文的个数与应用程序的写操作的次数没有固定的数量关系
接收端收到报文段后,TCP模块必须把它们携带的应用数量按照TCP报文段的序号依次放入TCP接收缓冲区中,同时通知应用程序读取数据,接收端应用程序可以一次或多次读取数据(取决于用户指定的应用程序读缓冲区大小)
—应用程序执行读操作的次数和TCP模块接收到的TCP报文的个数没有固定的数量关系
*发送端执行的写操作次数与接收端执行的读操作次数没有数量关系
*应用程序对数据的发送和接收没有边界限定的,这也是字节流的概念
(2)数据报:
这里写图片描述
UDP数据报服务
UDP发送应用端程序执行一次写操作,UDP模块把它封装成一个UDP数据报并发送
接收端针对每一个数据报执行读操作,否则就会发生丢包,并且用户没有指定足够的应用程序缓冲区来读取数据报,则UDP数据报就会被截断
**通过以上可以理解:
字节流和数据报区别:通讯双方是否执行相同次数的读写操作
3.可靠传输
支撑TCP传输的可靠机制:
TCP采用发送应答机制。TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功
超时重传。发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段
TCP报文段最终是以IP数据报发送的。IP数据报到达接收端可能乱序重复,TCP协议对接收到的TCP报文段重排整理后再交给应用程序
**UDP数据报提供的是不可靠的服务,它们都需要上层协议处理数据的确认和超时重传

猜你喜欢

转载自blog.csdn.net/qq_34501940/article/details/51067309