什么是TCP?
TCP:是面向连接的、可靠的、基于字节流的传输层通信协议
- 面向连接:一定是一对一的连接(也就是无法做到一对多)
- 不能像UDP协议一样,可以一个主机同时向多个主机发送消息
- 可靠的:无论网络中出现怎样的链路变化,TCP都可以保证一个报文一定能够到达接收端
- 基于字节流:用户消息通过TCP传输协议传输时,消息可能会被操作系统分组成多个的TCP报文,如果接收方的程序不知道消息的边界,是无法读出一个有效的用户消息的。并且TCP报文是
有序的,当前一个TCP报文没有收到的时候,即使它先收到了后面的TCP报文,那么也不能扔给应用层去处理,同时对重复的TCP报文会自动丢弃。
为什么需要TCP协议?TCP协议工作在哪一层?
IP层:是不可靠的,它不保证网络包的交付,不保证网络包的按序交付,也不保证网络包中的数据的完整性
所以,如果需要保障网络数据包的可靠性,就需要由上层(传输层)的TCP协议来负责
因为TCP是一个在传输层的可靠数据传输的服务,它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。
什么是TCP连接?
简单来说就是:用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接
建立一个TCP连接是需要客户端与服务端达成三个信息的共识:
- Socket:由IP地址和端口号组成
- 序列号:用来解决乱序的问题
- 窗口大小:用来做流量控制