TCP和UDP
前言
目前我们比较常用的计算机网络的体系结构为TCP/IP五层网络结构从上而下为应用层,传输层,网络层,数据链路层,物理层,今天介绍的TCP和UDP就是传输层的两种协议,传输层来负责端到端的数据传输,传输层是通过操作系统内核实现的.
一、UDP
首先UDP是传输层的一种协议,先说特点:无连接, 不可靠传输 (不知道数据发送成功与否,和安全没关系),面向数据报(传输的基本单位是数据报,一个数据报由若干个字节组成)
首先我们先了解一下UDP报头的结构:
可以看到UDP报文结构,第一个为源端口号能表示的范围为(0~65535),
第二个为目的端口号,UDP通过二进制把端口号表示出来了,
接下来是UDP的长度,UDP的长度就是整个UDP数据报的长度,用两个字节表示,能表示的数字范围为0 ~ 65535
字节,所以说数据部分的长度应该是65535-8-20(ip报头大小)约等于65507字节,大概就是64Kb的数据,所以说UDP传输的数据大小比较小,
最后一个也是UDP检验和也是两个字节,验证数据准确无误,不能一定能检验出错误
可以看出UDP是一种简单的协议,由于自身的限制(不可靠,传输文件小)等在实际开发使用中并不常见,很多场景都是需要可靠传输,但是UDP也是有优点的,就是(1)传输速率快,(2)能够支持广播
应用场景:对效率要求高,但是对可靠性要求不高等
二、TCP
首先TCP是传输层的协议,特点是有连接,可靠传输,面向字节流
先了解TCP的报文结构
报文结构我们不需要全部了解,掌握重点的就可以了,
32位序号用来确保数据之间的先后顺序,
4位首部长度单位是4个字节,能表示的数据范围是0~15,如果是15,则表示TCP首部长度就是60个字节
TCP的六个标志位,每个标志位是1个bit 后面会介绍重要的几个
TCP的核心机制
2.1确认应答
确认应答机制是确保TCP可靠性的核心机制,
TPC将每一个字节的数据进行了编号,当主机A向主机B发送数据时,主机B回复一个确认收到的响应(ACK),当发送方收到应答数据时,如果应答报文的确认序号为1001,这时候发送方就知道了 1—1000的数据已经顺利抵达,并且接下来发送的数据就是从1001开始,但是可能会发生丢包情况,等待一点时间后,进行重传(超时重传)ÿ