其他分享
首页 > 其他分享> > 关于网络个人笔记3--TCP

关于网络个人笔记3--TCP

作者:互联网

笔记----就是用来日后再次学习+查看的

TCP

  1. tcp设计原则

网络数据传输,在保证安全的前提下,尽可能的提高传输效率

  1. 安全越高,效率越低
    安全越低,效率越高-------->UDP效率比TCP更高

ACK:确认号是否有效
SYN:请求建立连接,把携带SYN标识的称为同步报文段
FIN:通知对方,本端要关闭了.称携带FIN表示的结束报文段

  1. TCP的安全机制

(1)确认应答机制
(2)超时重传机制
(3)连接管理机制

  1. 三次握手的流程
    在这里插入图片描述
    在这里插入图片描述

为什么是三次?
第二次服务端返回SYN和ACK,是可以合并的(只是标志位设置就行)

  1. 四次挥手的流程(关闭连接)
    在这里插入图片描述

解释上图中四次挥手流程(右边):
CLOSE_WAIT :系统内核对tcp协议实现的方式:接收到客户端FIN后,自动返回ACK
LAST_ACK :程序手动调回close方法关闭连接

CLOSE_WAIT :
一般而言,对于服务器上出现大量的 CLOSE_WAIT 状态, 原因就是服务器没有正确的关闭 socket, 导致四次挥手没有正确完成.
这是一个 BUG. 只需要加上对应的 close 即可解决问题


(1)第三步,客户端没有直接设置为CLOSED关闭连接?
第四步的ACK可能丢包,所以要等待一下(超时重传时间)
(2)为什么第二步和第三步,没有像建立连接时,合并数据包
第二步是系统对TCP协议实现时,接收FIN,自动返回ACK,不用执行程序代码
第三步是程序手动调用执行(服务端关闭连接前,需要执行一些前置工作)


  1. TCP提高效率的机制

客户端和服务端都存在接收缓冲区和发送缓冲区(每一端都有2个缓冲区)
发送缓冲区,记录了发送数据的序号,和接收ack应答的序号
接收缓冲区,记录了接收数据的序号,应答ack的序号

  1. TCP安全,可靠性机制
  1. 黏包问题
    问题:应用层的数据包

如何避免粘包问题? 明确两个包之间的边界
类似在线编程题,多组测试用例时,输入和输出,每一组用例的输入和另一组用例输入,要分隔开

TCP是基于字节流的,多条数据报在缓冲区.UDP是一次发,一次读,不存在粘包问题

TCP小结

  1. TCP的特性/机制:
  1. 基于TCP的应用层协议:HTTP HTTPS

TCP和UDP区别

没有哪个更好,只有在某个具体的业务场景中,选择更适合使用的
如果要满足安全可靠(包括次序),就可以使用TCP, 反之,可以使用UDP

(1)效率看,UDP更优.(不用等待ACK应答)
(2)UDP是无连接,不可靠的. 反之,TCP有连接,可靠的传输
(3)UDP是面向数据报,只能一次发送和一次接收.TCP是面向字节留的,可以多次收发
(4)UDP具有接收缓冲区,没有发送缓冲区,TCP则都有
(5)UDP 大小受限,TCP不限制
(6)TCP以确认应答、超时重发、连接管理、流量控住、拥塞控制等五个机制保证安全可靠传输

标签:UDP,窗口,--,应答,笔记,ACK,拥塞,TCP
来源: https://blog.csdn.net/LX__dream/article/details/120868262