TCP与UDP一样,都属于运输层协议,下面我们来研究一下TCP协议。
一、TCP协议的特点:
1、面向连接;
2、每条TCP连接只有两个端点,即点对点的;
3、提供可靠有序的交付服务;
4、提供全双工通信(即通信双方既是发送方也是接收方)。TCP两端都设有发送缓存和接受缓存;
5、面向字节流。TCP中的流指得是流入到进程或从进程流出的字节序列,“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。TCP不保证接受方与发送方的数据块具有对应大小(如:发送方应用程序交给发送方TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付给上层应用程序)。当然,发送方发出的字节流和接收方收到字节流必须一样。
二、每条TCP连接都有两个端点,那么这个端点是什么?
不是主机,也不是IP地址,也不是端口号,是套接字(Socket)。套接字即:IP地址:端口号。若主机的IP地址为192.3.4.5,端口号为80,那么得到的套接字就是(192.3.4.5:80)。每条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
三、一个TCP报文段分为首部和数据两部分。
TCP报文段首部格式:
四、TCP运输连接管理
1、建立连接——三次握手
这里有个问题——为什么TCP采用三次握手,而不是一次、两次、四次…,个人觉得下面这篇博客讲的还不错,
https://blog.youkuaiyun.com/voidreturn/article/details/78736800
2、释放连接——四次挥手
你懂了吗??????