TCP/UDP(或TCP/IP)保留的传输层端口号范围是 1 ~ 65535。公认端口:1 ~ 1023 。动态端口:1024 ~ 65535。
面向连接: 优点:可靠丢包少(因为有专属通道)。 缺点:复杂(每次都要进行三步操作:建立连接、使用连接、释放连接。其实就是建立通信线路),耗资源,利用率低 (建立专属通道)
无面向连接: 优点:开销小(不需要连接),迅速灵活。 缺点:易丢包。
TCP是面向连接形式的可靠服务,字节流形式传输。 TCP是建立在无连接的IP基础上
① 可靠的传输服务。 ② 面向连接。 ③ 有序。 ④ 全双工通信。 ⑤ 缓冲累积传送(缓冲区)。 ⑥ 可变滑动窗口 (窗口:调流控流的工作)。
TCP报文包含在IP数据报中进行传送。
TCP和IP是配合工作的,所以有些参数可直接传送给IP层处理,TCP头和IP头合在一起使用。
1.序号:用序号对乱序的数据包进行重组变成有序的数据包,从无序变有序。 2.补包:再把数据包进行排序,纠错检错的功能,确认有没有收到包,若没有收到,让发送者再发送一次。 3.窗口:利用窗口控制数据流量的传输。
TCP传输头格式.png
各占 16 位。 源端口:说明源服务访问点。 目标端口:表示目标服务访问点。
各占 32 位。 序号范围:[0 , 2^32-1] 。
4位。 表示tcp头部有多少个32bit字(4字节),因为4位最大值是15个32bit,所以最多有480bit,也就是60个字节是最大的tcp头部长度。
占 6 位。
确认号,只要确认连接,他就会返回一个ACK,初始值为1。若ACK为9那个9-1之前的已经接收。 携带ack标志的报文段也称确认报文段。
接收方收到报文,向上级发送。 提示接收端应用程序应该立即从tcp接受缓冲区中读走数据,为后续接收的数据让出空间
复位,重新建立连接。 表示要求对方重建连接。带RST标志的tcp报文段也叫复位报文段
同步位,建立连接。 表示建立一个连接,携带SYN的tcp报文段为同步报文段
释放连接。 表示告知对方本端要关闭连接了。 携带FIN的tcp报文段为连接释放报文段。
紧急指针是否有效。
16位。控制字节流大小。
16位。 校验包含TCP头部 和 TCP数据部分,比如利用CRC校验。
与顺序字段进行相加,表示紧急数据最后一个字节
TCP三次握手.png
第 1 次:A > B 发送请求,B知道A要建立连接。SYN 第 2 次:B < A 发送应答,让A知道B收到连接请求了。SYN、ACK 第 3 次:A > B 发送应答,让B知道A收到了回应。ACN
TCP4次挥手1.png
第 1 次:A > B 发送连接释放报文,停止发送数据。FIN 第 2 次:B < A 发送确认报文,表示收到释放报文。ACK 第 3 次:B < A 发送连接释放报文,此报文在最终数据传送完成时发送。FIN 第 4 次:A > B 发送确认报文,最后完成连接的释放。ACK
目的:缓解互联网通信紧张状况,报文到达速率大于路由节点转发速率 。记住解决方案。
TCP拥塞控制2.png
UDP:无面向连接(也就是没有专属通道),优点:开销小(不需要连接),迅速灵活。缺点:易丢包。
UDP头.png
提供无连接的传输服务,不可靠,甚至可以对用户数据不进行校验(当UDP校验和字段为0)。
源端口、目标端口、段长、校验和 16位。 数据(不是16位的倍数需加填充位。)
UDP计算校验和的方法和计算IP数据报首部校验和的方法相似。 但不同的是:IP数据报的校验和:只检验IP数据报的首部, 但UDP的校验和:将首部 和 数据部分一起都检验。